summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md90
1 files changed, 90 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..7441172
--- /dev/null
+++ b/README.md
@@ -0,0 +1,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
+