4,157 karma · joined August 26, 2016
The handlers themselves are pretty basic, an "except SomeError" pretty much translates to "if isinstance(exc, SomeError):".
Typed code may be slower and more cumbersome (to some) to write in the first place, but is usually much easier to maintain in my experience.
Pretty much the first thing the Zope folks made was port Java interfaces to Python.
Considering that Zope projects were both relatively early and big in Python's life time, that might answer your question. (Plus, projects not using anything like it usually either have very large test suites, or are broken more frequently than working).
1) reasonably easy to use 2) very fast 3) very correct
Most build systems fail 3), usually 2) and often also 1).
Look at how a modern build system (like qbs) organizes the build. It builds a declarative object graph describing the project and maps that to a dependency graph where each node can be a relatively complex object ("compile C++ file X using flags Y" or "link LargeSetOfFiles") annotated with modification data (like input file hashes). (Then it compares the dependency graph to what is found on the system and creates a list of commands to execute in order to bring whatever is on the system to the desired state, i.e. create an up to date build).
I recommend you read this article: https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation
Why do you expect that? Many DBMS operations that are not I/O limited are memory limited, and a GPU does not help you there (on the contrary, you get another bottleneck in data transfers to the small GPU memory). What can help is better data organization, e.g. transposed (columnar) storage.
Non-x86 systems went over 5 GHz on air many years ago, e.g. IBM POWER.
(0.024 l/100 km, 0.019 l/100 km)
(0.24 - 0.4 l/100 km)