65 comments

[ 0.29 ms ] story [ 38.8 ms ] thread
For anybody else looking for explanation what this particular software does here is its home page: https://luna-lang.org/

It's a sort of WYSIWYG data processing environment.

I am pretty much sure linking [0] would be a better idea. Most of community has no idea what is Luna and why 1.4 version is anyhow important.

[0]: https://www.luna-lang.org

Wow. What a huge difference the GitHub could use some visuals that entice you to wanting to try it, a README on GitHub is as much a marketing page as the official site itself. If you can wow me from a GitHub readme you have me sold. Usually some videos / screenshots help in this regard. I'm definitely going to download this when I get home to experiment with it, seems quite interesting.
Thanks for the feedback! We’ll give our README files a bit of a once-over and see if we can communicate more of the ‘wow’ factor.
Really what usually does it for me is just screenshots or links to videos that I can immedietly click on, at the minimum. You guys have some amazing stuff in your homepage already, maybe something in that spirit that wont take away too much from the technical side you're trying to portray.

Thanks for working on something so awesome, makes me feel like I feel when I watch Cowboy Bebop and watch Ed travel through cyberspace when I see your samples of how the visual aspect of Luna is.

Brilliant! That’s a really great set of pointers - we’ll take those on board!
Also, linking from your GitHub page... it took me a minute to find the link to luna-lang.org. I'm glad I hunted for it!
Looks interesting anyone using this in prod?
We're collaborating with few companies, but we cannot share detailed info just yet. If you are interested in using Luna on production, please let us know and we will provide support for that!
(comment deleted)
I love this dataflow graph! Is there any way of using it in a "headless" mode, i.e. for other data pipeliness (e.g. https://gist.githubusercontent.com/jakubczakon/cac72983726a9... from https://github.com/neptune-ml/steppy).
Unfortunately not! The graph in Luna isn’t an external visualisation of parts of the data flow, but an explicit alternate syntax for the Luna AST. It’s isomorphic to the textual syntax.

It would be possible, perhaps, to use some of the machinery for display to draw other pipelines, but I work on the compiler rather than Luna Studio, so perhaps I’m not the best person to say!

I understand well that this is a graphical representation of the code (and I find it really appealing to have this dual representation, rather than post-host visualization).

Though, as I imagine, such vis is at some point JavaScript code. (And one could potentially re-use this visualization (not - abstraction) tool for showin arbitrary diagrams with data lookups, in this lovely style.)

Oh, I understand what you mean now. My mistake! It is all displayed on Canvas at this point, which does go through JavaScript. We’re actually moving to our own WebGL-based canvas (BaseGL) for performance.
It would actually be nice to have more node visualization toolsets for other projects with visual programming in mind out in the open =)
Ara here! I’m one of the compiler engineers on Luna!

We’ve just released our 1.4 performance update at [0], and Luna is now immeasurably more quick!

I’ll keep an eye on this thread and answer questions where I can!

[0] https://luna-lang.org

Do you plan to release a Web version ?
We’ve been very careful to base the editor on web technologies, and browser-based Luna is definitely on the cards once we finish the new GUI!
I wanted to quickly give it a try on the Mac.

“lunaInstaller” can’t be opened because it is from an unidentified developer.

At least sign the app to remove one more friction point from trying out your tool.

We should be getting both our Mac and Windows developer certificates this week. I’m really sorry for the inconvenience - it should be fixed by the time of the next release.
It'd be nice not have the installer be an Electron app which then downloads something I can't cache/save, but just have the actual app be the download from the main page!
Look nice, any chance to have a light them for the docs? It's really quite straining to read the docs in dark mode.
I have been waiting YEARS for someone to bring the idea of 'zoom' into visual programming. I expect it should be a simple solution to the problem many visual programming systems face where any substantial complexity results in an incomprehensible web of components and connections from different conceptual layers of abstraction all presented at once. This is the first I've heard of Luna, but I'm looking forward to experimenting with it when I get home!
Does Luna have meta-programming capabilities? In particular:

-does it have a templating system?

-can nodes be created and/or connected programatically?

In a couple of words: not yet.

Metaprogramming is definitely on our radar, and we have had some internal discussions regarding it, but it’s not one of the top-priority items right now.

If anyone is wondering why this 1.4 release is a big deal, then check this out: https://cdn.discordapp.com/attachments/407884082521964554/46...

We're seeing about 200x of speedup, so we codenamed it "Rocketship" ;)

