K. Lange
2314a4ee6e
Rudimentary % formatter for strings
2022-06-04 23:27:51 +09:00
K. Lange
0e51103d26
__call__ must be one of these, let's skip the extra jumps and switch...
2022-06-04 20:44:58 +09:00
K. Lange
92c0d09999
Implement dict.__ior__
2022-06-04 20:28:20 +09:00
K. Lange
7d3df0d650
Cache binary operator methods, support inplace variants
2022-06-04 20:25:54 +09:00
K. Lange
ed31f1e314
Try some minor optimizations to function calls
2022-06-04 20:23:44 +09:00
K. Lange
3721ebc97c
shift-and-compare is probably better than mask & compare
2022-06-04 20:20:43 +09:00
K. Lange
248f54a8f2
Pull out attributeUnpack to a separate function because I may want to just get rid of it
2022-06-04 16:06:16 +09:00
K. Lange
cdcfb63f41
New '__options__' psuedo-module with compile-time changes
2022-06-04 15:59:24 +09:00
K. Lange
b2846c13ce
(bench) python fasttimer should check for exceptions
2022-06-04 15:34:47 +09:00
K. Lange
cd25ada161
Less obtuse list.append() benchmark
2022-06-04 12:13:38 +09:00
K. Lange
75e0ec9e54
Fix up some syntax errors
2022-06-04 06:51:34 +09:00
K. Lange
3bfa32ac83
Print ^s for the whole width of a faulting symbol in a syntax error, looks cooler
2022-06-03 21:35:58 +09:00
K. Lange
4fd68ec5d1
Simplify rewinding infix operators
2022-06-03 16:52:48 +09:00
K. Lange
5f3a2b4747
Expose __args__ directly on codeobject
2022-06-03 16:19:36 +09:00
K. Lange
b4349303e9
Add more keywords to the stdlib highlighter
2022-06-03 13:45:12 +09:00
K. Lange
5a79f27b83
Fix incorrect OP_CLOSURE instruction size returned by dis.examine
2022-06-03 13:07:49 +09:00
K. Lange
9c25e200b8
Take the line number from the previously parsed token when build synthetics
2022-06-03 10:44:58 +09:00
K. Lange
bce994318c
(meta) upgrade github codeql workflow
2022-06-02 20:11:34 +09:00
K. Lange
48f9d34a9b
Tests for bound method edge cases
2022-06-02 14:34:40 +09:00
K. Lange
2e7bf54d9a
Bound methods can be bound to non-function callables
2022-06-02 14:34:40 +09:00
K. Lange
55849aa4f0
Fix edgecases around expanded calls to bound callables when no stack space is available
2022-06-02 14:34:40 +09:00
K. Lange
3bc8d72895
Take best-of-ten in most benchmarks, add inner_loop benchmarks
2022-06-02 08:01:55 +09:00
K. Lange
1ee63c15f6
Use a flag to mark classes not subclassable
...
A KrkInstance should always have a valid and correct allocSize
available from its class object, which for non-subclassable classes
like the ones representing stack values should be the size of a
normal instance, so that we can safely treat it as an instance
until it can get garbage collected when it is allocated before
the call to __init__ that replaces it with the right kind of
object (or raises an exception).
2022-05-31 18:41:00 +09:00
K. Lange
098b3168f3
prevent functions, codeobjects from being initialized; methods can be
2022-05-31 18:17:28 +09:00
K. Lange
fa2b2c053b
Merge flags
2022-05-31 17:31:35 +09:00
K. Lange
c785b2580e
kuroko.inspect_value() shows KrkValue byte representation
2022-05-31 16:11:41 +09:00
K. Lange
b3c693eae5
Disallow subclassing of some core types that are not subclasses of Instance
2022-05-31 07:34:19 +09:00
K. Lange
3f0522dd98
Change getsizeof calculations; stack-only values have 0 size
2022-05-31 07:34:00 +09:00
K. Lange
2437e73c82
Bad malloc size in putenv?
2022-05-31 07:02:21 +09:00
K. Lange
f16083a1a6
Pack object type/flags/hash better
...
This is much a more major ABI break than the other things I've
been doing, but also a much bigger win.
2022-05-31 06:55:54 +09:00
K. Lange
bbfe948b86
Lambda should be able to accept *args and **kwargs
2022-05-30 17:46:24 +09:00
K. Lange
65f7ae3f22
Simplify cached method things; don't expose the enum in headers
2022-05-30 13:47:27 +09:00
K. Lange
a41410dcd9
Stick 'subclasses' before method cache
...
While were in here breaking ABIs, this makes a lot more sense.
2022-05-30 08:56:56 +09:00
K. Lange
bbf378efe2
Reorder arguments to callNativeOnStack for better fallthrough to native call
2022-05-29 20:00:41 +09:00
K. Lange
d18b08ea46
Native function args should be const
2022-05-29 18:39:46 +09:00
K. Lange
8ade3af008
Support dir() with no arguments; returns globals only
2022-05-28 17:56:53 +09:00
K. Lange
ae10f81387
Start calling this 1.3
2022-05-28 17:33:35 +09:00
K. Lange
285f7cd496
Fix up path search ordering to be more like CPython; implement __main__.krk
2022-05-28 17:31:43 +09:00
K. Lange
a4e2b5c881
Relative imports
2022-05-28 15:41:47 +09:00
K. Lange
3645047051
Same for None
2022-05-28 11:45:38 +09:00
K. Lange
f14ca90792
Avoid NotImplemented.__hash__ resolving to object.__hash__ and segfaulting
2022-05-28 11:38:59 +09:00
K. Lange
81e3bb33a0
Defer freeing pre-grown stacks when using them in native calls
...
If the stack needs to grow during a native function call that has
taken a pointer into the stack as an argument, defer freeing this
copy of the stack until the outermost such call returns. The new
stack will always point to new memory, as we can not call realloc
in this case, and if repeated nested native function calls result
in multiple stack growths then several copies of the stack may
persistent in memory simultaneously, but we do not need to trouble
native function implementations with the possibility that their
arguments may become invalid, and we do not need to produce copies
of the stack when calling them.
This resolves a long-standing issue with resizable stacks where
native function calls always entailed a memcpy() penalty, and calls
with many arguments also had malloc()/free() overhead for heap
allocated stack copies.
With this change, performance improves, as the wrapper checks around
stack growth are uncommon, so their overall cost is less than the
repeated moving of arguments around for native function calls.
2022-05-27 21:57:17 +09:00
K. Lange
1f6afa7369
Add new CLOSE_MANY and POP_MANY instructions
2022-05-27 18:37:37 +09:00
K. Lange
7dff49ccb7
Fix incorrect hashing of classes in fallback added for subclass tracking
2022-05-27 18:37:37 +09:00
K. Lange
aa6781609e
Fix bad encoding of large upvalue indexes
2022-05-27 18:37:37 +09:00
K. Lange
32b3af58cc
Unset class bases when doing final free so we don't access potentially-freed subclass tables
2022-05-27 00:15:55 +09:00
K. Lange
1ac8f296b2
Invalidate caches of subclass method pointers when they change in a superclass
2022-05-27 00:05:27 +09:00
K. Lange
1c5fc954ed
Update copyright years, it's been 2022 for a while now
2022-05-26 20:46:06 +09:00
K. Lange
3601411f54
Support step value in range()
2022-05-26 20:41:39 +09:00
K. Lange
1acd0243e4
Workaround horrible thread-local performance on macOS (aarch64)
2022-05-24 21:01:42 +09:00