-
Notifications
You must be signed in to change notification settings - Fork 2
Experimental Python JIT compiler
License
fuzziqersoftware/nemesys
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
nemesys is a just-in-time (JIT) compiler for the Python programming language. This project is what happens when someone who has never written a compiler or taken a computer languages or compilers class writes a compiler. The goals of this project are fun and learning, not necessarily to contribute anything of value to the world. If you're a student looking for an example of well-designed compiler, this is not such an example. See notes/design.md for specifics on how the compiler is implemented and its various behavioral quirks. Here's what nemesys does: - Function calls and control flow statements like if, for, while, etc. - Fast integer math. - Floating-point math. - Strings, lists, and tuples. - Classes and basic inheritance (no multiple inheritance yet). - Refcounted garbage collection. - Custom class destructors (__del__). - Exceptions. - Lambdas and non-closure private functions. - Function polymorphism. - Dicts, kind of (a lot of features don't work). Here's what nemesys doesn't do yet, but will in the future: - Sets. - Variadic functions. - Recursion. - Multiple inheritance. - Decorators. - Most built-in functions. - Generators and coroutines. - Magic methods on classes (except __init__ and __del__, which are implemented). Here's what nemesys doesn't do yet, but could in the future: - Interactive shell interface. - Closures. - Return statements inside finally blocks. - Support the CPython C API. - Optimize its generated assembly code. - Build and run on architectures other than AMD64. Here's what nemesys will probably never be able to do: - Assign arbitrary attributes to objects after construction time. - Polymorphic variables within a scope (except to/from None). - Metaclasses. - Negative exponents for integer bases. Just do 1/(a**b) instead. Have fun. If you try this and something doesn't work, feel free to complain at me unless it's already mentioned in the above lists.
About
Experimental Python JIT compiler
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published