Awesome, thank you! Is the latest guile-ini release compatible with this version?
Aleix On Fri, Mar 11, 2022 at 11:15 AM Artyom V. Poptsov <poptsov.art...@gmail.com> wrote: > Hello, > > I'm pleased to announce Guile State Machine Compiler (Guile-SMC), version > 0.4.0: > https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.4.0 > > > * What is Guile-SMC? > > Guile-SMC is a state machine compiler that allows to describe finite > state machines (FSMs) in Scheme in terms of transition tables. It is > capable to generate such transition tables from a PlantUML state > diagrams. [1] > > A transition table can be verified and checked for dead-ends and > infinite loops. Also Guile-SMC FSMs gather statistics when they run. > > Guile-SMC comes with a Scheme program called 'smc' -- a state machine > compiler itself. It produces a Scheme code for an FSM from the PlantUML > format. This tool is meant to be called on a PlantUML file when a > program with a FSM is being built (for example, from a Makefile.) > > I'm hoping that it will ease the burden of writing format parsers and > other useful GNU Guile libraries for the community. > > > * User-visible changes > > --8<---------------cut here---------------start------------->8--- > * Version 0.4.0 (2022-03-11) > ** Add FSM profiler > Add =smc profile= command. Currently the profiler allows to measure the > time a FSM spends in each state. > ** Add =guile-standalone= compilation target > This compilation target produces GNU Guile FSM code in a single file > that > does not dependent on Guile-SMC. > > All required Guile-SMC procedures will be copied to the output stream, > and > the extra procedures that are not used in the output code are removed by > pruning. > > Here's an example of an output FSM (without the auxiliary code copied > from > Guile-SMC that normally goes before this procedure): > ** Add =guile-standalone-copy= compilation target > The compiler can be configured in such way that it will copy all the > modules that are needed to run the output FSM so the FSM will not > depend on > Guile-SMC. > ** =smc compile= now accepts =--target= option > This option allows to set the compilation target. Allowed targets are: > - guile > - guile-standalone > - guile-standalone-copy > ** =smc compile= now allows to pass input file as an argument > ** =smc= now handles =--version= option > The state machine compiler now either read input FSM description in > PlantUML format from the standard input or from a file specified as an > argument. > ** Optimize the PlantUML parser > PlantUML parser now about 25% faster. > ** Add new examples > ** Add =smc= man page > ** Update/expand the documentation > --8<---------------cut here---------------end--------------->8--- > > > * Usage examples > > I wrote an INI[2] format parser to test the foundation ideas behind > Guile-SMC from the practical perspective: > https://github.com/artyom-poptsov/guile-ini > > Also I wrote a simple PNG[3] format parser that uses Guile-SMC as well: > https://github.com/artyom-poptsov/guile-png > > Happy hacking, > > - Artyom > > References: > 1: https://plantuml.com/state-diagram > 2: https://en.wikipedia.org/wiki/INI_file > 3: https://en.wikipedia.org/wiki/Portable_Network_Graphics > > > -- > Artyom "avp" Poptsov <poptsov.art...@gmail.com> > Home page: https://memory-heap.org/~avp/ > CADR Hackerspace co-founder: https://cadrspace.ru/ > GPG: D0C2 EAC1 3310 822D 98DE B57C E9C5 A2D9 0898 A02F >