Version: 0.0.1 (PoC pre-alpha) Implementation status: Porting to Janet
NegI - (Negitiation Interface) or (Negated Identity) is not a language in the traditional sense; it is a semantic substrate. It is designed to solve the "Ship of Theseus" problem in software: allowing a system to replace its components, semantics, and even its underlying runtime without losing its identity.
The ophanim.lua (backend name) is a 1 file library for Lua 5.5. You can either load it via require or just copy/paste the code. It only depends on lua core libraries, and even those can be removed. Personally, I'm testing on lua 5.5 binary. You can get lua binaries here: https://luabinaries.sourceforge.net/download.html. To test the demo, you can launch the repl.lua.
lua55 repl.lua
- Host representation. Lua have quite messy syntax and context, we need to nicely wrap this up inside some Manifest or Frame.
- Just finish manifests (Especially Error, to check if we getting stuck in halt)
- Tokens should keep track of current evaluated data by having access to the Host device (like Artifacts do)
This is a prototype, currently I'm rewriting it in Janet, because Lua have no multi-therading support and lacks proper file and hardware access (while I can add dependencies, people might find it difficult to install because of current lua ecosystem).
- Practical NegI examples I use for tests located at
repl.lualine 8. - To see how manifest are working and structured see
local manifest = {...anddispatch = function ( - To see what things do you can refer to
FLESH.NegI.Manifestsinophanim.lua, for example:NegI "context" innerwill index NegIFramewithcontextliteral and return an object with authority to show context (look intoprotocolto see what it can do).
You should read s&dr.md with a grain of salt, because I want to focus on implementation, rather than updating the docs (the code has most of the info inside comments, which I usually keep updated).
negi.lark is an old file from python implementation attempt, it shows how in lark NegI syntax is parsed.
P.S Currently the progress is on hold, because I'm busy with university