Crates.io | l1_ir |
lib.rs | l1_ir |
version | 0.0.52 |
source | src |
created_at | 2022-12-22 01:54:08.136521 |
updated_at | 2023-03-05 01:21:08.790842 |
description | L1 Intermediate Representation |
homepage | |
repository | https://github.com/andrew-johnson-4/L1IR |
max_upload_size | |
id | 743582 |
size | 193,661 |
Intermediate Representation of LSTS L1 Language. Built to support and manage JIT incremental compilation. Efficiently build and evaluate code fragments so that you can generate even more code faster!
(Rust) 1M 2^20 in 4.8860006 seconds
(L1) 1M 2^20 in 3.8207040 seconds
(Python) 1M 2^20 in 130.2404361 seconds
(OCaml) 1M 2^20 in 2.5900000 seconds
note: Rust is compiled without optimizations enabled because it constant folds the entire benchmark
Values
Gradual Types (optional)
T<A,B,C>
decorations for nominal accept/rejectGlobal AST Nodes
Expression AST Nodes
L1IR's unique contribution is that it does not presume to know everything about literal strings. Literal Values, by definition, are represented as an amalgam of Unicode Characters instead of fixed length bitstrings. This is advantageous to languages like L1 that define their own operators from scratch, but still desire to have an efficient runtime.
Things not in the AST directly