To contextualise this, it used to take minutes rather than seconds to load, typecheck and compute this project.
Out of curiosity, what did you do differently in order to get your speedup?
The language core has been completely re-written, almost from scratch, with performance as an explicit goal.
Great! What are the lessons learned? :-)
To be blunt, performance is much more important than you think, even when building a proof of concept. We used the PoC code for much longer than was initially intended, and had we thought about performance from the start we might’ve saved quite a bit of work!
There are some other lessons too, especially regarding Haskell. Basically the sad truth is that if you do not benchmark literally every single line, you can suddenly get MUCH worse performance than expected. Sometimes GHC's strictness analysis does not discover that it can unbox some things and you land in a boxing-unboxing loop or you hit some of optimization bugs (during the work on performance we've reported over 10 GHC bugs and even implemented our custom graph memory manager). So one of the biggest problems that we encountered earlier was that actually the GHC performance is MUCH harder to predict than you think and you have to take extra care of it while building your software. Of course using Haskell pays off in other areas, but performance is tricky.
Thanks for the details. I would love to read still more about it to learn from the experience. E.g., What would be examples of the boxing-unboxing loop. All you have described seems worthy of a more detailed blog article in its own right. :-) Thanks.
This is brilliant. The only way I was able to truly understand `lift` was by seeing this kind of visual flow[1]. Similarly, I'm sure there are other "shapes" that make a lot more sense of things like monads and such. Excited to try this out!

[1]: dotGo 2017 - John Cinnamond - Go Lift https://youtu.be/1B71SL6Y0kA?t=9m32s

Thank you; just had a "a ha" moment too! Very insightful.
Is there any progress/news on Python interop? I would love to use this daily but need to have smooth interop to migrate progressively
The only news I can give you at the moment is that it’s still definitely planned! We’re hoping to work on it once we finish our performance improvement and new GUI work.
Cool! I got in touch on your Discord libraries channel.
Seems a lot like http://tersus.com which is also open-source (and which I last used 10 years ago, so I might be misremembering). Can anyone familiar with both tersus and Luna give a short comparison.
I've not used any of those languages so I might be wrong, but from their description pages, there are two mayor salient differences:

- Tersus doesn't have a textual representation, it's a purely visual language

- Luna shows the data currently being processed besides the visual primitive that handles them.

This second part may be invaluable. I worked with a Tersus-like flow language in the past, and building simple data-processing pipelines was a breeze; but debugging them to add more complex logic was a pain, because inspecting the current state of the graph is quite difficult - in special when there are nested loops.

Hi, I'm trying to install it for windows 10 but I get an error. Anyone else having an issue?
Yep I ran into a 503 twice. It looks like they just forgot to upload a release file.

I sent a message on their discord issue channel.

just to follow up, this was Windows Defender et al blocking download of what it thought was spyware.
As a fan of both visual programming and Haskell, I definitely think this is the future of programming, and I can see it going two ways - A general purpose tool like https://nodered.org with a huge library of plugins or included in a host program as a VM/embedded DSL. Or perhaps both ;) What are the developers plans/thoughts on this?
Luna is very much a general-purpose programming language! We’re working on developing both the language and the libraries ecosystem until you can use it for whatever you’d like.

While data-analysis is our focus at the moment, that isn’t due to any current limitation on Luna the language. We still have more we want to do to the language, but there is nothing stopping you from writing whatever you want in it now!

Looks cool - Considering your data-analysis focus, will you be adding: SQL language interop, Postgres data source component/nodes for functions(critical for me)/ views /tables? Would then become much more interesting.
Can you expand more on what you mean here? We currently have a work-in-progress library for binding to Postgres, but I have the feeling that isn’t quite what you’re getting at.
I've been keeping an eye on Luna for a little while now. It's very interesting but I have to wonder: has anyone built anything substantial in it yet? What was your experience working with it? The last time I tried it out was pre-1.0 and it was too buggy to really feel like I could get work done in it. I hope 1.4 is more stable.
Yes! I've been waiting years for some language designer to notice that code and data shown side-by-side[1] is what makes debuggers and spreadsheets adequate for easy iterative development. We've seen recently a number of code editors featuring "notebook" preview panels, but not a language fully designed around that idea.

"WYSIWYG data processing" is a nice termp to express the concept.

[1] https://luna-lang.org/#Features

Great idea and implementation.

Improvement idea: increase the contrast rate in your website, it was a pain for me to read stuff there. Had to max my Macbook's brightness setting.

Good job! This is very promising indeed
Thank you <3 Btw, please help us with anything you can. We are working hard to bring (spoiler alert!) Luna 2.0 to reality and any help regarding documentation, tutorials, integrating Python / R, libraries in Luna, gui widgets is more than appreciated!
Wanted to check it out. Downloaded the command line installer. Ran it with the 'install' option...

"ConnectionFailure connect: does not exist"

Sigh.

It seems that this problem is connected to firewall / blacklisting. Please contact us and we'll figure out whats happening.
Did nothing on my end other than try again when I saw your reply... and it installed this time.