Flow9 programming language is now open source
github.com
github.com
Interestingly, the language seems similar in a lot of ways to https://reasonml.github.io/ in that it is an ML-like language with a more C-family syntax with parentheses and braces, that can compile either to idiomatic JS or native code. There's also an in-progress cross platform UI library for Reason using a React-like style https://github.com/revery-ui/revery
It seem that indeed Flow9 is the only thing I'm aware of that provides a great cross platform UI framework. There is Qt which targets desktop and mobile, and there are a whole bunch of JS solutions that target some but not all platforms.
I'm a bit weary of learning the language on its own merits, as it does not really seem to innovate over what I already know, but if I'd had to write a cross-platform app, it's definitely worth considering.
I wish they could build a community around this language at least as successful as OCaml's community is.
It says that Flow apps run everywhere (Android, iOS and the browser via HTML5). Maybe I missed it, but how does it do this? Does it compile to a progressive web app?
I'm curious too since I did a quick browse and there doesn't seem to be any info/docs on generating an APK.
Anybody?
"May cause memory leakege if used unproperly - f.e. not calling unsubscriber functions for so called behaviours. Read the following manual before use :)"
Look at https://github.com/area9innovation/flow9/blob/master/doc/lin....
That's a lot of hoops for something that should probably be a precompiled binary.
Does anyone how / where this is used? If it is in the runtime it would prevent embedded use (inside signed firmware) without making all code GPL..
Which might some people wonder if the use of flow9 in a closed source Android or iOS app is even allowed. Can the end users create a new version of the app with an updated version of the lpgl3 lib AND deploy this library on their device? Normally they can not, but you can provide your binaries and build scripts to be compliant. See also this answer (not by me): https://stackoverflow.com/a/39438539
So in the end only for closed source non user updateable (signed) firmware, the use of LGPL3 is impossible. Think about most TV settop boxes or payment terminals.
[1] https://github.com/area9innovation/flow9/blob/master/demos/d...
- clone asmjit (https://github.com/area9innovation/asmjit.git) into platforms/common/cpp folder first (eventually we'll move to upstream asmjit, we use our copy of this lib yet);
- make sure you have Qt 5.12.0 (or upper) available in your system;
- review paths in QtByteRunner.pro, they're usually fit our needs, but in some cases may require changes;
- run build.sh, it'll produce binary for your system.
Then you'll be able to run flowcpp tool.
- you run flowcpp and feed it with .flow file;
- flowcpp see that it is source file and calls compiler
- compiler produces .bytecode file
- flowcpp executes .bytecode file and runs file you called.
You can call compiler directly with flowc or flowc1 commands.
Cool!
> C-family syntax > Designed to look like other languages and be easy to learn
Uh, what? A functional language is going to be easy to learn because it "looks like other languages"? "C-family syntax" is what makes a language easy to learn? Gee, why didn't I think of that...
Facebook had the same rationale with Reason, so it's not unusual.
https://reasonml.github.io/docs/en/what-and-why
>Reason is not a new language; it's a new syntax and toolchain powered by the battle-tested language, OCaml. Reason gives OCaml a familiar syntax geared toward JavaScript programmers, and caters to the existing NPM/Yarn workflow folks already know.
Also, Reason catch on much?
The motivations behind this language are interesting to me... a strongly-typed functional language focused on cross-platform GUIs could certainly have its niche. That's why it made me sad to see the approach to syntax they decided to take.
"Elixir is more friendly than Erlang" is both subjective and misleading. It's more verbose than Erlang, which to me is not friendly. It has more complex syntax, which to me is not friendly. I don't believe that it has a significantly lower learning curve than Erlang despite its familiarity.
> Flow was conceived almost 9 years ago
Among other things, it has the first implementation of what we would now call "autocomplete" that I know about.
If you're at all intrigued, I made a go at implementing the interface as described here: https://bitbucket.org/oofoe/flow
References at the bottom of the page. I actually contacted the Stanford University Library to get them to send me copies of his journal pages and papers so I could implement it.
Even if Facebook's Flow never existed, the word "flow" is a challenging term to search for and was a poor name for both Flow9 and Facebook's Flow.
Can we get a rap about that?
Slight inconvenience, but not a deal breaker.