Skip to main content

pykit

Pykit is a package for a pluggable intermediate representation, that is higher level and easier to use than LLVM. It allows pluggable compiler optimizations and custom opcodes, and aims to abstract over backends (e.g. C or LLVM), IR serialization and caching, debug information. exception handling and potentially GC root finding.

Pykit ships with a builtin set of opcodes, and has an IR verifier and interpreter for that set of operations. The IR is a function of basic blocks containing instructions (operations), similar to three-address code. It supports builtin variables and explicit SSA instructions through the dataflow and reg2mem passes.

Although pykit ships with builtin opcodes and passes, one is entirely free to use a custom set of opcodes, types and transformations.

pykit:

  • lowers and optimizes intermediate code

  • tries to be independent from platform or high-level language

  • can generate LLVM or C89 out of the box
    • todo: finish C codegen :)

  • supports pluggable opcodes

  • has a number of builtin optimizations and transformations

  • has a builtin set of goodies to work with the IR
    • builder, interpreter, verifier

  • supports float and complex math functions through llvmmath

pykit is inspired by VMKit and LLVM.

Website

http://pykit.github.io/pykit/

Documentation

http://pykit.github.io/pykit-doc/

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pykit-0.2.0.tar.gz (257.3 kB view details)

Uploaded Source

File details

Details for the file pykit-0.2.0.tar.gz.

File metadata

  • Download URL: pykit-0.2.0.tar.gz
  • Upload date:
  • Size: 257.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pykit-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6dfe2449ebf0e495fe6d3a1a3bfb0bbe4d8a985192878c8c9da60f8b5f82054b
MD5 682fe3c0641fda8c0b863ff35947f102
BLAKE2b-256 6c23670dca715bd816333f3321637229de90484cb3c7fa1e870fa185b313aeaa

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

1 file

0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page