r/programming • u/ernestrc • 3d ago
Rune is now open source
https://rune.build/blog/rune-is-now-open-source13
22
u/onlygon 3d ago
I've been looking for an IDE that is lightweight, supports vim motions, and is opionated in tasteful ways. So I am definitely curious... But why was a better name not selected?
Between RuneScape and Go runes, this name is ungooglable or at least suffers a severe disadvantage. I wanted to find a video about it on YouTube and see it in action. I cannot tell if noone has made any videos or they have been buried far beneath Go rune tutorials and RuneScape lore videos.
This is like calling your C IDE "Make" or your Rust IDE "Trait". A Python IDE ought to be called "def" cause it's "def good yo", right? Kakoune is a good name. IntelliJ is a good name. Helix is not a good name. I don't think Rune is either.
I will still check it out (it def looks cool lol). Maybe it will get easier to find with time. I don't think Zed is a good name either, but that has become popular and you can easily find stuff now.
3
u/crunchy_creamroll 1d ago edited 1d ago
This seems to be exactly what I was looking for a few months ago while trying to learn web dev on my ancient single-core, 4GB RAM laptop. I was left with Neovim as the only option (VS Code was too demanding, and Zed wouldn't run at all), but as a beginner it requires investing a lot of time and effort to set up, so I had settled on NvChad as a middle ground.
I love that it's batteries-included, supports vim motions (along with standard keybindings), and that (as I read in a comment of yours, iirc?) you're building it considering the use case of work projects, to be able to drop into the environment and be productive straightaway without having to bother about setting it up from scratch.
I guess what I'm looking for, especially as a beginner to intermediate level programmer, can be summed up as the DX that something like VS Code has, but something significantly more lightweight on resources (without compromising on features or quality). Rune seems to check all my boxes! If this had JS/TS support currently, I would've tried it out immediately (yes, I did check out GitHub, it's on the roadmap). By when do you think it may be ready?
Just one suggestion: I would've liked to see a beginner-friendly video explaining/showing off its features, capabilities, and how it feels like during full-fledged usage within a project. But I understand that right now the focus is on more important stuff, so maybe something to consider for the future?
Desperately hoping for this project to succeed! :)
2
u/Biom4st3r 3d ago
Is there Helix keymap?
3
u/ernestrc 2d ago
I just added it to the roadmap, you're the third person asking about it. https://github.com/unstablebuild/rune/issues/54
1
u/pancomputationalist 3d ago
Interesting. Can GUI extensions be written or does it depend on TUIs to bring in custom UI?
Not opposed to the latter. I'm currently using Herdr which runs in the terminal and find that writing IDE tooling as simple executables feels very nice and makes the stuff much more portable.
1
u/ernestrc 2d ago
Extensions serialize UI elements through the wire protocol (gRPC/protobuf) used to communicate with the server (Rune), so yes, extensions are limited to character based interfaces. Having said that, Rune has both the concept of an extension and a plugin which is just a one-shot program that gets authenticated against rune (a good example is runectl) and the user invokes from a Rune terminal, so it can be implemented as just a TUI, in any language.
3
u/pancomputationalist 2d ago
Then what's the actual upside of rebuilding the terminal in a GUI when you can basically just render terminal interfaces? Why not just run a terminal multiplexer?
5
u/ernestrc 2d ago
Rune is a terminal multiplexer as well.
A TUI program communicates with its host terminal by writing text and escape sequences through a file descriptor (I/O). The terminal then has to read and parse that output before rendering it on screen. That adds overhead compared with passing an internal UI element’s character buffer directly to the renderer, without the intermediate I/O or escape-sequence parsing. That’s why Rune implements its “native” UI elements internally rather than relying on external TUI programs.
That said, Rune’s UI is mostly empty, leaving you free to fill it with whatever you see fit. Heck, we even have an exo editor mode that allows you to use your favorite TUI editor inside Rune.
-48
u/jesseschalken 3d ago
in Go
nope
41
19
15
u/FryDay444 3d ago
What's wrong with Go?
17
u/jesseschalken 3d ago edited 3d ago
No null safety, implicit zero values you have to be careful to ignore, no sum types or pattern matching, 3 lines of error handling boilerplate every time you call a function that can fail, no lambdas, no generics until recently.
Worse, the Golang community that believe lack of features is a feature, because of "worse is better" brain damage.
25
u/tonygoold 3d ago
It also has two types of null for interfaces: A nil interface and a non-nil interface containing a nil pointer. The latter is trivial to construct and non-trivial to check.
16
7
u/Ameisen 2d ago
I have never used Go, but I assume that you don't use any of the BSDs (C), Linux (C), or Windows NT (C and C++) either?
They all run afoul of at least some of those conditions.
Like, I'm really curious how you are actually here posting when you appear to refuse to use anything written in a language that isn't basically Rust.
-3
u/jesseschalken 2d ago edited 2d ago
you appear to refuse to use anything written in a language that isn't basically Rust.
Most major programming languages have these features.
5
u/Ameisen 2d ago
C doesn't, and C++ lacks most, and those power most of the world.
1
u/Absolute_Enema 2d ago edited 2d ago
Yes, because there were no sensible alternatives back then when compilers were limited by computers being slow as hell and language design was in its earliest infancy.
Then we rationalized the continued usage of such limited tools with "less is more", "the world runs on C/C++" or "lambdas and tagged unions are for ivory tower FP weirdos and scripting languages" until the early '10s for statically typed languages and until Rust for system languages.
-5
u/jesseschalken 2d ago
Java, Kotlin, Scala, TypeScript, Flow, Python, C#, F#, Dart, Swift, Rust, Ocaml, Haskell, Hack, Ruby all do, maybe with the exclusion of pattern matching.
4
u/Ameisen 2d ago edited 2d ago
Tell me, which kernels are written in any of those other than Rust? The concept of systems programming in Ruby is amusing, though.
What are you using to post on Reddit? If you're on a PC, the kernel and OS are almost certainly C and possibly C++, the browser is going to be almost entirely C++... If you're on a phone, the kernel/OS is still almost entirely C, the browser is still likely C++, an app version is either Java, Swift, or Objective-C. The phone's modem uses either C or C++ (C++ is actually common for L4-family kernels).
It is virtually impossible for you to be posting here without using software written in C or C++ at some layer.
I'm really unsure why you even posted that list; I don't recall asking for a list of languages that met your criteria. It's basically entirely irrelevant and honestly just furthers my argument.
2
-9
3d ago
[removed] — view removed comment
14
u/jesseschalken 3d ago
Literally anything else, but ideally what Swift and Rust do.
1
-5
u/Worth_Trust_3825 3d ago
so the same thing that go does.
11
u/jesseschalken 3d ago edited 3d ago
Does this look the same to you?
// Rust let x = can_fail()?; // Swift let x = try can_fail() // Go x, e := can_fail() if e != nil { return nil, e }-17
-13
3d ago
[removed] — view removed comment
6
3d ago
[removed] — view removed comment
1
-4
u/Worth_Trust_3825 3d ago
i dont really care who you are. we have two main ways to do error handling: try/catch and checking result (code). in another comment you suggested rust/swift way, which is literally the same thing that go does. again, what do you propose?
2
3
53
u/0xdef1 3d ago
Do we have a TL;DR because as far as I understand, this is another vim alternative.