aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 13179e68f01bdda31b6af83a5be722c8a6dba8e0 (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
30
31
32
33
34
35
36
jai-modules
===========

Modules for the language being developed by Thekla, Inc.

Available at https://github.com/gudinoff/jai-modules

# 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