5,015 karma · joined June 8, 2017
There's also stuff like lorca which shells out to an installed Chromium browser.
But AFAICT, elliptic curve groups really are the best known groups where DH is hard. The "Why curves win" section talks about it terms of key size, but the reason other groups require larger keys is they have some kind of structure which can be exploited to attack the "hard" direction (eg. in a finite field, the ability to factor over primes can be used to solve discrete logs), so the group size has to go up to compensate.
Programmers wringing their hands over the meaning of f(x)=O(g(x)) never seem to have manipulated any expression more complex than f(x)=O(g(x)).
934 = CISTERCIAN STAFF +
COMBINING CISTERCIAN 900 +
COMBINING CISTERCIAN 30 +
COMBINING CISTERCIAN 4
Would require allocating (1 staff) + (9 digits) * (4 places) = 37 code points.Were you thinking
934 = CISTERCIAN 900 +
ZWJ +
CISTERCIAN 30 +
ZWJ +
CISTERCIAN 4
?Otherwise, yeah, a normal emulator JIT basically points a recompiler at each jump target encountered at runtime, which avoids the static analysis problem. AFAIK translating small basic blocks and not the largest reachable set is actually desirable since you want frequent "stopping points" to support pausing, evaluating interrupts, save states, that kind of stuff, which you'd normally lose with a static recompiler.
Search is limited to 20 attributes and non-descriptors only to avoid arbitrary code execution.
I assume constructing AttributeErrors isn't highly performance sensitive.
f = open('foo.txt', 'w')
is even more succinct, and the exception thrown on failure will not only contain the reason, but the filename and the whole backtrace to the line where the error occurred.(Also I am highly skeptical of the importance of these generation loss tests.)