Skip to content

Commit bbc7f4a

Browse files
committed
Updated readme
1 parent 72643b5 commit bbc7f4a

File tree

1 file changed

+47
-47
lines changed

1 file changed

+47
-47
lines changed

README.md

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,75 @@
11

2-
# Frame Language Transpiler v0.10.0
2+
# Frame Language Transpiler v0.11.0
33

4+
This project contains the code for building the Frame Language Transpiler - the **Framepiler**. The Framepiler is written in Rust and transpiles Frame specification documents into Python (more languages to come) as well as
5+
UML diagrams.
46

5-
Frame is a language for designing systems. It is easy to learn and can generate both UML documentation as well as code in 8 programming languages:
7+
## Frame Language Documentation
68

7-
* C++
8-
* C#
9-
* GDScript
10-
* Go
11-
* Java
12-
* JavaScript
13-
* Python
14-
* Rust
9+
To learn more about the Frame language, please find Frame's official documentation on [Read the Docs](https://docs.frame-lang.org).
1510

11+
## New in Recent Releases
1612

17-
## Purpose
13+
For details, see the [Release Notes](https://github.com/frame-lang/frame_transpiler/releases).
1814

19-
This project contains the code for building the Frame Language Transpiler - the Framepiler. The Framepiler is written in Rust and transpiles Frame specification documents into 8 programming languages (more to come) and UML documentation.
15+
### Frame v0.11.0
2016

21-
## Documentation
17+
Frame v0.11.0 brings a lot of exciting additions to the Frame language, adding both power and standardization to the notation. In addition, the transpiler now can read from stdin as well as still accepting file paths as in the past. This enables improved CI/CD processes involving Frame.
2218

23-
You can find the documentation on [Read the Docs](https://frame-transpiler.readthedocs.io/en/main/index.html).
19+
#### New Language Features and Updates
2420

21+
**Functions** -
2522

26-
## New in Recent Releases
23+
With the introduction of functions to the Frame syntax, developers can now easily build simple Frame programs.
24+
Currently the syntax only permits a single **main()** function. The **v0.12** will permit general
25+
use of an unlimited number of functions.
2726

28-
For details, see the [Release Notes](https://github.com/frame-lang/frame_transpiler/releases).
27+
See [Frame Functions](https://docs.frame-lang.org/en/latest/intermediate_frame/functions.html) for more information.
2928

30-
### Frame v0.10.0
29+
**System Controller Instantiation** -
3130

32-
Frame v0.10.0 brings a lot of exciting additions to the Frame language, adding both power and standardization to the notation. In addition, the transpiler now can read from stdin as well as still accepting file paths as in the past. This enables improved CI/CD processes involving Frame.
31+
With the introduction of Frame functions, developers can now create real Frame programs and instantiate
32+
and control Frame systems. This capability allows for full control over system initialization of state
33+
parameters, start state parameters and domain variables.
3334

34-
#### New Language Features
35+
See [Frame Systems](https://docs.frame-lang.org/en/latest/intermediate_frame/systems.html#system-with-no-parameters).
3536

36-
Note: The new language features are now supported in Golang, Javascript, Python3. Other languages will be supported in coming releases.
37+
**Operations** -
3738

38-
* **Compartments** - v0.10 formalizes the idea of **state closures** called *Compartments*. Compartments are data structures that hold a state's local data as well as other metadata enabling new advanced features like *Event Forwarding* (see below).
39-
* **Deferred transitions** - deferred transitions address challenges with the previous approach of executing a transition immediately when called. Each immediate transition makes a function call and under certain situations, can blow up the stack if too many occur before returning to the caller. Deferred transitions avoid this situation and enable Frame controllers to make any number of sequential transitions. This architecture change enables Frame controllers to be launched as background daemons that run indefinitely until stopped as well as to be used to solve iterative problems.
40-
* **System parameters** - system parameters enable initializing the system in a more standardized, flexible and direct manner. This includes syntax for setting the start state parameters, the start state's enter parameters as well as override domain variable initialization. This change normalizes the start state to behave like all other states in the machine.
41-
* **Event forwarding** - event forwarding syntax enables passing events from one state to another. This capability enables system designers to easily receive events in one state and forward them on to other states that can handle them appropriately.
42-
* **Persistance** - A new system attribute enables code generation for Marshaling and Unmarshaling system data as JSON.
39+
Frame operations are publicly accessible methods that bypass the state machine and allow privileged access to the
40+
system domain data. In addition, operations can optionally be designated as **static**, enabling
41+
systems to provide libraries of associated functionality for complex or repetitive system management routines.
4342

44-
#### Stdin support
45-
The CLI has been updated to support stdin:
43+
See [Frame Operations](https://docs.frame-lang.org/en/latest/advanced_frame/operations.html)
4644

47-
`framec -language rust < HelloWorld.frm > HelloWorld.rs`
45+
**Enums** -
4846

49-
or
47+
Frame now supports system enumerated types.
5048

51-
`cat HellowWorld.frm | framec -language golang > HellowWorld.go`
49+
See [Frame Enumerated Types](https://docs.frame-lang.org/en/latest/intermediate_frame/enums.html).
5250

51+
**Loops** -
5352

54-
## Resources
53+
Frame now supports two types of loops:
5554

56-
The Frame project is still early days but there are some resources and communities to help. You can now download [VSCode](https://marketplace.visualstudio.com/items?itemName=frame-lang-org.frame-machine-maker) and [Atom](https://atom.io/packages/frame-machine-maker) extensions to work with Frame in these popular free development applications.
55+
1. For-like loops
56+
2. Infinite loops
57+
58+
See [Frame Loops](https://docs.frame-lang.org/en/latest/intermediate_frame/loops.html).
59+
60+
61+
## Resources
5762

58-
An [online version of the Framepiler](https://framepiler.frame-lang.org) is also available and provides examples and links to other resources. You can learn more about the Frame language at [frame-lang.org](https://frame-lang.org) as well as find general resources about programming with automata at Reddit ![re](https://www.google.com/s2/favicons?domain_url=https://reddit.com) on the [r/statemachines](https://www.reddit.com/r/statemachines/) subreddit.
63+
The Frame project is still early days but there are some resources and communities to help. You can download the [VSCode](https://marketplace.visualstudio.com/items?itemName=frame-lang-org.frame-machine-maker) extension to develop
64+
Frame programs on your desktop or experiment with Frame online at the [Frame Playground](https://playground.frame-lang.org). You can learn more about the Frame language using the [online documentation ](https://docs.frame-lang.org) as well as find general resources about programming with automata at Reddit ![re](https://www.google.com/s2/favicons?domain_url=https://reddit.com) on the [r/statemachines](https://www.reddit.com/r/statemachines/) subreddit.
5965

60-
Communities exist at [Gitter](https://gitter.im/frame-language/community) and [Discord](https://discord.com/invite/CfbU4QCbSD).
66+
There is also a [Discord](https://discord.com/invite/CfbU4QCbSD) channel to connect with other Frame enthusiasts.
6167

6268
### Frame Examples
63-
The [Framepiler](https://framepiler.frame-lang.org/example/aHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZnJhbWUtbGFuZy8wZGFmMDMzOGU0YTkyYjc1NWViMTQ2NGM3YzVjMTM3Zg==) itself has a number of examples baked into it but I also have started a [Gitter Frame Examples](https://gitter.im/frame-language/frame-examples) channel for contributions. The Framepiler supports links to Gists so please create and share!
6469

65-
The [Frame Solution Depot](https://github.com/frame-lang/frame_solution_depot) is a Github repo and growing body of examples and test specifications. This is useful in conjunction with the [VSCode](https://marketplace.visualstudio.com/items?itemName=frame-lang-org.frame-machine-maker) and [Atom](https://atom.io/packages/frame-machine-maker) extensions.
70+
The [Frame Solution Depot](https://github.com/frame-lang/frame_solution_depot) is a Github repo and contains a growing body of examples and test specifications.
6671

67-
## Bugs and Problems
72+
## Reporting Bugs and Problems
6873

6974
For now please report issues to the [Gitter Bug Channel](https://gitter.im/frame-language/bug-reports) while we get a better system in place. If you have a recommendation please let me know there!
7075

@@ -81,20 +86,15 @@ These instructions will get you a copy of the project up and running on your loc
8186
2. Navigate to the framepiler/framec directory.
8287
3. Type `cargo build`.
8388
3.a You will see a bunch of warnings. Apologies but this is pre-alpha code.
84-
4. Type `./target/debug/framec ../examples/HelloWorld.frm c_sharp`.
89+
4. Type `./target/debug/framec ../examples/HelloWorld.frm python_3`.
8590
4.a You should see a base class for a Frame controller generated to stdout.
8691
5. If you want to generate a release build:
8792
5.a Type `cargo build --release`
88-
5.b Type `./target/release/framec ../examples/HelloWorld.frm c_sharp`
93+
5.b Type `./target/release/framec ../examples/HelloWorld.frm python_3`
8994
6. You now have working debug and release Framepilers. Congratulations!
90-
7. You can try 6 other languages + Plant UML. Replace the `c_sharp` above with any of these:
91-
7.a `javascript`
92-
7.b `cpp`
93-
7.c `gdscript`
94-
7.d `java_8`
95-
7.e `plantuml` (try output at [PlantUml site](http://www.plantuml.com/))
96-
7.f `python_3`
97-
7.g `rust` (experimental - only partially implemented)
95+
7. You can try 6 other languages + Plant UML. Replace the `python_3` above with any of these:
96+
7.a `python_3`
97+
7.b `plantuml` (try output at [PlantUml site](http://www.plantuml.com/))
9898

9999
#### Linux
100100

0 commit comments

Comments
 (0)