Currently there's only so much to tell about my progress. I fixed a lot of
errors and progressed quite a bit at the unpacking task. The problems
regarding AST generator and handler are solved. There's still an
error when trying to run PyPy though. Debugging and looking for
errors is quite a tricky undertaking because there are many ways to
check whats wrong. What I already did though is checking and
reviewing the whole code for this task, and it is as good as ready as
soon as that (hopefully) last error is fixed. This is probably done
by comparing the bytecode instructions of cpython and pypy, but I
still need a bit more info.
As a short description of what I implemented: until now the order of
parameters allowed in function calls was predefined. The order was:
positional args, keyword args, * unpack, ** unpack. The reason for
this was simplicity, because people unfamiliar with this concept
might get confused otherwise. Now everything is allowed, breaking the
last thought about confusions (as described in PEP 448). So what I
had to do was checking parameters for unpackings manually, first
going through positional and then keyword arguments. Of course some
sort of priority has to stay intact, so it is defined that
"positional arguments precede keyword arguments and * unpacking; *
unpacking precedes ** unpacking" (PEP 448).
Pretty much all changes needed for this task are implemented, there's only one more fix and a
(not that important compared to the others) bytecode instruction (map
unpack with call) to be done.
As soon as it works, I will write the next entry in this blog. Also, next in the line is already asyncio coroutines with async and await syntax.
Short Update (25.06.): Because of the changes I had to do in PyPy, pretty much all tests failed for some time as function calls haven't been handled properly. I managed to reduce the number of failing tests by about 1/3 by fixing a lot of errors, so there's missing just a bit for the whole thing to work again.
Update 2 (26.06.): And the errors are all fixed! As soon as all opcodes are implemented (that's gonna be soon), I will write the promised next blog entry.
No comments:
Post a Comment