From c625ed1cfe7f7ea4ab2a75a8a0a6a6772f86431c Mon Sep 17 00:00:00 2001 From: Kyle Gunger Date: Fri, 30 Apr 2021 14:06:58 -0400 Subject: Destroy my own code by using goto --- spec/libts.txt | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) (limited to 'spec/libts.txt') diff --git a/spec/libts.txt b/spec/libts.txt index e69de29..e31d59d 100644 --- a/spec/libts.txt +++ b/spec/libts.txt @@ -0,0 +1,93 @@ +This is the LIBTS specification, a document related to the definition of the TNSL language, +meta-language, it's usage, and where it's standard libraries may be ported. + +Document version (semver): 0.0.1 +Main Author: Kyle Gunger + +License: Apache 2.0 + +---------------------------------- + +Contents: + +Part 1 -- About the Library + 1.1: libts and TNSL + 1.2: Short overview + +Part 2 -- Library Features + 2.1: Bitwise operations + 2.2: Standard algorithms + 2.3: Continer structs + 2.4: Standard abstractions + 2.5: Time related APIs + 2.6: Method resolution + +---------------------------------- + +Part 1: About the Library + +---------------------------------- + +Section 1: libts and TNSL + + libts or the TNSL standard library is a library to be found on almost all systems containing + a TNSL implimentation. The library contains both common APIs which ease common programming + feats as well as core program logic for the more high-level features of TNSL. TNSL can + indeed run without a libts, however doing so limits many parts of the language to the "raw" + variants. These limited features include structs, types, and interfaces primarially. + + libts contains a standard method resolution algorithm such that method calls can be resolved + on runtime for the high level dynamic type system. + +---------------------------------- + +Section 2: Short overview + + The library contains many standard algoritims and abstractions found in other languages such + as C, as well as helpers for these containers. + + +---------------------------------- + +Part 2: Library Features + +---------------------------------- + +Section 1: Bitwise Operations + +---------------------------------- + +Section 2: Standard algorithms + +---------------------------------- + +Section 3: Continer structs + +---------------------------------- + +Section 4: Standard abstractions + +---------------------------------- + +Section 5: Time related APIs + + Time is important for any program, and libts provides an interface through which to query + the operating system for it. libts also provides conversion, projection, and timing features + so that programs can make use of user inputs relating to time. If bugs in the time projection + of the library, they will be fixed. No reguard to existing data should be given, accuracy is + the goal above breakage. + + That being said, the library should attempt to work around erronious data in a way that + provides an alternative date if the data is in a good format but pointing to a non-existant + date. An error code will still be thrown in these cases, but indicating that the date does + not exist, not that the input was complete garbage. Programs may catch errors in any way + they choose. + +---------------------------------- + +Section 6: Method resolution + + As previously stated, the library performs method resolution for calls on high-level types. + In an iex file, this is done by finding the associated IEX_TYPE of the object and following + along the "supers" array and checking with the "methods" arrays until the IEX_TYPE contains + a definition for the method called which fits the caller's arguments. \ No newline at end of file -- cgit v1.2.3