Chaga programming language: Blog

February 21, 2026

Finalized the data structure to hold floating-point numbers as strings in the Chaga string arithmetic library. I've conducted many tests before reaching this stage. The data structure I use is more complex than string integers as string floats have a whole part (left of the decimal) and a fractional part (right of the decimal). With minor adjustments, the floating-point data structure will also be used (recycled) for complex and imaginary numbers.

I've also added string addition for floating-point numbers to the Chaga string arithmetic library. I'm testing that software now to ensure all is well before moving on to floating-point string subtraction, floating-point string multiplication, and floating-point string division.

I'm hoping I can compute several million digits of PI in the Chaga programming language on March 14, 2027 (PI day).

January 31, 2026

Just released Chaga programming language compiler version 0.5.3. Fixed a bug in the string arithmetic modulo function. Specifically, if numerator and denominator are identical, I was returning one (quotient) rather than zero (remainder). This has been fixed. You may download version 0.5.3 from the Download page.

January 17, 2026

Released Chaga programming language compiler version 0.5.2. Added support for Boolean datatype (bool). You may download the gzipped tar archive from the downloads page.

January 8, 2026

Just released Chaga programming language compiler version 0.5.1. Added support for string integer division and string integer modulo (remainder). You may download the gzipped tar archive from the downloads page.

January 4, 2026

The first public release of the Chaga programming language compiler (version 0.5) is now available for download and testing. I'm releasing it under the GNU Public License 3.0 (GPL3). I've included full source code for the compiler with Makefile. You will need a 64-bit GNU/Linux operating system, gcc, and the GNU assembler. I've also included sample programs in the Chaga programming language for you to compile. You may download the gzipped tar archive from the downloads page.

December 6, 2025

I've computed 10000! (ten-thousand factorial) using the Chaga numerical string library. Ten-thousand factorial is 35,660 digits long. I've also created a factorial table for the first one-thousand numbers.

November 21, 2025

Computed the first ten million terms of the Fibonacci series (with first two terms being zero and one). The ten millionth term of the Fibonancci series contains 2,089,876 digits. I computed this number using the Chaga numerical string library which is a software library written for the Chaga programming language.

September 27, 2025

Spent time yesterday extensively re-writing the documentation for the Chaga Programming Language. Previously I had one continuous long HTML page. Now documentation is formatted much more like an online book divided into seven chapters thus far. I'm pleased with the new documentation layout in book style. One area I'm still debating in the Chaga programming language is how to manage memory from the heap. I will very likely use some sort of automatic garbage collection. The Rust style of checking-in and checking-out memory is very intriguing. Another thought is to create a metadata attribute for pointers which could denote when the memory will be released or under what circumstances the memory will be released. I don't see an easy solution yet. Perhaps setting a scope threshold is one option. Memory is released once it goes below a given scope threshold. I keep track of scope already with metadata attributes. Every procedure or function has a non-negative scope value. The scope threshold would set a time-to-release for pointer memory and could be one means of garbage collection.

April 19, 2025

The Chaga programming language features metadata attributes for each datatype in the programming language. Most of these attributes are read-only as they are infrastructure related to the programming language itself. The protect attribute is modifiable by the end-user (the programmer). This attribute can be set for read-only, write-only, or read-write. Changes to the protect attribute can only be implemented in the same scope the variable was declared. Setting the attribute to read-only on a given variable will enable me to pass that variable's address (e.g. a large string datatype) to a function or procedure without the worry the function or procedure will modify the original string.

April 7, 2025

Using my math string library, I computed the first million terms in the Fibonacci series. The millionth Fibonacci term is 208,989 digits long.

April 6, 2025

I'm partially finished with writing a math string library to support math operations using strings to represent numbers. My math string library supports addition thus far and works fine. I tested it by computing the first 50,000 terms in the Fibonacci sequence. 50,000th Fibonacci_term and the Fibonacci sequence for the first 50,000 terms.

April 5, 2025

Introducing the Chaga Programming Language. I began developing this language in November 2023 when I was initially hired to teach Programming Languages in the Computer Science Department at Sonoma State University. The Chaga programming language began as a derivative of the C programming language. Although I primarily use this language as a teaching tool, my goal is to develop a low-level systems-oriented programming language.

March 30, 2025

I've designed a "C-like" programming language. I've used this language in my classes for three semesters now. The BNF grammar is quite extensive and the language has some subtle differences - improvements - from C. The programming language has a name (to be revealed at a future date). I've proposed the development of this language as an open-source collaboration hosted (and developed) in the CS department at Sonoma State University. I felt this would be an effective way to merge my own interests in compiler development and language construction with open-source. Not sure if this will take off or flop but thought I'd give it a go. Stay tuned. Language features I'd tentatively like to include: native support for coroutines, threads, pipes, sockets, and shared memory; functions that return one or more return values. This language may target robotics, IoT, and embedded systems development. This is NOT meant to be a beginner programming language. This is a systems-oriented programming language.


Copyright © 2025, 2026 Robert James Bruce.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available at https://www.gnu.org/licenses/fdl-1.3.html