Ngn/k: Difference between revisions
m (Linkify) |
("Reference Whitney C") |
||
Line 23: | Line 23: | ||
'''ngn/k''' is an implementation of [[K6]] created by [[ngn]]. It has been rewritten more than once, and has undergone many changes from its original iteration, borrowing ideas from many [[Arthur Whitney]] Ks, and occasionally deviating from their functionality. |
'''ngn/k''' is an implementation of [[K6]] created by [[ngn]]. It has been rewritten more than once, and has undergone many changes from its original iteration, borrowing ideas from many [[Arthur Whitney]] Ks, and occasionally deviating from their functionality. |
||
ngn/k is written in [[ |
ngn/k is written in [[Whitney C]], and is written to be performant, compact, and with minimal dependencies. |
||
== History == |
== History == |
Revision as of 06:02, 27 July 2022
Developer | ngn |
---|---|
Released | 2017 |
| |
Dialect | K6 |
Temporal types | none |
Table support | yes (no prettyprinting) |
Prototypes | partial support |
| |
Implemented in | C |
Platforms | x86_64 |
Operating Systems | Linux, BSD, Windows(unofficial) |
License | AGPL |
| |
Website | Codeberg |
Documentation | in repl |
Run Online | editor (Bitbucket, Codeberg), repl (Bitbucket, Codeberg) |
| |
Influenced By | K7, K9 |
ngn/k is an implementation of K6 created by ngn. It has been rewritten more than once, and has undergone many changes from its original iteration, borrowing ideas from many Arthur Whitney Ks, and occasionally deviating from their functionality.
ngn/k is written in Whitney C, and is written to be performant, compact, and with minimal dependencies.
History
Development on ngn/k was started on April 9, 2017[1]. The older Github repository for ngn/k points towards kparc.io[2] for its spec.
The codebase was then moved to Gitlab. The exact date is not known since the repository no longer exists on the site.
The ngn/k repl and editor was created in October 2020 and subsequently moved from ngn.bitbucket.io
to ngn.bitbucket.io/k
[3]. It has remained in that state ever since.
The codebase was the moved to Sourcehut (sr.ht) on December 21, 2020[4].
The current version of ngn/k resides in Codeberg, and the move was officially announced on May 21, 2021[5]. The codeberg repository has its initial commit at 2019, where it had support for x86_64 linux only.
ngn/k was indefinitely frozen[6] on May 24, 2022.
Running
The main way of running ngn/k is building it. This can be done reliably on Unix-like systems with the help of either clang-12
or gcc-10
C compilers, and the make
utility. Build instructions can be found in the ngn/k README file.
ngn/k has a WASM distribution available online. These can be accessed from the "Run Online" links in the sidebar. The Codeberg page is restricted in some countries.
Traws has a fork of ngn/k on Github which is made for compilation under cosmopolitan libc.
Features
I/O Verbs
ngn/k's I/O verbs are defined as per the K6 standard. They are made up of a single digit, followed by a :
symbol: loc u: data
for output and u: loc
for input.
A symbol, string or number can be given as loc
. Any number given must be a valid tie number (see: Tie(ngn/k)).
Every input verb is classified by data
:
0:
takes lists of strings. (concatenates them with newlines)1:
takes a single string.
Reserved Symbols
ngn/k has reserved symbols used for providing access to features that are not important enough to be added as primitives, but still warrant a name for quick use. These symbols can be used like any other nouns.
The ngn/k help topic for adverbs is available at \`
in the ngn/k repl.
Defined Verbs
ngn/k allows creation of new verbs that can be used infix, as part of its syntax. These must be defined as follows (using ∇
as an example symbol):
(∇:): monad (∇): dyad
References
- ↑ https://github.com/ngn/k/commits/aff40c33f75eeab4c5f69fa55b795d83fbd6288a
- ↑ https://kparc.com/k.txt
- ↑ https://chat.stackexchange.com/search?q=ngn.bitbucket.io&Room=90748&page=10&pagesize=50& sort=newest
- ↑ https://chat.stackexchange.com/transcript/90748?m=56558503#56558503
- ↑ https://chat.stackexchange.com/transcript/message/57843141#57843141
- ↑ https://codeberg.org/ngn/k/commit/7e7420217f9df95273a8605e05d6335d66dd8f8a