[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ANN] Guile-SMC 0.5.2 released
Artyom V. Poptsov
[ANN] Guile-SMC 0.5.2 released
Fri, 02 Sep 2022 08:43:39 +0300
Gnus/5.13 (Gnus v5.13) Emacs/28.1 (gnu/linux)
I'm pleased to announce Guile State Machine Compiler (Guile-SMC), version
There were some nasty bugs in the 0.5.1 so this is a bugfix release.
* 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
Some of the key features:
- A transition table can be verified and checked for dead-ends and
- Guile-SMC FSMs gather statistics when they run (steps/transitions);
the statistics can be used can be used to compare/analyze FSMs..
- There's an FSM profiler that runs on FSMs trace logs. The profiler
output shows how much time the FSM spends in each state. This can be
useful for optimization.
- The state machine compiler supports three "targets" for compilation: a
regular Guile target where the output FSM depends on Guile-SMC;
"guile-standalone" target that produce an FSM that does not depend on
Guile-SMC; "guile-standalone-copy" where all the required parts of
Guile-SMC are copied alongside with the output FSM to make the code
- Guile-SMC allows to run a FSM on-the-fly with a single "smc run"
command -- see the docs and the examples for more information.
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
* Version 0.5.2 (2022-09-02)
*** =smc context=: Add missing =(smc core config)= to the FSM context
Add missing =(smc core config)= to the FSM context generated by =smc context=
*** =smc compile=: Copy =(smc core config)= when standalone-copy target is used
Copy =(smc core config)= when =guile-standalone-copy= compiler target is used
with =smc compile= command.
As this is a bugfix release, most of the changelog is the same as for
0.5.0 -> 0.5.1 update:
* Version 0.5.1 (2022-09-02)
** Fix =log= core binding shadowing by =(smc core log)=
** Allow to set the log driver in Guile-SMC CLI.
See the =--help= for each =smc= action for the description of the new command
Implemented log drivers are: =syslog=, =file= and =null=.
** =stderr= logging now works with any log driver
Updated =(smc core log)= API now allows to use =stderr= logging with any other
driver. That is, Guile-SMC will log messages to the =stderr= even for =none=
driver is set after =log-use-stderr!= is called with =#t=.
The =stderr= logging can be disabled by calling =log-use-stderr!= with =#f= as
** PNG parser example now uses =null= log driver
That should make building in isolated/restricted environments (like in Guix)
** Guile-SMC tests now uses file log driver
Each test suite now logs to a file named =<test-suite-name>-smc.log= in the
** Update the Texinfo documentation
* Some ideas for the future development
- Write a PlantUML generator that take a <fsm> instance and produces a
PlantUML state diagram.
- Add support for other output languages (e.g. C, Common Lisp, ...)
- Expand the suite of FSM contexts for FSM of different domains. That
is, there's already "char-context" for text processing FSMs and we can
add "binary" context, for example. Or "network" context for writing
Any help with this list will be appreciated, and new ideas are welcome!
* Usage examples
I wrote an INI format parser to test the foundation ideas behind
Guile-SMC from the practical perspective:
Artyom "avp" Poptsov <email@example.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
Description: PGP signature
|[Prev in Thread]
||[Next in Thread]|
- [ANN] Guile-SMC 0.5.2 released,
Artyom V. Poptsov <=