aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: b41dc9f5d8a9ba4514cae20c5f04db62b744f45d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Readme
======
Modules for the language being developed by Thekla, Inc.

## Saturation
This module provides basic integer [saturation arithmetic](https://en.wikipedia.org/wiki/Saturation_arithmetic) procedures: `add`, `sub`, `mul`, and `div`.  
These procedures accept any of the built-in integer types and adjust the output accordingly, e.g., adding an `u8` with an `s16` results in an `s16`;  
All procedures return a flag signaling if the result is saturated and, additionally, the division procedure returns the remainder;  
Branch-free procedures are included for the x64 architecture. These may be used by setting the `PREFER_BRANCH_FREE_CODE` module argument, or by setting `prefer_branch_free_code` on each function call. These should speed things up, specially when using signed values. Some benchmarks are included on the tests file.  

## TUI
A simple terminal user interface module that provides basic functionalities similar to the [ncurses library](https://en.wikipedia.org/wiki/Ncurses).  
Usefull for creating simple terminal-based apps that require user input.  
View `snake.jai` for an example.  
It has been tested on the following terminal emulators:
- [GNOME Terminal](https://en.wikipedia.org/wiki/GNOME_Terminal)
- [kitty](https://en.wikipedia.org/wiki/Kitty_(terminal_emulator))
- [Konsole](https://en.wikipedia.org/wiki/Konsole)
- [Linux console](https://en.wikipedia.org/wiki/Linux_console)
- [xterm](https://en.wikipedia.org/wiki/Xterm)
- [Windows Terminal](https://en.wikipedia.org/wiki/Windows_Terminal)

## UTF8
Basic operations over UTF8 encoded strings.

# License
Licensed under MIT or ISC.

SPDX-License-Identifier: MIT OR ISC