summaryrefslogtreecommitdiff
path: root/README.md
blob: 7441172d4667878d283328fc10117c2a046f94d6 (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# libtnsl

The official implimentation of the TNSL Standard Library

`libtnsl` is a "batteries included" standard library which aims to keep these batteries as small as possible.

To that end there are a variety of modules, some of which may be omitted for smaller but less capable distributions of the standard library.

---
## Module Groups

Modules are grouped into `base`, `net`, or `full` groupings.  Base is the core modules provided, net adds networking, and full is the complete set including graphics and audio.

## Available Modules By Group

### Base Modules
* `algo`
  * common algorithms which act on types implementing the common library interfaces
* `box`
  * common container types implementing the common library interfaces
* `crypto`
  * cryptographic hash functions
  * cryptographic keygen
  * cryptographic signature generation and validation
  * encryption and decryption standards
* `encoding`
  * various data encoding types
  * various file encoding helpers
* `internal`
  * internal helpers for the library, not exported
* `io`
  * streaming input and output for a variety of common operations
  * file streaming helpers
  * memory streaming
  * device event streaming interface
  * various protocols
* `lang`
  * language constants
  * any language feature support which relies on the std library lives here
  * common interfaces used throughout the rest of the library
* `math`
  * common math functions
  * statistics
  * vector and matrix types
  * big number types
* `parallel`
  * threading
  * atomic primitives
  * locking primitives
  * threadsafe container types
  * greenthread support for yield funcs as well as default scheduler implementation
* `random`
  * prng for average use cases
  * cryptographic prng
  * access to sources of randomness
* `text`
  * text encoding and decoding
* `time`
  * time bases
  * timestamps
  * time formatting and translation between timezones
  * system clock access
  * timers

### Net Modules
* `net`
  * support for io pipes to TCP, UDP, and RAW internet sockets
  * support for TLS using the base `crypto` module
  * support for HTTP 1/2/3 protocol
  * support for WebSockets
  * support for a variety of other internet protocols

### Full Modules
* `audio`
  * support for audio playback through a graph based api with inputs, outputs, and transformers
  * audio transformer and generator protocols
  * support for a variety of sound formats
  * support for loading sound formats from files
* `graphics`
  * basic windowing support
  * light wrappers over a variety of low level graphics libraries
    * OpenGL
    * OpenXR
    * Vulkan
  * direct draw into window buffers
* `ui`
  * platform native UI engine
  * similar to win forms, GTK, Qt, etc. has structured dialog and window layouts
  * provides a default main event loop which calls to recievers