uemacs
Co-dfns
uemacs | Co-dfns | |
---|---|---|
18 | 21 | |
1,229 | 719 | |
- | 1.1% | |
0.0 | 9.5 | |
6 months ago | 2 days ago | |
C | APL | |
- | GNU Affero General Public License v3.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
uemacs
-
A nano like text editor built with pure C
Neat, I am a fan of minimalist text editors. There is also uEmacs: https://github.com/torvalds/uemacs
- Linus UEmacs
-
How many years have you been using Emacs?
maybe you're talking about the uEmacs Linus Torvalds still uses today? it's still maintained by him to fit his needs: https://github.com/torvalds/uemacs
-
Glory to Vim!
u/DellOptiplexFan Ironic, since the literal creator of Linux uses a fork of microemacs https://github.com/torvalds/uemacs
-
what terminal editor was intended to replace emacs in macOS with emacs bindings?
Torvalds's Emacs is nice. https://github.com/torvalds/uemacs
-
I just learned that new Macs don't come with Emacs preinstalled
Looks like he uses a thing called uEmacs.
-
Setting up a fundraiser for multi-threaded Emacs, any thoughts on this?
Why don't you ask Linus? Or even better, read his motivation in his fork of microemacs (not GNU Emacs).
-
Sunsetting Atom Text Editor
He doesn't. Linus uses MicroEMACS [0], which is an entirely different editor that uses emacs bindings.
It's not the lisp machine that incidentally happens to edit code that GNU Emacs is.
Or, as he puts it [1]:
> I use this abomination called "micro-emacs", which has absolutely nothing to do with GNU emacs except that some of the key bindings are similar.
[0]: https://github.com/torvalds/uemacs
- Starting emacs without any Elisp and only the C-core?
-
Linus thinks emacs is terrible
Then on the other hand he has his own fork of µEmacs: https://github.com/torvalds/uemacs
Co-dfns
-
Co-Dfns v5.7.0
Huh. This is the commit that introduces the register model: https://github.com/Co-dfns/Co-dfns/commit/f89919144f22441f21...
In the compiler, it's working with dense adjacency matrix representations, so this will be at best O(n^2) in whatever the relevant sort of node is (expressions? functions?). "at present is not optimized" seems a bit of an understatement here: I've never heard of these sorts of graph algorithms being possible with good asymptotics in an array style. In practice, I think any value of Co-dfns would be more in the fact that it emits GPU code than that it does it quickly, but this calls into question the value of writing it in APL, I would say (for what it's worth, I believe Co-dfns is still not able to compile itself).
The phrase "allocate all intermediate arrays" seems fairly confusing: what's actually being allocated must be space for the pointers to these arrays and other metadata, not the data of the array itself. As the data is variable-size, it can't be fully planned out at compile time, and I'm fairly sure the register allocation is done when there's not enough shape or type information to even make an attempt at data allocation. This change can only improve constant overhead for primitive calls, and won't be relevant to computations where most of the work is on large arrays. I think it's helpful for Co-dfns in a practical sense, but not too exciting as it only helps with bad cases: if this is important for a user then they'd probably end up with better performance by switching to a statically-typed language when it comes time to optimize.
Constant lifting within the compiler is pretty cool, I'll have to look into that.
-
Tacit Programming
And if anyone wants an absolute masterclass in tacit programming, have a look at Aaron's Co-dfns compiler. The README has extensive reference material. https://github.com/Co-dfns/Co-dfns/
- YAML Parser for Dyalog APL
-
HVM updates: simplifications, finally runs on GPUs, 80x speedup on RTX 4090
This always seemed like a very interesting project; we need to get to the point where, if things can run in parallel, they must run in parallel to make software more efficient on modern cpu/gpu.
It won't attract funds, I guess, but it would be far more trivial to make this work with an APL or a Lisp/Scheme. There already is great research for APL[0] and looking at the syntax of HVM-core it seems it is rather easy to knock up a CL DSL. If only there were more hours in a day.
[0] https://github.com/Co-dfns/Co-dfns
- Co-Dfns
-
APL: An Array Oriented Programming Language (2018)
There are many styles of APL, not just due to its long history, but also because APL is somewhat agnostic to architecture paradigms. You can see heavily imperative code with explicit branching all over the place, strongly functional-style with lots of small functions, even object-oriented style.
However, given the aesthetic that you express, I think you might like https://github.com/Co-dfns/Co-dfns/. This is hands-down my favorite kind of APL, in which the data flow literally follows the linear code flow.
-
Franz Inc. has moved the whole Allegro CL IDE to a browser-based user interface. Incl. all their Lisp development tools. One can check that out with their Allegro CL Express Edition.
Which is, as far as I know, unused. (Similarly the gpu compiler.)
-
What would make you try a new language?
You might be familiar with iKe (grahics), SpecialK (GLSL) and Co-dfns. Also, I am working on bastardized APL for GPU – Fluent. Fluent 1 had backend implemented through Apple Metal Performance Shaders Graph and Fluent 2 has TensorFlowJS backend for now. I care more about having auto differentiation in the lang than running on GPU and do graphics, to be honest.
-
APL9 from Outer Space
Not that I am aware of. I think the closest project is co-dfns[1] which is being developed by Aaron Hsu (he did a presentation as well). It aims to compile a subset of APL so that it can be executed on GPUs for instance, possibly with other backends. I imagine an XLA backend could be possible there.
[1] https://github.com/Co-dfns/Co-dfns
-
Who is researching array languages these days?
Aaron hsu did his dissertation on this topic (compiler, thesis), at indiana university in the us.
What are some alternatives?
GNU Emacs - Mirror of GNU Emacs
BQN - An APL-like programming language
chibicc - A small C compiler
micro-editor - A modern and intuitive terminal-based text editor
ngn-apl - An APL interpreter written in JavaScript. Runs in a browser or NodeJS.
nano-ycmd - Modded GNU Nano using ycmd code completion and IntelliSense. The ycmd code completion support for nano is found in the ymcd-code-completion branch.
dex-lang - Research language for array processing in the Haskell/ML family
SubEthaEdit - General purpose plain text editor for macOS. Widely known for its live collaboration feature.
tigerbeetle - A distributed financial accounting database designed for mission critical safety and performance. [Moved to: https://github.com/tigerbeetledb/tigerbeetle]
quickjs - Public repository of the QuickJS Javascript Engine.
april - The APL programming language (a subset thereof) compiling to Common Lisp.