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.0.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xanathar-1.0.0-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: xanathar-1.0.0.tar.gz
  • Upload date:
  • Size: 10.2 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.0.tar.gz
Algorithm Hash digest
SHA256 bbd98bc53b0f43fe22f3d348c6931557915de6985a17b5184d78b3665391ba86
MD5 faf8bced55bf20d25c4abc29e6f6c884
BLAKE2b-256 1835d66137c048879fdfa253e9b3f4a8cb60c5b9a27f10ace24e30bda6829dca

See more details on using hashes here.

File details

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

File metadata

  • Download URL: xanathar-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 10.7 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dec92495ef4258171279249a0b84f00daca334ad18fbdbc656d38cd310e24e03
MD5 6ef995b242afd5b88ed5e340dcbaee03
BLAKE2b-256 a33608cf0cc0b71c98734833d76cd7da6add749bd8e9bed4943a57dcf3852322

See more details on using hashes here.

Supported by

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