{"slug": "programing-language-faster-than-python-for-ml-jaithon-3-1", "title": "Programing language faster than Python for ML (Jaithon 3.1)", "summary": "Jaithon 3.1, a new programming language designed to be faster than Python for machine learning, has been released by developer Abhiram Sonny. The language features a bytecode VM, garbage collection, and is heavily bootstrapped, with about 80% of its raw code generated using agentic coding tools like Claude Code. The architecture is entirely human-designed, and the project is available on GitHub.", "body_md": "Jaithon is a dynamically executed and garbage collected language with a bytecode VM. It takes heavy insp from the structure from Java (for its architecture) and insp for everything else from a combination of Rust & Python.\n\nPretty much everything (apart from the CORE primitive implementation stuff) is written in jaithon itself, making it VERY much bootstrapped and easy to extend with new features.\n\nMost documentation within `.jai`\n\nand `.c`\n\nfiles is currently AI-generated to speed up development, though it is being rewritten as the language evolves. The README and most of `LANGUAGE.md`\n\nare hand-written, thoroughly reviewed, and are currently 100% accurate. Docstrings in the code may still be inaccurate, as they were generated by an LLM.\n\nAdditionally, around 80% of the *raw code* in this repository was produced with agentic coding tools (claude code). My workflow is to first design a feature or bug fix completley by hand, then use an LLM to help either finish it, integrate it with the codebase, catch additioal bugs before I push, improve performance, or correct me on bad assumptions. The resulting code is something I completley understand and something that I stand by, and something that belongs to me.\n\nThe architecture is also 100% my own, 100% human generated, and not AI assisted.\n\nI see agent-assisted coding as the future of software engineering. It let me build Jaithon 3 far faster than I could have done alone, while still keeping a real human in the loop for the important decisions. Without agentic coding, Jaithon 3 probably wouldnt have existed, and Jaithon would have been stuck at a primal level. The entire codebase is reviewed by me and I would not consider myself a \"vibecoder\", or jaithon as \"ai slop\"; it is collaborative engineering with LLMs used as a multiplier to exponentiate my productivity.\n\n```\ngit clone https://github.com/abhiramasonny/jaithon\ncd jaithon\nmake                        # builds ./jaithon\nmake test                   # this is optional, but it runs the benchmarks and tests and stuff\n./scripts/install.sh        # also optional, it installs itself to /usr/local\n```\n\nThe reqs to run jaithon are a C11 compiler and make, readline is used for the REPL if present. On macOS the Metal and Cocoa frameworks enable the GUI and GPU modules, however everything else builds and runs without them.\n\n```\njaithon run program.jai     # run a file\njaithon                     # REPL\njaithon check src/          # type-check without running\njaithon fmt .               # canonical formatter, no options\njaithon test                # discover and run tests\njaithon doc --out docs/api  # generate API documentation\njaithon disasm program.jai  # bytecode listing\n```\n\nThe REPL keeps its bindings across lines, continues an unfinished input on a\n`...`\n\nprompt, and takes meta-commands. `:help`\n\nlists every one of them.\n\n``` js\n# let is immutable but var is not and const is compile time\nlet name = \"Jaithon\"\nvar count = 0\nconst MAX = 1 << 16\n\n# types are optional, but they are checked if they are present\nlet ratio: float = 0.5\nlet names: list[str] = []\nlet lookup: dict[str, int] = {}\nlet maybe: int? = null           # T? is T | null\n\nif names.len() > 0 { print(names[0]) }\nprint(maybe ?? -1)\n\n# loops and ranges\nfor i in 0..10 { count += i }\n'outer: for row in grid {\n    for cell in row {\n        if cell == target { break 'outer }\n    }\n}\n\n# pattern matching\nlet kind = match code {\n    200           => \"ok\",\n    301 | 302     => \"redirect\",\n    400..=499     => \"client error\",\n    n if n >= 500 => \"server error\",\n    _             => \"unknown\",\n}\n\nenum Shape {\n    Circle(radius: float),\n    Rect(w: float, h: float),\n}\n\nfn area(s: Shape) -> float {\n    return match s {\n        Shape.Circle(r)  => math.PI * r ** 2,\n        Shape.Rect(w, h) => w * h,\n    }\n}\n\n# traits are interfaces with default methods, and they are types.\ntrait Printable {\n    fn to_str(self) -> str\n    fn describe(self) -> str { return f\"<{self.to_str()}>\" }\n}\n\n# Errors are classes\nfn load(path: str) -> str {\n    let file = io.open(path, \"r\")\n    defer { file.close() }\n    return file.read()\n}\n\n# comphressons and lazy iterators.\nlet squares = [x ** 2 for x in 0..10 if x % 2 == 0]\nlet first_ten = iter(source).map(parse).filter(is_valid).take(10).collect()\n```\n\nmore idepth file -> [ LANGUAGE.md](/abhiramasonny/jaithon/blob/main/LANGUAGE.md).\n\nAlso you can checkout the examples directory.\n\nLibraries that can ship outside the Jaithon standard library can be found under\n[ packages/](/abhiramasonny/jaithon/blob/main/packages/README.md). Each package owns its source, tests, version,\nand dependency manifest. Jaithon finds workspace packages from a checkout and\nfrom an installed\n\n`share/jaithon/packages`\n\ndirectory.`jaiplot`\n\nis a library for Matplotlib-style figures and axes with file and window\nbackends.\n\n`jaitensor`\n\nprovides Metal-resident float32 tensors and a Keras-style API.\nIt includes common tensor math, format-independent datasets, dense models,\nReLU/sigmoid/tanh/softmax activations, momentum SGD, Adam, validation,\nprediction, and JSON weight files. The examples cover\n[ MNIST](/abhiramasonny/jaithon/blob/main/examples/mnist_gpu.jai) and a\n\n[.](/abhiramasonny/jaithon/blob/main/examples/spiral_classifier.jai)\n\n`nonlinear spiral classifier`\n\nEvery error is in this format, so hopefully its easy to debug\n\n``` php\nerror[E0301]: cannot assign to immutable binding `x`\n  --> examples/demo.jai:7:5\n   |\n 5 | let x = 1\n   |     - `x` declared immutable here\n ...\n 7 |     x = 2\n   |     ^^^^^ assignment to immutable binding\n   |\nhelp: change the declaration to `var x = 1`\n```\n\nThese are what the codes mean:\n\n| Code | Area |\n|---|---|\n`E00xx` |\nlexical |\n`E01xx` |\nsyntax |\n`E02xx` |\nnames |\n`E03xx` |\nbindings |\n`E04xx` |\ntypes |\n`E05xx` |\nmatch |\n`E06xx` |\nfunctions |\n`E07xx` |\nclasses |\n`E08xx` |\nmodules |\n\n``` php\nsource --> lexer --> parser --> resolver --> type checker --> codegen --> VM\n            |         │           │              │               │         │\n          tokens     AST      symbols +      types +          bytecode   values\n                               slots          casts           + caches   + GC\nmake debug            # -O0 -g, assertions on\nmake check            # type-check the whole tree\nmake test             # full suite\nmake bootstrap        # differential front-end verification\njaithon fmt --check . # formatting gate\n```\n\nMIT. See [LICENSE](/abhiramasonny/jaithon/blob/main/LICENSE).\n\nCreated by [Abhirama Sonny](https://abhiramasonny.com/).", "url": "https://wpnews.pro/news/programing-language-faster-than-python-for-ml-jaithon-3-1", "canonical_source": "https://github.com/abhiramasonny/jaithon", "published_at": "2026-08-14 04:12:59+00:00", "updated_at": "2026-08-14 04:40:47.634229+00:00", "lang": "en", "topics": ["developer-tools", "machine-learning", "generative-ai"], "entities": ["Jaithon", "Abhiram Sonny", "Claude Code", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/programing-language-faster-than-python-for-ml-jaithon-3-1", "markdown": "https://wpnews.pro/news/programing-language-faster-than-python-for-ml-jaithon-3-1.md", "text": "https://wpnews.pro/news/programing-language-faster-than-python-for-ml-jaithon-3-1.txt", "jsonld": "https://wpnews.pro/news/programing-language-faster-than-python-for-ml-jaithon-3-1.jsonld"}}