1 posts / 1 project
Raven - A fast IDE for Golang
1 year, 2 months ago Edited by bh on June 21, 2018, 5:25 p.m.
Raven is a fast IDE for Golang, designed to be as performant as a video game. It's written in C++ with a custom OpenGL renderer, and currently runs at about 500 FPS.
Download link here. Currently only works on MacOS. On startup, select the folder you want to work in, then:
Vim keybindings are mostly working. You can get around.
Many existing IDEs are slow and bloated, use 200 MB of memory, and lag every few seconds. There is no good reason for this to be the case. Raven is an attempt to start over and design a code editor from scratch, containing the essential features programmers actually need -- a text editor with (complete) vi keybindings, code completion/navigation, integrated debugger, autorefactor, boilerplate generation -- in a fast, seamless, integrated, batteries-included software package. It starts up instantly, almost never lags, and tries to assist your thought process instead of interfering with it.
Not A Text Editor
Raven is an IDE, not just a text editor, because code editing is a superset of text editing that requires a specialized power tool with code-aware capabilities. It's possible to program in Vim or even a dumb notepad, but this is like cooking everything with a rice cooker, or cutting everything with a fruit knife.
I want to avoid starting as a text editor and then expanding featurewise through plugins to become an IDE, because I don't think that works. It's hard to write great, performant software when you only have access to an API instead of the full stack (most IDE-style plugins end up just wrapping third-party tools like clang). Plus I think the whole premise of plugins is kind of flawed: important features should have first-class support, and unimportant ones can probably be excluded; giving users options about unimportant things just degrades their experience.
I will add a plugin system, but it'll be a configuration system that happens to be Turing complete, and serve mostly as a measure of user dissatisfaction. If I see users repeatedly hacking something together, I'll try to add it to core.
Currently in alpha. Trying to reach a point where I can efficiently write Go apps and spend most of my time in the IDE. This means:
Right now I've got ~6 kloc containing half of a bad vim implementation, syntax highlighting, a file explorer, ctrl+p. Next goals are writing a Go parser (which gets us all our code-aware features), integrating LLDB/Delve (writing a debugger is currently too hard for me), and fixing all the bugs in the vim implementation.
Raven is written mostly from scratch, with only single-header libraries except GLFW, no STL, one giant call to malloc, then custom memory all the way down. I'm starting with Go because it's a simple, well-defined language with a limited feature set and one way to do everything. After that succeeds I'll expand languagewise.
Raven - A fast IDE for Golang
1 year, 2 months ago
It's missing Sparkle.framework in the bundle, so it crashes on startup:
Also, I'd suggest code signing using developer ID to avoid the security warning. It's super important that your project is easy to run.