All Projects → area9innovation → Flow9

area9innovation / Flow9

Licence: other
Platform for safe, easy and productive programming of complex, multi-platform apps with a modern user interface

Programming Languages

c
50402 projects - #5 most used programming language
flow
126 projects

Projects that are alternatives of or similar to Flow9

Phplrt
PHP Language Recognition Tool
Stars: ✭ 127 (-75.58%)
Mutual labels:  compiler, library
Jurassic
A .NET library to parse and execute JavaScript code.
Stars: ✭ 590 (+13.46%)
Mutual labels:  compiler, library
Lfortran
Official mirror of https://gitlab.com/lfortran/lfortran. Please submit pull requests (PR) there. Any PR sent here will be closed automatically.
Stars: ✭ 220 (-57.69%)
Mutual labels:  compiler, library
Tiramisu
A polyhedral compiler for expressing fast and portable data parallel algorithms
Stars: ✭ 685 (+31.73%)
Mutual labels:  compiler, library
Compiler
The Hoa\Compiler library.
Stars: ✭ 458 (-11.92%)
Mutual labels:  compiler, library
Garland View
≡ GarlandView seamlessly transitions between multiple lists of content. Swift UI library made by @Ramotion
Stars: ✭ 496 (-4.62%)
Mutual labels:  library
Pycnn
Image Processing with Cellular Neural Networks in Python
Stars: ✭ 509 (-2.12%)
Mutual labels:  library
Roslynclrheapallocationanalyzer
Roslyn based C# heap allocation diagnostic analyzer that can detect explicit and many implicit allocations like boxing, display classes a.k.a closures, implicit delegate creations, etc.
Stars: ✭ 492 (-5.38%)
Mutual labels:  compiler
Awesome Tensor Compilers
A list of awesome compiler projects and papers for tensor computation and deep learning.
Stars: ✭ 490 (-5.77%)
Mutual labels:  compiler
School Management System
Another School Management System
Stars: ✭ 520 (+0%)
Mutual labels:  library
Telethon
Pure Python 3 MTProto API Telegram client library, for bots too!
Stars: ✭ 5,805 (+1016.35%)
Mutual labels:  library
Vital.vim
A comprehensive Vim utility functions for Vim plugins
Stars: ✭ 504 (-3.08%)
Mutual labels:  library
Jot
Jot is a library for persisting and applying .NET application state.
Stars: ✭ 496 (-4.62%)
Mutual labels:  library
Iconfontcppheaders
C, C++ headers and C# classes for icon fonts: Font Awesome, Fork Awesome, Material Design, Kenney game icons and Fontaudio
Stars: ✭ 509 (-2.12%)
Mutual labels:  library
Langcraft
Compiler from LLVM IR to Minecraft datapacks.
Stars: ✭ 495 (-4.81%)
Mutual labels:  compiler
Pymunk
Pymunk is a easy-to-use pythonic 2d physics library that can be used whenever you need 2d rigid body physics from Python
Stars: ✭ 513 (-1.35%)
Mutual labels:  library
Red
Red is a next-generation programming language strongly inspired by Rebol, but with a broader field of usage thanks to its native-code compiler, from system programming to high-level scripting and cross-platform reactive GUI, while providing modern support for concurrency, all in a zero-install, zero-config, single 1MB file!
Stars: ✭ 4,725 (+808.65%)
Mutual labels:  compiler
Cordova Weinre
Mirror of Apache Weinre
Stars: ✭ 506 (-2.69%)
Mutual labels:  library
Libfsm
DFA regular expression library & friends
Stars: ✭ 512 (-1.54%)
Mutual labels:  compiler
Dynamix
🍥 A new take on polymorphism in C++
Stars: ✭ 504 (-3.08%)
Mutual labels:  library

flow

flow is a platform for safe, easy and productive programming of complex, multi-platform apps with a modern user interface.

