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
|