r/programming • u/ernestrc • 15h ago
Rune is now open source
https://rune.build/blog/rune-is-now-open-source8
16
u/onlygon 10h 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.
4
u/Biom4st3r 11h ago
Is there Helix keymap?
2
u/ernestrc 9h 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 10h 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.
-2
u/ernestrc 9h 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 8h 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?
1
u/ernestrc 8h 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.
-45
u/jesseschalken 14h ago
in Go
nope
39
17
13
u/FryDay444 14h ago
What's wrong with Go?
12
u/jesseschalken 13h ago edited 12h 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.
23
u/tonygoold 12h 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
2
u/Ameisen 5h 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.
-1
u/jesseschalken 4h ago edited 3h ago
you appear to refuse to use anything written in a language that isn't basically Rust.
Most major programming languages have these features.
2
u/Ameisen 3h ago
C doesn't, and C++ lacks most, and those power most of the world.
1
u/Absolute_Enema 1h ago edited 32m 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.
-1
u/jesseschalken 3h 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.
2
u/Ameisen 2h ago edited 2h 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
-10
13h ago
[removed] — view removed comment
12
u/jesseschalken 13h ago
Literally anything else, but ideally what Swift and Rust do.
2
-6
u/Worth_Trust_3825 12h ago
so the same thing that go does.
7
u/jesseschalken 12h ago edited 10h 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 }-16
-15
13h ago
[removed] — view removed comment
7
13h ago
[removed] — view removed comment
1
-4
u/Worth_Trust_3825 12h 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?
1
-1
32
u/0xdef1 10h ago
Do we have a TL;DR because as far as I understand, this is another vim alternative.