From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: poptsov.artyom@gmail.com (Artyom V. Poptsov) Newsgroups: gmane.lisp.guile.user Subject: [ANN] Guile-SMC 0.3.0 released Date: Sat, 04 Dec 2021 16:47:57 +0300 Message-ID: <87pmqc7a7m.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="2837"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) To: Guile Users' Mailing List Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Sat Dec 04 14:48:38 2021 Return-path: Envelope-to: guile-user@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mtVP4-0000Zd-9Q for guile-user@m.gmane-mx.org; Sat, 04 Dec 2021 14:48:38 +0100 Original-Received: from localhost ([::1]:36836 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mtVP0-00068f-4D for guile-user@m.gmane-mx.org; Sat, 04 Dec 2021 08:48:34 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:55116) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mtVOa-00068T-H5 for guile-user@gnu.org; Sat, 04 Dec 2021 08:48:08 -0500 Original-Received: from [2a00:1450:4864:20::22a] (port=38669 helo=mail-lj1-x22a.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mtVOY-0000s6-76 for guile-user@gnu.org; Sat, 04 Dec 2021 08:48:08 -0500 Original-Received: by mail-lj1-x22a.google.com with SMTP id p8so11803497ljo.5 for ; Sat, 04 Dec 2021 05:48:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:user-agent:mime-version; bh=QXgUs/HDIvvBQmF2WIjjheshXqJs5ClI+GQEP/K3u+A=; b=Vs+EqtXITdFKH17VyQcbntRG7DwsuH6N5eCb/u4RjxDhwPm5QQi3e1sxJ2TjonXdki 58rCa7VglIngeidxSTlHj13e0ro6VPZkDi2BzQ1B4RHIP2hEpgfmH3cKEToEVk3/pF1x S+pzt6B/7W42O8Nd4iOVgqhqmIK7VV9UzcfOjzFEuZvOYYdnG36NbjlC5pvijDt1mwHV mvUBlLVeFMqaMb7LLMREW/Ra/EmAbsQDnjc4HJSQSwzva/2+64c4nPCD86tGQ5ZE3XUn D0e/hZeIVeHD/eskGS7xNtkAScUOw8pBn3H5OhM4Tw2uQpnWbykykbBfr9AipQqKMz9b tL4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:user-agent :mime-version; bh=QXgUs/HDIvvBQmF2WIjjheshXqJs5ClI+GQEP/K3u+A=; b=hQTyM9JFKqpBjkTMibpPt0/NN5XsElUj+frmu5XHj209x04i3RUjgr6cIy7QBmL8oz bOFg9yOuv19ncrcgGm1rcE3VA4ZSyzTJqgjDG9N/W06S1/MS7FTEPxmKqrUWtVxhoFGs Au1nlS08vmgX8OtFY8pSHbqt3mnxvGoAlTnlRwRxq189F+/MPRQK0nW5KGo/DiOrWNfm 4QTvGJb6DdI2j0/muAqYZYRtlOOlQ3JhiMptDkfAYLKOafhO+KOr+ahwF9GbaNRiTAPV aJPBh20MoaxQS0HvgDhMrchVjQ3MbihZA7Md5nhKygqeOsC0n9vlYqzpzk5u3Jy1FVlq HBiw== X-Gm-Message-State: AOAM531F5OJzzCsqauyZfQfwVoMAMm2oA8TzVkdcu2rknzHRMg/x/2EG tnSAgUcY1AiT1KzlUFADh4ErlsNw21w= X-Google-Smtp-Source: ABdhPJzFPddv3gXVBSBJB9D7YpN6NZld9Fko7fil4pRuiArdZueIa/h/r5c23FmwBzpQlC0gc5lMCQ== X-Received: by 2002:a05:651c:1507:: with SMTP id e7mr25610750ljf.300.1638625679920; Sat, 04 Dec 2021 05:47:59 -0800 (PST) Original-Received: from elephant ([5.164.193.196]) by smtp.gmail.com with ESMTPSA id i18sm764817lfe.186.2021.12.04.05.47.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Dec 2021 05:47:59 -0800 (PST) X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::22a (failed) Received-SPF: pass client-ip=2a00:1450:4864:20::22a; envelope-from=poptsov.artyom@gmail.com; helo=mail-lj1-x22a.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.io gmane.lisp.guile.user:17837 Archived-At: --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hello, I'm pleased to announce Guile State Machine Compiler (Guile-SMC), version 0.3.0: https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.3.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 =2D-8<---------------cut here---------------start------------->8--- * Version 0.3.0 (2021-12-04) ** Bootstrap PlantUML parser by itself Now Guile-SMC uses itself to generate an FSM for PlantUML format. ** =3D(smc version)=3D: New module The module contains information about the current Guile-SMC version. ** Guile-SMC compiler now adds version information to the output file ** Add new context modules There are now =3D(smc context context-char)=3D. This module defines gua= rds for the whole ASCII table. ** Allow to provide custom event sources for FSMs ** Allow to set entry/exit actions for each state ** Use a logger implementation from the Guile-Library ** Order of parameters of guards and actions is changed ** =3D(smc puml)=3D: Improve PlantUML syntax checking ** Guile-SMC now allows to set a FSM description ** =3Dsmc=3D functionality now split between sub-commands ** =3Dsmc=3D now allows to generate and analyze FSM context See =3Dcontext=3D sub-command. ** =3D(smc fsm)=3D: API of =3Dfsm-run!=3D is simplified ** Implement "run" command The =3Dsmc=3D program now has =3Drun=3D command that allows to read and = run a finite-state machine based on a PlantUML description right away. ** Add new tests ** Documentation updated =2D-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, =2D 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 =2D-=20 Artyom "avp" Poptsov 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 --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEE0MLqwTMQgi2Y3rV86cWi2QiYoC8FAmGrcY4ACgkQ6cWi2QiY oC/nwgf/R+ma86WtGp8tOGT6Wuf17ZxJ/43Vn+zlO+H56Y1qOwNj4fgmz/ua4V20 9jg811g2TesAfi0WKtM9p6BTH2UyOOKYH4z1je5Gy7gnymu843RmdeLIAkFFWy1a vYvc+KnaVDShYnznlPxINmZbK8J3jPh0TpkhiXlWZADsgGT5p2iaorr+Ckz9ZgVk OJMJ5xrva75NVg/lbCKEbkm5tgPLzTZvqR+UC4JRHJC8WYTEkSg/bB3c3PEmauZR l5THKCzzO3We5pPhPAhUDjv71wT7gvWsQ5zNDKndTBEYVPrme1l7uckxKoeR3qPD Lu8a7cAPFjCuWz66BWL31GCAcID+yA== =Lp15 -----END PGP SIGNATURE----- --=-=-=--