The Xanathar programming Language
Project description
Xanathar
Name inspired by Xanathar's Guide to Everything (© Wizards of the Coast)
Pipeline
Made in draw.io
Features
- Compiles directly to a binary (through LLVM IR)
- Fast (uses Lark and LLVMLite) for speed
- Strong typing (enforced by LLVM IR)
- Easy to learn syntax
- Written in Python, so no installation required
Spec
Implemented operations
Keep in mind, Xanathar is a huge WIP
- Variables (statically allocated)
- Int / UInt
- 1 Bit (Bool)
- 8 Bit (Char)
- 16 Bit
- 32 Bit
- 64 Bit
- 128 Bit
- 512 Bit
- 1024 Bit
- Floats
- Strings (implemented as a statically allocated int8[])
- Int / UInt
- Printing
- libc
printf
can be used print_s
,print_i
,print_x
,print_c
print with theprintf
format string (%s
forprint_s
, etc.)- Implemented as a libc call to
printf
with the corresponding format string - Deprecated in favour of
printf
- Implemented as a libc call to
- libc
- Casting
- Works!
string >> int
gives pointer to theint
'th character instring
- useful for (e.g.)
printf
- useful for (e.g.)
- Loops
- While and For
- While loops: more like a C-style do-while
- For loops: similar to a do-while style loop
- While and For
- Modules
- stdio
i8* get[i8*, i32]
- Implements
fgets
in C (source can be viewed instdlib/stdio.c
)
- Implements
- stdio
It's the best of both worlds: it keeps the amazing speed of low-level languages, but with the power and ease of high-level languages. On a test of the Collatz conjecture, run for i = 1 to 10, and 77,031, (100 runs of the entire program) Python 3 ran in 1.9s, whereas Xanathar ran in 0.064s. For 1000 runs of the program, Python 3 took 20.7s whereas Xanathar took 0.531s.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
xanathar-1.0.1.tar.gz
(15.9 kB
view hashes)
Built Distribution
xanathar-1.0.1-py3-none-any.whl
(17.5 kB
view hashes)