The flow platform includes

  • The flow programming language, a safe, functional strongly-typed programming language
  • The flowc compiler, an incremental compiler for multiple targets
  • The flow runtime & standard library, which provides a complete cross-platform library including mature UI components

flow has production quality targets for:

  • HTML through JS
  • iOS
  • Android
  • Windows, Mac, Linux

Hello world

import runtime;

main() {
	println("Hello world");
}

Meet flow

  • flow is a simple, functional language in the ML family
  • C-family syntax
  • Strongly typed, polymorphism, subtypes
  • Designed to look like other languages and be easy to learn
  • Minimalistic to reduce complexity and ease porting to new platforms
  • Same code compiles and runs on HTML5, iOS, Android, Windows, macOS, Linux
  • Production quality. Software used by millions of users
  • Pixel precision—high-design, responsive UI on all platforms with identical code
  • Complete standard library written in flow itself, with natives for each backend
  • Extensive UI toolkit based on Google Material Design guidelines
  • UI toolkit based on Functional Reactive Programming

Installation

  1. Make sure you have Git LFS installed.

  2. Check out this repository with something like

    git clone https://github.com/area9innovation/flow9

  3. Add flow9\bin to your path.

  4. Install Python 3, and make sure it is in your path.

  5. Install OpenJDK 11 or newer. It must be the 64 bit version. For example: https://jdk.java.net/java-se-ri/14

  6. Cd into the flow9 directory and compile and run the first program:

    c:/flow9> flowcpp demos/demos.flow

If this does not work, make sure you have Git LFS installed. You have to reclone the flow9 repository after installing Git LFS, or use git lfs pull.

See demos/demos.flow to read the code for this example.

Documentation

See doc/readme.markdown for further documentation about the language and platform, including more details on how to get started.

See flow9 Wiki for documentation on the Material library and main UI building blocks.

Community

There is a blog about flow here:

https://flow9.org/

There is a chat in Telegram for discussions about flow:

https://t.me/joinchat/LhUedxYVLN25Eu9XNo93yQ

There is a mailing list group in groups.io about flow as well:

https://groups.io/g/flow

Your first message requires moderation approval to avoid spam.

Tooling

  • flowc is the current compiler, written in flow itself. See tools/flowc. Can work as a compile server.
  • flow is the original compiler, written in haxe. See tools/flow
  • Single-step debugger using gdb protocol (see platforms/qt)
  • Profiler for time, instructions, memory, garbage collection
  • JIT (just-in-time) compiler for x64, interpreter for ARM and others
  • Compiles to C++ and Java for performance-critical code, typically server side
  • IDE/Code editor support for VSCode, Sublime Text, Kate & others
  • Mature PEG parser generator. See doc/lingo.markdown

Folders

  • bin - binaries for the compiler and related tools
  • debug - code for the debugger and profiler
  • demos - a demo program showing how the UI library can be used
  • doc - documentation of the language and libraries
  • lib - the flow standard library
  • platforms - the flow runtime platforms source code
  • resources - integrations with VS code (recommended), Sublimetext and more
  • sandbox - contains hello world
  • tools - the compiler and processor for rendering fonts
  • www - required files to be exposed by the web-server for running flow programs online
  • www_source - the source files of some of the files in the www folder

License

The flow compiler is licensed under GNU General Public License version 2 or any later version. The flow standard library is released under the MIT license. For the license of other components, see LICENSE.txt.

Name

flow was started in 2010. This predates the 'flow' typechecker from Facebook. Thus, we elect to keep the name, since it came first, is a full platform and the risk of confusion seems small. However, should the need arise, then flow9 can also be used to refer to this language.

History

  • August 2010: The very first program ran on Flash & HTML5
  • November 2013: First app approved in iOS store
  • April 2014: First app approved in Android PlayStore
  • November 2015: Flash was retired, completely migrated to HTML5
  • January 2016: Material guidelines implemented
  • November 2016: JIT for x64 was added
  • May 2018: Self-hosted compiler written in flow itself
  • April 2019: Initial open source release
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].