fuzziqersoftware/nemesys
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
master
Could not load branches
Nothing to show
Could not load tags
Nothing to show
{{ refName }}
default
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code
-
Clone
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.
- Open with GitHub Desktop
- Download ZIP
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
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