
SolidOak, an IDE written in Rust - neverminder
https://github.com/oakes/SolidOak
======
616c
I know people complain about the negativity on HN, so this is a minor nitpick.
I have been an on-and-off Linux and UNIX user for a while, but ...

> It's just a standalone executable that will run anywhere without being
> installed. See the Releases page for pre-built Linux x64 binaries (you need
> Rust and GTK+ 3.10 or above installed).

Is this not contradictory? Granted, statically linking GTK, 2 or 3, must be
ridiculous, but would this still be considered a standalone binary? Granted, I
think this might be a variant of libc needs to link to and I am just confused,
but I am curious what more knowledgeable people think.

Anyway, I am not dismissing this project though. It sounds very cool. I might
give it a shot.

FYI to everyone, racer is also a core component of making Rust hacking on
Emacs wonderful, from what I hear. I have yet to be Rustacean.

[https://github.com/phildawes/racer#emacs-
integration](https://github.com/phildawes/racer#emacs-integration)

~~~
jscheel
Well, that, and anywhere realistically means anywhere except the most widely-
used operating system in the world. Of course, the dev has absolutely no
responsibility to provide that, I just thought it was funny.

~~~
ben0x539
Why would you want to run an IDE on Android? Most of those don't even come
with real keyboards!

------
swah
Windows is not supported.... Sublime being on all platforms is what made it so
huge. There are developers on WIndodws machines, and because they like it!

~~~
exDM69
> There are developers on WIndodws machines, and because they like it!

Looks like there's no obstacles in getting this to run on Windows, GTK and all
the other components behind this should run just fine on Windows. It just
takes some effort from a Windows dev to set up builds and port whatever minor
incompatibilities there are.

The problem with Windows is that non-Windows devs don't find supporting that
platform pleasant (to put it mildly) and in my experience, there's a very
limited number of Windows devs who actually contribute back to open source
projects (this may be a cultural thing coming from a proprietary OS).

Additionally, supporting Windows is a bit painful because there isn't as much
free tooling available, e.g. doing automated Windows testing in travis-ci is
not an option AFAIK.

~~~
mdaniel
> ... there's a very limited number of Windows devs who actually contribute
> back to open source projects (this may be a cultural thing coming from a
> proprietary OS). > > Additionally, supporting Windows is a bit painful
> because there isn't as much free tooling available, e.g. doing automated
> Windows testing in travis-ci is not an option

I believe the second influences the first, plus the project maintainer needs
to share the opinion that releasing on Windows is worth the inevitable project
changes required to do so. I have seen more than my fair share of pull
requests sit idle because "meh, can't be bothered".

Regarding the travis-ci item separately, I am hoping that the work that
Vagrant is doing toward being able to provision fresh virtual machine
instances on Windows will provide some hope. I do fully appreciate that just
provisioning them isn't the whole story, but it's a major hurdle IMHO.

------
ivoras
The one thing which nags me about Rust is the amount of what seem like weird
syntax choices, deliberately different from most popular programming
languages.

See e.g. line 14 in
[https://github.com/oakes/SolidOak/blob/master/src/ffi.rs](https://github.com/oakes/SolidOak/blob/master/src/ffi.rs)
:

    
    
        let mut fds : [c_int; 2] = [0; 2];
    

Why not declare the array type as c_int[2]? And why use semicolons instead of
commas?

There are enough such "wtf?" moments that it causes pause and a sense of
weirdness while reading Rust code, if the reader is familiar with other C-like
languages (which is not to say that Rust itself is C-like).

~~~
frewsxcv
[0; 2] and [0, 2] are both valid in Rust, but mean different things.

[http://doc.rust-lang.org/reference.html#array-expressions](http://doc.rust-
lang.org/reference.html#array-expressions)

I suggest learning the language before making an attempt to criticize it.

~~~
ivoras
> I suggest learning the language before making an attempt to criticize it.

I will learn it.

I like the semantics of Rust, it's a thing which needed to be attempted. What
I am suggesting is, that for a language to be popular and accepted in already
existing communities, it should have as little syntactic differences from the
standards already present in those communities (or more elaborate: that things
with similar semantics should have similar syntax). This does not preclude
adding both new semantics and new syntax to the language.

In this case, I think the "target audience" for Rust is the crowd already
familiar with C and C++, and languages (which are in many cases superior to C
and C++) with significant differences such as LISP, Haskell, Erlang are vastly
less popular compared to C, C++, C#, Java, JavaScript.

As a counter-example to my claim I recognize Python, which succeeded even if
it was radically different and even today has some serious issues (for me, it
is its performance and the GIL in CPython). IMO, it succeeded precisely
because it was radically different than mainstream languages before it, so it
didn't cause "mind crosstalk" issues you get when you encounter something
which _seems_ familiar but actually isn't.

Of course, this is inconsequential, it really boils down to arguing about
personal taste and preferences. And even if I am right, if the semantics of
Rust become popular, I'm sure that a more C-like language will evolve from it
(maybe called Crust? :D ). If I am wrong, Rust will live long and prosper as
it is.

~~~
kyllo
The syntax itself is such a low hurdle to learning the language it hardly
merits complaining about, especially given how drastically the Rust core team
has simplified the syntax of the language since its early days. It's not
particularly arcane at all if you've ever used C/C++, Ruby, and perhaps any
ML-family language (SML, OCaml, Haskell, F#) because Rust cherry-picks the
best ideas from each of those languages.

Go is intended to be syntactically very C-like, you may find it more
comfortable than Rust in that regard.

------
killercup
This looks pretty cool. It's nice to see there are working GTK3 bindings for
Rust.

It'll be interesting to see how many IDE features will be implemented.
Currently it seems like a distribution of NeoVim + directory tree + Racer
(Rust Autocompletion).

------
fit2rule
Tried to build it, seems the build is broken:

    
    
        error: could not find native static library `nvim`, perhaps an -L flag is missing?
    

.. guess I'll have a go at fixing this.

~~~
gw
I think this means you don't have a dependency that Neovim needed to build.
Make sure you ran the apt-get commands in the README.

~~~
fit2rule
I did indeed follow the README to a tee .. and on OSX .. so I'm still at a
loss as to what may be wrong.

~~~
gw
The specific build errors won't show because Cargo hides the output. Try
cloning [https://github.com/oakes/neovim](https://github.com/oakes/neovim) and
running `make libnvim` inside it. The errors you get should make it more clear
what dependency is missing.

~~~
fit2rule
Thanks for the tip .. looks like I've got something not quite right with my
busted install, posting the details here in case any other HN users run up
against it:

    
    
        Scanning dependencies of target stable-busted-deps
        [ 93%] Generating usr/lib/luarocks/rocks/stable-busted-deps
        PANIC: unprotected error in call to Lua API   (.../rust/neovim/.deps/usr/share/lua/5.1/luarocks/fs/lua.lua:3    68: cannot open /Users/fit2rule/.cache/luarocks/https___rocks.moonscript.org/manifest-5.1: No such file or directory)
        make[3]: *** [usr/lib/luarocks/rocks/stable-busted-deps] Error
    
    

.. seems like a conflict resulting from having lua5.2 installed alongside
lua5.1 .. if I figure it out, I'll update.

Update: for reasons I don't understand, the manifest-5.1 file is .zip'ed up ..
so:

    
    
        $ cd /Users/fit2rule/.cache/luarocks/https___rocks.moonscript.org/
        $ unzip manifest-5.1.zip
    

.. fixed the issue, and now libnvim can be built properly. Seems like there
are issues with having lua5.2 and lua5.1 side by side as maintained by
homebrew on OSX .. so if others run into this issue, there's the facts.

Update2: SolidOak still refuses to build, this time getting further but still
reporting build failure:

    
    
        Compiling glib-sys v0.1.0 (https://github.com/oakes/rgtk#01b611cf)
        Build failed, waiting for other jobs to finish...
    
    
    

EDIT: Never mind, I neglected to set PKG_CONFIG_PATH again in a new shell
session, as per the README .. I'm now running SolidOak just fine and
proceeding to use it to learn me some rust ... So .. leaving all the above for
historical purposes ..

------
pnathan
This is really cool! I'll have to check it out later today.

Although, ahem, I expect that I'll just integrate Racer into emacs. :-)

