{"id":20120810,"url":"https://github.com/nthnn/uartix","last_synced_at":"2026-01-31T22:06:30.120Z","repository":{"id":245657551,"uuid":"818882548","full_name":"nthnn/Uartix","owner":"nthnn","description":"Strange dynamic programming and scripting language that performs mathematical computations on a connected Raspberry Pi Pico (RP2040) through UART connectivity.","archived":false,"fork":false,"pushed_at":"2024-08-08T09:26:13.000Z","size":7392,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-06T14:38:14.056Z","etag":null,"topics":["interpreted-programming-language","interpreter","programming-language","programming-language-design","programming-language-development","programming-language-interpreter","raspberry-pi-pico","raspberry-pi-pico-projects","rp2040-arduino","uart","uart-protocol"],"latest_commit_sha":null,"homepage":"https://uartix.vercel.app","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nthnn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"nathanne-isip"}},"created_at":"2024-06-23T06:28:47.000Z","updated_at":"2024-08-26T05:53:46.000Z","dependencies_parsed_at":"2024-08-08T11:49:00.345Z","dependency_job_id":null,"html_url":"https://github.com/nthnn/Uartix","commit_stats":null,"previous_names":["nthnn/uartix"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/nthnn/Uartix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nthnn%2FUartix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nthnn%2FUartix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nthnn%2FUartix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nthnn%2FUartix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nthnn","download_url":"https://codeload.github.com/nthnn/Uartix/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nthnn%2FUartix/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28956971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T18:30:42.805Z","status":"ssl_error","status_checked_at":"2026-01-31T18:30:19.593Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["interpreted-programming-language","interpreter","programming-language","programming-language-design","programming-language-development","programming-language-interpreter","raspberry-pi-pico","raspberry-pi-pico-projects","rp2040-arduino","uart","uart-protocol"],"created_at":"2024-11-13T19:23:15.063Z","updated_at":"2026-01-31T22:06:30.090Z","avatar_url":"https://github.com/nthnn.png","language":"Java","readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"logo/uartix-round.png\" width=\"162\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eUartix\u003c/h1\u003e\n\n![Build CI](https://github.com/nthnn/Uartix/actions/workflows/build_ci.yml/badge.svg)\n![Picoware CI](https://github.com/nthnn/Uartix/actions/workflows/picoware_ci.yml/badge.svg)\n![Launcher Build CI](https://github.com/nthnn/Uartix/actions/workflows/launcher_build_ci.yml/badge.svg)\n[![GitHub Issues](https://img.shields.io/github/issues/nthnn/Uartix.svg)](https://github.com/nthnn/Uartix/issues)\n[![GitHub Stars](https://img.shields.io/github/stars/nthnn/Uartix.svg)](https://github.com/nthnn/Uartix/stargazers)\n![GitHub repo size](https://img.shields.io/github/repo-size/nthnn/Uartix?logo=git\u0026label=Repository%20Size)\n[![License](https://img.shields.io/badge/license-GNU%20GPL%20v3-blue.svg)](https://github.com/nthnn/Uartix/blob/main/LICENSE)\n\nA strange dynamic programming language that performs mathematical computations on a connected Raspberry Pi Pico through UART connectivity.\n\n```utx\n# Hello world example\n\ngreet = func(name)\n    render \"Hello, \" + name;\n\ngreet(\"world\");\n```\n\nSee the complete documentation [here](https://uartix.vercel.app).\n\n## Why Uartix?\n\nDespite its unconventional and dynamic behavior, as well as its lack of fundamental APIs, Uartix can still serve as a general-purpose programming and scripting language. The following points outline the reasons behind the development of Uartix:\n\n- The Raspberry Pi Pico, with its dual-core ARM Cortex-M0+ processor, offers an irrelevant yet affordable platform for hardware-level computation.\n- Uartix provides a specialized environment where developers can perform mathematical operations directly on the hardware.\n- Compared to many external coprocessors, Uartix running on a Raspberry Pi Pico presents a highly cost-effective solution. The affordability of the Pico reduces overall project costs while still delivering substantial computational power for a variety of applications.\n- The Raspberry Pi Pico, with its energy-efficient ARM Cortex-M0+ cores, offers a low-power solution for performing mathematical calculations which is perfect for Uartix runtime execution.\n- Why not? I was bored when I started developing this.\n\n## Features\n\n- **Rich expression and statement constructs**\n\n    The language includes standard control flow constructs such as `if`, `while`, and `loop`, as well as more specialized ones like `unless`, `when`, and `random`. These constructs enable developers to write clear and concise code that directly expresses their intent, reducing the need for verbose and boilerplate code.\n\n- **Support for multiple numerical bases**\n\n    One of the standout features of Uartix is its support for multiple numerical bases, including binary, trinary, octal, and hexadecimal, in addition to standard decimal numbers.\n\n- **In-code testing units**\n\n    Uartix introduces an innovative `test` statement that facilitates in-code testing and validation. This feature allows developers to embed tests directly within their codebase, providing a streamlined approach to verifying functionality and ensuring code correctness. The `test` statement is particularly useful for unit testing, where individual components of the code can be tested in isolation.\n\n- **Control Flow as Expressions**\n\n    A distinctive feature of Uartix is its treatment of control flow constructs as expressions rather than traditional statements. This design choice enhances the language's expressiveness and flexibility, allowing control flows to be used as part of larger expressions.\n\n- **Boolean Constructs: `true`, `false`, and `maybe`**\n\n    Uartix introduces unique boolean constructs `true`, `false`, and `maybe`, which add a layer of versatility and unpredictability to the language's logic handling. While `true` and `false` are standard boolean values, `maybe` is a distinctive feature that represents an uncertain or probabilistic state, which is resolved at runtime.\n\n## Getting Started\n\nBefore installing Uartix, make sure you have JDK 22 (or OpenJDK) installed on your system. Follow the steps below to get started on different operating systems and to build various components from the source.\n\n### Installing Uartix\n\n#### Linux\n\n1. **Download the `.deb` File**: Visit the [release page](https://github.com/nthnn/Uartix/releases) and download the latest `*.deb` file for Uartix.\n2. **Install Uartix**: Open your terminal and navigate to the directory where the `.deb` file is located. Run the following command to install Uartix:\n\n   ```shell\n   sudo dpkg -i uartix_*.deb\n   ```\n\n3. **Running Uartix**: After successfully install the `.deb` package, you can now run the command `uartix` on your terminal.\n\n#### Windows\n\n1. **Download the .zip File**: Go to the [release page](https://github.com/nthnn/Uartix/releases) and download the latest `.zip` file for Uartix.\n\n2. **Extract the File**: Extract the contents of the `.zip` file to `C:\\uartix`.\n\n3. **Set Environment Path**: Add `C:\\uartix\\bin` to your Environment Path variables to ensure you can run Uartix from any command prompt.\n\n#### Firmware Installation\n\nTo install the Uartix firmware on your Raspberry Pi Pico, follow these steps:\n\n1. **Enter Flash Mode**: Connect your Raspberry Pi Pico to your system while holding the `BOOTSEL` button to enter flash mode.\n\n2. **Download the UF2 Binary**: Download the UF2 binary of the Uartix firmware from the [release page](https://github.com/nthnn/Uartix/releases).\n\n3. **Install the Firmware**: Drag and drop the downloaded UF2 file into the Raspberry Pi Pico storage that appears on your computer.\n\n### Building from Source\n\n#### Interpreter\n\nTo build the interpreter:\n\n1. **Open in IntelliJ**: Open the Uartix repository in IntelliJ IDEA.\n2. **Build Artifacts**: From the menu, go to `Build` menu item and select `Build Artifacts \u003e Build`.\n\n#### Launcher\n\nOn Ubuntu, to build the Uartix launcher, ensure you have Rust and cargo installed on your system. Follow these steps:\n\n1. **Install Dependencies**:\n\n   ```shell\n   sudo apt-get install mingw-w64\n   rustup target add x86_64-pc-windows-gnu\n   ```\n\n2. **Build the Launcher**: Run the following commands to build the launcher:\n\n   ```shell\n   cargo build --release\n   cargo build --release --target x86_64-pc-windows-gnu\n   ```\n\n#### Firmware\n\nTo build the Uartix firmware from source, simply follow the steps below.\n\n1. **Installing Raspberry Pi Pico on Arduino IDE**: Install the Raspberry Pi Pico boards on your Arduino IDE by following the steps [here](https://randomnerdtutorials.com/programming-raspberry-pi-pico-w-arduino-ide/).\n2. **Open in Arduino IDE**: Open the file [picoware/picoware.ino](picoware/picoware.ino) in your Arduino IDE.\n3. **Build \u0026 Upload**: Connect your Raspberry Pi Pico board on flash mode then upload and build the Picoware on your Arduino IDE.\n\n## Development Support\n\nUartix is an open-source project and is voluntarily developed. If you find Uartix useful and would like to support its continued development and improvement, you can make a donation.\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://opencollective.com/nathanne-isip\"\u003e\n        \u003cimg src=\"https://opencollective.com/webpack/donate/button@2x.png?color=blue\" width=\"250\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n## Contributing and Contributors\n\nAll contributions are welcome to make Uartix even better. Whether you want to report a bug, suggest new features, or contribute code, your contributions are highly appreciated.\n\n### Issue Reporting\n\nIf you come across a bug, have a feature request, or wish to propose enhancements, we kindly encourage you to initiate the process by opening an issue on our GitHub [Issue Tracker](https://github.com/nthnn/Uartix/issues). Your feedback is invaluable in helping us refine and enhance the Uartix. To ensure we can address your concern effectively, we kindly request that you include as much pertinent information as possible. This may encompass a detailed description of the issue or feature request, and if applicable, specific steps to replicate the problem.\n\nYour thorough input enables us to better understand and resolve the matter swiftly, contributing to the overall improvement of Uartix. Thank you for your contributions and for helping us create a more robust and user-friendly environment.\n\n### Pull Requests\n\nIf you're eager to get involved and contribute your coding expertise to Uartix, we're thrilled to have you on board! To ensure a smooth and collaborative process, here's an outlined the following steps that you can follow:\n\n1. Fork the Uartix repository to your GitHub account. And then clone it to your local machine.\n\n    ```shell\n    git clone https://github.com/\u003cyour username\u003e/Uartix.git\n    ```\n\n2. Create a new branch for your changes:\n\n    ```shell\n    git checkout -b feature/\u003cyour feature name\u003e\n    ```\n\n3. You can now make changes to the repository.\n\n4. Commit your changes:\n\n    ```shell\n    git add -A\n    git commit -m \"Add your meaningful commit message here\"\n    ```\n\n5. Push your changes to your forked repository:\n\n    ```shell\n    git push origin feature/\u003cyour feature name\u003e\n    ```\n\n6. Create a pull request (PR) from your branch to the main branch of the Uartix repository.\n\n7. Your PR will be reviewed, and any necessary changes will be discussed and implemented.\n\n8. Once your PR is approved, it will be merged into the main branch, and your contribution will be part of Uartix.\n\n### Contributors\n\nFinally, this section acknowledges and celebrates the individuals who have made significant contributions to the development and success of the project. Meet the dedicated and talented team members, developers, and collaborators who have played key roles in bringing Uartix to life and advancing its objectives.\n\n- [Nathanne Isip](https://github.com/nthnn) — Original Author, Developer\n- [Lady Selene](https://instagram.com/lady.selenee) — Artist, Illustrator\n\n\n## License\n\n[Uartix](https://github.com/nthnn/Uartix) programming language.\nCopyright (c) 2024 Nathanne Isip. \n\nThis program is free software: you can redistribute it and/or modify \nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, version 3.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nGeneral Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see [http://www.gnu.org/licenses/](http://www.gnu.org/licenses/).\n","funding_links":["https://opencollective.com/nathanne-isip"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnthnn%2Fuartix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnthnn%2Fuartix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnthnn%2Fuartix/lists"}