Fluent programming language

Fluent is under development and is not ready for use yet. The website is gradually filled with content as the project moves forward.

Fluent

A minimalistic language for scripting and metaprogramming

Hackable

You are free to experiment with the language and change it to suit your needs. The core language is so small that you can write your own interpreter in a weekend.

Embeddable

Add Fluent scripting to your application. Write application specific APIs in native language and extend the Fluent interpreter with custom symbols.

Extensible

Many language features can be written in the core language. Language dialects can be shared as libraries.

Portable

Fluent is a high level interpreted language that is intended to be run on any platform.

Declarative

Write scalable and maintainable code in pure concatenative and functional style.

Dynamic

The language is dynamically typed but a static type checker is planned. You are encouraged to write your static analysis tools.

Grammatic

It is as easy to write a parser as writing a function in Fluent.

Homoiconic

One can easily write a Fluent interpreter in Fluent.

Well-defined

The language is built on clear concepts. It is easy to reason about Fluent programs both for humans and for machines.

Spec first

The primary goal of the Fluent project is to provide documentation and a recipe for writing interpreters.

Application ideas

Task automation

Automate repetitive tasks with a simple and powerful language.

Embedded scripting

Customize your application with a scripting language.

M2M communication

Fluent programs naturally communicate via text streams.

Portable logic

Write your application logic in Fluent and translate it to your implementation languages.

Sandboxing

General scripting languages are notoriously hard to sandbox. Fluent is designed with this kind of use in mind.

Persistent processes

Fluent programs can be paused and resumed. A paused program can be serialized to text and stored in a file or a database.

DSLs

Create domain-specific languages for your applications.