24 comments

[ 6.4 ms ] story [ 66.4 ms ] thread
To prevent 40MB downloads for a REPL, is there a library version of Electron that can be installed globally, so that small scripts can use it to produce full applications?

(My expected response is that Electron and Node are both moving fast enough so that multiple versions may be incompatible. Global libraries tend to work for stable software, so it may be possible in the future for Electron.)

Why do you need to prevent 40MB downloads?
If every package was 40 MB on my computer, my distribution would be 30 GB.

More importantly, these 40 MB of code and resources expand to about 400 MB in memory when the application is running, but a global library wouldn't fix that.

400MB of RAM for a REPL!? That's absurdly high.
The REPL is currently using 20 MB of RAM on my computer, so I don't know what this guy is talking about.
Electron consumes 117MB, npm takes 50MB, and gulp is consuming 114MB, although I don't know how much of this value is shared between the processes (since there are 40+ of them).
>If every package was 40 MB on my computer, my distribution would be 30 GB.

Only if you had installed 750 userland programs. Which are quite a lot. And even then, 30GB for your OS + your third party programs is negligible in even a 265GB flask disk (merely 12% of it).

>More importantly, these 40 MB of code and resources expand to about 400 MB in memory when the application is running, but a global library wouldn't fix that.

Not sure where you got those metrics. Code doesn't "expand" on memory, and binary size it's not a reliable metric of how much memory it will use (a trivial 5 line program that just mallocs can use TB of memory).

For the majority of very large programs, most of the size on disk is assets, not compiled code.

You are correct that code doesn't "expand on memory" but there is no fixed relationship between code size and memory usage. You could certainly write a tiny program that uses a ton of memory pretty easily.
Yeah, I say that: "a trivial 5 line program that just mallocs can use TB of memory".
Well, rather than commenting on download size I'll talk about the program.

This looks really awesome! I've been wanting a nice js repl for a while and this one definitely has a lot of the qualities I was looking for.

Auto complete is very nice. Color syntax looks great. The biggest thing I would like to see is to persist history. I'd love to up arrow through previous sessions.

Overall nicely done!

I was just looking for something like this. How do I load external node modules into the repl? I tried "File->Add module path" but it didn't seem to work for me. Basically, having done an npm install of lodash somewhere, I want to do

  var _ = require('lodash');
in the repl.
You install lodash globally, and can then use the above line to use the module inside repl..
I did the same thing and pointed to a node_modules folder on a project I had. Worked fine for me.
What kind of javascript engine is on this REPL? I tried some ES6 stuff with random success. For example arrow functions work while deconstructing doesn't.
It depends on underlying electron's node version. In version 2, we have preference to enable babel integration to utilize ES2015 features
Looks nice. I'd like to hear how this compares to lighttable from anyone who's used both.
autocompletion is buggy: I wrote:

var fs = require('fs');

then pressed enter. Result:

var fs = require('fs');fs

(fs in the end).

And autocompletion is too agressive. I declared variable `b`` then in new line I entered: `b` and it automatically autocompleted me to `break`.

So I think it's pretty alpha right now, but overall idea is good :) We need better tools :)