Skip to main content

The Xanathar programming Language

Project description

Xanathar

Name inspired by Xanathar's Guide to Everything (© Wizards of the Coast)

Pipeline

Made in draw.io

Xanathar Pipeline

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[])
  • Printing
    • libc printf can be used
    • print_s, print_i, print_x, print_c print with the printf format string (%s for print_s, etc.)
      • Implemented as a libc call to printf with the corresponding format string
      • Deprecated in favour of printf
  • Casting
    • Works!
    • string >> int gives pointer to the int'th character in string
      • useful for (e.g.) printf
  • Loops
    • While and For
      • While loops: more like a C-style do-while
      • For loops: similar to a do-while style loop
  • Modules
    • stdio
      • i8* get[i8*, i32]
        • Implements fgets in C (source can be viewed in stdlib/stdio.c)

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


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 details)

Uploaded Source

Built Distribution

xanathar-1.0.1-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file xanathar-1.0.1.tar.gz.

File metadata

  • Download URL: xanathar-1.0.1.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.0

File hashes

Hashes for xanathar-1.0.1.tar.gz
Algorithm Hash digest
SHA256 eb028719292a0864a64aeef182ae65625c5e13c70fca771f60e5905b2cf5bffb
MD5 4589e7ec4e908805b52b36b3b1edd3dc
BLAKE2b-256 2d21334161a2910f7717d5b72cb40575b261c4e4ecf2a37b04bf6d59a15b80cb

See more details on using hashes here.

File details

Details for the file xanathar-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: xanathar-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 17.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.0

File hashes

Hashes for xanathar-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fd7ecf2876549b76dc61bef4693b5d97c305b4fdfba38c3ad5a9909197349096
MD5 6679c83f3f4710ccbb51a1e1393a5144
BLAKE2b-256 8ac3a7e3cb447c830fc37e08b29bf23f8927b8c337a04797176d7e488400a660

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page