jonesforth
kakoune
jonesforth | kakoune | |
---|---|---|
41 | 110 | |
968 | 9,589 | |
- | - | |
0.0 | 9.7 | |
about 1 year ago | 7 days ago | |
Assembly | C++ | |
- | The Unlicense |
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.
jonesforth
- Konilo: A personal computing system in Forth
-
Thinking Forth: A Language and Philosophy for Solving Problems [pdf]
Cool. Here are some other resources that I've encountered along the way of learning Forth:
- JonesForth: https://github.com/nornagon/jonesforth/blob/master/jonesfort...
This is legit a text that goes the an x86 Forth implementation. Actually, it's just an implementation with really extensive comments. That said, including whitespace and comments, it's just 2000 lines and the pedagogy is excellent. Highly recommended for anyone who would rather see behind the curtain before picking up a larger text.
- SmithForth: https://dacvs.neocities.org/SF/
So, Smith decided to hand-write a Forth directly in x86-64 opcodes (well, the corresponding ascii hex bytes). It's incredibly slim and enlightening how you can bootstrap a language in just a couple hundred bytes or so.
This project actually inspired me to really learn the x86-64 architecture, so I ended up hand-decompiling the SmithForth binary instead of going through his commented implementation. Hand-decompilation is an absolutely fascinating exercise. You learn all about ELF structure, opcode encodings, and actually start to see the gaps where microarchitectural details shine through. Highly recommended for any hacker that really wants to grok low level details.
- Mecrisp: https://mecrisp.sourceforge.net/
An amazingly fast Forth implementation for MSP430, ARM, RISC-V, MIPS, and some FPGAs. This gave me one really nice understanding of Forth as
A REPL into your hardware!
-
Problem Running JonesFORTH
I've git-cloned JonesFORTH (https://github.com/nornagon/jonesforth/blob/master/jonesforth.S) and achieved to compile it (i.e. run make w/o an error. When I start the executable, it presents me with an empty line, and when I say BYE, it says PARSE ERROR: bye.
-
Ask HN: Where do I find good code to read?
Is there any particular language you're looking for? I've found some languages hideous until I understood them and could appreciate their respective graces. Off the top of my head the I can think of a couple.
The first is Jones Forth (https://github.com/nornagon/jonesforth), start with jonesforth.S and move into jonesforth.f. I really enjoyed following along with it and trying my hand at making my own stack based language.
The other is Xv6, a teaching operating system from MIT (https://pdos.csail.mit.edu/6.828/2021/xv6.html), not all the code or implementations are top notch but it shows you non-optimized versions (just because they're simple and more readable) of different concepts used in OS design.
If you're interested in the embedded world, there is a really neat project I've been following that feels a more structured and safe (as in fault-tolerant) while still staying pretty simple (both conceptually and in the code itself): Hubris and Humility (https://hubris.oxide.computer/).
-
Dusk OS: 32-bit Forth OS. Useful during first stage of civilizational collapse
Very low hardware requirements, so basic industrial control at the level where you'd otherwise use an Arduino or so but on scavenged hardware. Forth is ridiculously simple to get an implementation running.
https://github.com/nornagon/jonesforth/blob/master/jonesfort...
Is a nice starting point. It's obviously not as compact as say 'Brainfuck' but it is far more versatile.
-
Making my own forth implementation
OP mentioned jonesforth, but linked to a nasm port of it. Which is probably good it’s just that the documentation in the comments with ascii art doesn’t look right on my screen. So here’s a more common repo: https://github.com/nornagon/jonesforth
-
Struggling with looping constructs, BEGIN WHILE REPEAT
Rip the asm macros for the basic FORTH words out of this and then embed them in a C binary, statically linked with your favourite libs for whatever task. Although I haven't tried this yet, I'm planning on doing it with ncurses for my own Roguelike. From there, if you can convert the function calls and your parameters down to raw numbers, you can send instructions to ncurses or whatever other API you like, directly from a FORTH stack.
- I'm wondering why so few forth microcontoller tutorials are out there?
-
replace jonesforth links to the left by proper link
or the mirror of this site in github: https://github.com/nornagon/jonesforth
- Languages to implement in space-constrained environments
kakoune
- Multi-cursor code editing: An animated introduction
-
Helix: Release 24.03 Highlights
Helix's modal editing is based on Kakoune's modal editing which is like an evolution to Vim's modal editing. You can think of it as being always in selection (visual) mode. https://github.com/mawww/kakoune?tab=readme-ov-file#selectio...
- Kakoune
- Kakoune Code Editor
-
A tutorial for the Sam command language (1986) [pdf]
And while it doesn’t use the sam language precisely, I think in the broader “postfix Vi with visual feedback” category Kakoune[1] also warrants mentioning. The command language, in my experience, feels much more logical than that of Vis coming from a blank slate (things might be different if you come from Vim, but even when I used Vim regularly I never used the editing language that much exactly because I could never remember the damn thing).
And having mentioned Kakoune it’d probably be unfair to then not mention Helix[2]. It has a very similar editing language, but it’s a fairly anti-Unix everything-bolted-in affair on the inside (“everything works out of the box” being the advertising take) compared to Kakoune’s Acme-inspired no-scripting scripting (there’s an ex-style command to exec a user program that can then drive the editor over stdio RPC, a set of hooks, and that’s it). So if you’ve come for the Plan 9 feels, I don’t expect Helix to be that appealing. It’s still a good editor, nevertheless.
[1] https://kakoune.org/
[2] https://helix-editor.com/
-
What is the best book for complete beginner?
You can take a look at kakoune. The source code (excluding documentations, test cases, customizations etc.) is less than 40k. It is, IMHO, a show case of a C++ project in use.
-
Why Kakoune
> I wonder if the author has ever heard of vis[0]
Yes.
https://github.com/martanne/vis/wiki/Differences-from-Kakoun...
https://github.com/mawww/kakoune/wiki#onboarding
> which imho fulfills far better each one of those premises
Not very motivated for such a harsh critic..
-
Understanding the Origins and the Evolution of Vi and Vim
I've been using Vim for years, but if there was one thing I could change, it would be the verb-noun order. The Kakoune[1] editor behaves mostly like Vim, but where Vim has `dw` as "delete word", Kakoune has it backwards: `wd`.
It might sound minor, but by placing the range first, Kakoune can give a preview of what will be changed. The longer or more complicated the command, the more this feature shines.
Strictly better as far as I know. A shame my muscle memory, and all default installations, are still stuck with Vim.
[1] https://kakoune.org/
- Ask HN: Where do I find good code to read?
-
Helix editor: Make HTTP requests and insert JSON
Helix is a postmodern text editor built in Rust built for the terminal. It is inspired by Kakoune, another Rust based text editor. Helix has got multiple selections, built-in Tree-sitter integration, powerful code manipulation and Language server support.
What are some alternatives?
stoneknifeforth - a tiny self-hosted Forth implementation
helix - A post-modern modal text editor.
factor - Factor programming language
micro-editor - A modern and intuitive terminal-based text editor
durexforth - Modern C64 Forth
vis - A vi-like editor based on Plan 9's structural regular expressions
tinyrenderer - A brief computer graphics / rendering course
Yuescript - A Moonscript dialect compiles to Lua.
sectorforth - sectorforth is a 16-bit x86 Forth that fits in a 512-byte boot sector.
doom-emacs - An Emacs framework for the stubborn martian hacker [Moved to: https://github.com/doomemacs/doomemacs]
SavjeeCoin - A simple blockchain in Javascript. For educational purposes only.
neovim - Vim-fork focused on extensibility and usability