Commit Graph

139 Commits

Author SHA1 Message Date
K. Lange
d0ea1278a6 ... and update test 2021-03-21 11:31:07 +09:00
K. Lange
1a569e36f6 README changed, update the test 2021-03-20 16:09:48 +09:00
K. Lange
cb809dd0fe 'yield' as an expression with a value; 'yield from' 2021-03-20 12:07:46 +09:00
K. Lange
2d3e7ca3d3 Fix bad pop on bare except-finally 2021-03-19 11:39:49 +09:00
K. Lange
46dada92fc Support multiple context managers in a 'with' statement 2021-03-18 21:25:19 +09:00
K. Lange
ee731257dd Support calling exit handlers for with: statements on exception 2021-03-18 20:41:11 +09:00
K. Lange
8aed1368ea Implement 'finally' 2021-03-18 19:52:30 +09:00
K. Lange
6c29be4dcf Fix up multiple assignment targets so we have some hope of nesting 2021-03-16 19:28:00 +09:00
K Lange
708ba0a481 Fix up some weird stuff with parens 2021-03-13 23:37:09 +09:00
K. Lange
b09f7b1131 Multiple arbitrary assignment 2021-03-13 20:17:45 +09:00
K Lange
9ea28e77f1 Add class and module member annotations 2021-03-13 14:22:32 +09:00
K Lange
49ee777c50 Type annotations. 2021-03-11 20:44:39 +09:00
K Lange
f655ca7f61 Fix up function, object repring and add __qualname__ to functions 2021-03-11 19:05:21 +09:00
K. Lange
6b3f8de63b Implement general __get__/__set__ descriptors
property objects are no longer a special case and have been simplified
old-style native properties can probably all be removed as well, but, todo
2021-03-10 20:24:12 +09:00
K. Lange
c9aa17e119 Rename __get__, __set__ to match Python's __getitem__, __setitem__ and make room for future addition of descriptors 2021-03-10 14:24:22 +09:00
K. Lange
05f7d9537a Add tests related to recent class method changes 2021-03-09 23:00:47 +09:00
K. Lange
84b7a37fab Remove the distinction between a class's 'fields' and 'methods' and implement actual method resolution 2021-03-09 22:35:40 +09:00
K. Lange
5dfbf8ec17 Various cleanups 2021-03-08 16:36:12 +09:00
K. Lange
1809ebf99e Okay quite a bit was wrong with that, but now it's right 2021-03-06 18:00:14 +09:00
K. Lange
35b4032de3 Support chained 'for's in generator expressions 2021-03-06 15:32:30 +09:00
K. Lange
0f6b74ff5b Generator expressions as direct function arguments 2021-03-06 11:19:34 +09:00
K. Lange
e97e42afc9 Replace tuple comprehensions with generator expressions 2021-03-06 11:13:49 +09:00
K. Lange
7aa4d3ce99 yield keyword; generator functions 2021-03-04 18:09:07 +09:00
K. Lange
4b7cf2ec27 Fix operator precedence for unary 'not' 2021-03-01 14:56:40 +09:00
K. Lange
a65f2dcf81 Add 'assert' statement 2021-03-01 11:55:51 +09:00
K. Lange
00fce076fe Add __qualname__ to classes 2021-02-25 10:03:52 +09:00
K. Lange
bc856ac063 Ongoing documentation improvements 2021-02-25 08:50:37 +09:00
K Lange
8e1f5f0565 repr classes as <class 'module.Class'> like Python
- We were using "<type ...>" like Python2 does for built-ins?
  But even Python 2 called user classes "<class ...>" - Python 3
  calls both built-ins and user classes "class".
- Check if there's a __module__ name and use that as well, now
  we look even more like Python!
2021-02-24 22:50:51 +09:00
K. Lange
6fee62f341 Fix parsing of nested ternary 2021-02-22 13:51:45 +09:00
K Lange
379e1846a9 Stringify floats with more digits 2021-02-20 21:48:47 +09:00
K. Lange
c5b04d55b1 Natively support @classmethod since we intentionally broke using @property for it 2021-02-20 16:04:26 +09:00
K. Lange
9bbb0a1d6e Overhaul exceptions with tracebacks; 'except Type...' 2021-02-18 11:04:59 +09:00
K. Lange
649b452714 That changes some test results intentionally 2021-02-18 08:45:07 +09:00
K. Lange
34e7eb4e57 Embed os, dir, time, fileio modules in core; only 'math' is still a separate shared library 2021-02-15 16:27:50 +09:00
K. Lange
4a9e3981fc Add object.__hash__() 2021-02-14 15:04:09 +09:00
K. Lange
e0adfcdc80 Remove str-nonstr concatenation / implicit coercion 2021-02-14 08:25:53 +09:00
K. Lange
6b6597d57d Add experimental bytecode marshal tool 2021-02-12 15:53:47 +09:00
K. Lange
a3b577e239 Add one actual and three skipped thread tests to the test suite 2021-02-11 15:31:37 +09:00
K Lange
8b53ac09b7 Our tuple packing is pretty slow, but some shifts and ors are pretty good 2021-02-11 05:27:06 +09:00
K. Lange
4233234406 Quick little demo of threads fighting over a dict (and still working) 2021-02-10 19:06:25 +09:00
K. Lange
09ce6c46a9 Wrap table accesses in locks, should be good for dicts, field assignments? 2021-02-10 18:19:10 +09:00
K. Lange
43d1e86a2a Wrap some things in readers-writer locks and now more stuff doesn't break 2021-02-10 10:20:56 +09:00
K. Lange
345b021936 Eliminate forced uses of GC pausing and fix up some more thread stuff; still need locks on collections 2021-02-09 23:13:45 +09:00
K. Lange
6f95124bcd Threading
Don't be deceived by its size: this commit is mostly a bunch of
sed replacements to move thread state out of "vm" and introduce
a thread-local "KrkThreadState" object to hold stack pointers and
call frames for individual threads.

Threading support is incomplete and there's almost definitely a
bunch of really easy ways to break everything just by allocating
objects, but really simple stuff like carefully modifying a
a list of ints should work okay.

The README has been rewritten to remove code samples, which have
moved to the Wiki (as has the section on integrating with C).

Some other stuff has also moved around because the threading changes
necessitated a major API break anyway, so I also took the time to
fix some ABI issues.
2021-02-09 18:51:09 +09:00
K. Lange
d550c1be6b I need to get rid of this README-reading test... 2021-02-08 17:38:11 +09:00
K. Lange
f5d9a6b806 sets do not have stable ordering, so stop trying to print them in tests 2021-02-08 09:36:30 +09:00
K. Lange
e7a8d0b8e5 Attach code object for class to the resulting class object 2021-02-05 20:34:18 +09:00
K. Lange
f4216ed3a1 Implement set literals, comprehensions 2021-02-05 20:23:28 +09:00
K. Lange
19e5beba05 Implement class decorators and move class definitions into pseudo-functions 2021-02-05 19:54:46 +09:00
K. Lange
689cee075e C-ify set(), mostly the same as it was originally written 2021-02-05 16:09:29 +09:00