L3 Programming Language

L3 is designed to maximize developer productivity and runtime performance.

Features (WIP)

Simple

 0 dependency management - no need to download, build, or include or use a package manager.
 1 integer type.
 1 floating point type.
 2 container types.
 GUI editor - don't waste time on formatting & style, better code navigation, and more.
 Arguments always passed by reference (zero overhead).

Safe

 Zero overhead automatic memory management.
 Zero overhead automatic bound checking.
 No multithreading bugs.

Fast

 Automatic memory layout optimizations.
 Automatic vectorization.
 Automatic parallelism.
 Automatic heterogeneous computing.
 Automatic distributed computing.

And many more automatic high level optimizations.

Benchmarks

The benchmarks measure the performance of code with similar level of complexity.
The reason is that performance is 2 dimentional problem - running time and the amount of programming work.
Given full control over the hardware, infinite time, and sufficiently smart programmer, an optimal implementation can be achieved, but it's not feasible.

In other words the purpose of these benchmarks is to measure how much speedup you get for the same amount of programming work.

Find smallest

Insert 10 random [0,100] integers into a container, and then find the smallest one.

Lookup

Insert 100 random {[0,99],[0,99]} key-value pairs of integers into a map, and then randomly lookup one of these elements.

Automatic incremental computing

a tree of relative positions and computing the absolute position of each node.
`cpp`: C++ implementation without incremental computing.
`cpp_IC`: C++ with incremental computing, storing the abs position and checking if it needs to be updated.
`L3`: similar to the cpp one, and the compiler automatically generates incremental computing code.