From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: "Artyom V. Poptsov" Newsgroups: gmane.lisp.guile.user Subject: [ANN] Guile-SMC 0.5.2 released Date: Fri, 02 Sep 2022 08:43:39 +0300 Message-ID: <87czcewctw.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="33499"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.1 (gnu/linux) To: Guile Users' Mailing List Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Fri Sep 02 07:44:11 2022 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 1oTzTO-0008YR-H9 for guile-user@m.gmane-mx.org; Fri, 02 Sep 2022 07:44:10 +0200 Original-Received: from localhost ([::1]:49240 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oTzTM-00023Y-K1 for guile-user@m.gmane-mx.org; Fri, 02 Sep 2022 01:44:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51434) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oTzT3-00023A-W1 for guile-user@gnu.org; Fri, 02 Sep 2022 01:43:50 -0400 Original-Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]:45910) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oTzT1-0007CC-Q3 for guile-user@gnu.org; Fri, 02 Sep 2022 01:43:49 -0400 Original-Received: by mail-lf1-x136.google.com with SMTP id w8so1712003lft.12 for ; Thu, 01 Sep 2022 22:43:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:message-id:date:subject:to:from:from:to:cc :subject:date; bh=nSlpsy/tPGhvWsVcj8gv5h1Nfb7iPlNRlcB6psQzQPI=; b=KhQFp07hGxt9q/8wZgsRX7DogMuqCQcS/peBgvGXn77/BEG7ZKAo1b+FSriMPpGM+6 0h0qqnywAlCjYOOQgQ2g7m2IGuBlgM6ZGD7ANbpo/W5bLyhACngGOaoWif1WddDJQkuP 0iWVMkbcp+OzsIagcI2ZR5rYGrQFDT6QEtSEqhzh3mk+Zur6+0JrAzJZboSTPfAcs3ce HwP60rNVwK+iv8o2rpm89BVvzoSV13wXq1ka4wj1AdPNLiKiwcbGJXqZQ4dxwNU4rq7U 8W4Vc8dNIuuPseJk3FStkeuT0WrqEVTxfw3c7e5eVsEwiAjc6JiZohUELdA+scVn/Z9l H2Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:message-id:date:subject:to:from :x-gm-message-state:from:to:cc:subject:date; bh=nSlpsy/tPGhvWsVcj8gv5h1Nfb7iPlNRlcB6psQzQPI=; b=H5b4Ozmlf5M1ndnvFnVksv52OQRYfu98B7oMsZhOf+SctAjxcAJi3up8KAuHjCaMea ZQ67v3umdZ6TyAsHwJmy0d7rwb1qbJ/qtN+ZqZs1tLHbqM+ElOUvsvw0+AHNFYRbS9Cx 3fSZmIwiUgOt2yMWZNdGewJLgV+J3qX2KSiTdSI5+7PVEyvt8EOiMbmLWyaUWSUqlTbP DFMbmocOshNcHSIq6VPz+lLET4CrKY0Tt0oM+qhxc9Gv0uQV7roqmU/mGyUwCGxaK665 chPPB3sYtUJ3heqMB8I+Hy3km99w3MwDzBgltMopXTkkIbzw7dqUBiDkp/tGaBJZEXqh MANw== X-Gm-Message-State: ACgBeo2uyX8ARYHojoNroX1x+OG4qz6UFAu84s1bpUCsZ0iyQPjKrHQm zJ4oqd5TNHgd4om/XCNbzkJ58+HiKhM= X-Google-Smtp-Source: AA6agR4ZT3hzA5AznK71M9nuqjR4dyYm9laNLT9vXSxu4yTKMxAA3WQG0YGN2nT6u0IOu13c2NFtRg== X-Received: by 2002:a05:6512:3992:b0:493:e8c5:638c with SMTP id j18-20020a056512399200b00493e8c5638cmr10037835lfu.492.1662097424969; Thu, 01 Sep 2022 22:43:44 -0700 (PDT) Original-Received: from elephant ([95.79.23.141]) by smtp.gmail.com with ESMTPSA id bj33-20020a2eaaa1000000b00268c58f580fsm74749ljb.6.2022.09.01.22.43.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Sep 2022 22:43:43 -0700 (PDT) Received-SPF: pass client-ip=2a00:1450:4864:20::136; envelope-from=poptsov.artyom@gmail.com; helo=mail-lf1-x136.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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:18557 Archived-At: --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hello Guilers, I'm pleased to announce Guile State Machine Compiler (Guile-SMC), version 0.5.2: https://github.com/artyom-poptsov/guile-smc/releases/tag/v0.5.2 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 diagrams. [1] Some of the key features: =2D A transition table can be verified and checked for dead-ends and infinite loops. =2D Guile-SMC FSMs gather statistics when they run (steps/transitions); the statistics can be used can be used to compare/analyze FSMs.. =2D 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. =2D 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 independent. =2D 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 =2D-8<---------------cut here---------------start------------->8--- * Version 0.5.2 (2022-09-02) ** Bugfixes *** =3Dsmc context=3D: Add missing =3D(smc core config)=3D to the FSM conte= xt Add missing =3D(smc core config)=3D to the FSM context generated by =3Dsmc = context=3D command. *** =3Dsmc compile=3D: Copy =3D(smc core config)=3D when standalone-copy ta= rget is used Copy =3D(smc core config)=3D when =3Dguile-standalone-copy=3D compiler targ= et is used with =3Dsmc compile=3D command. =2D-8<---------------cut here---------------end--------------->8--- As this is a bugfix release, most of the changelog is the same as for 0.5.0 -> 0.5.1 update: =2D-8<---------------cut here---------------start------------->8--- * Version 0.5.1 (2022-09-02) ** Fix =3Dlog=3D core binding shadowing by =3D(smc core log)=3D ** Allow to set the log driver in Guile-SMC CLI. See the =3D--help=3D for each =3Dsmc=3D action for the description of the n= ew command line options. Implemented log drivers are: =3Dsyslog=3D, =3Dfile=3D and =3Dnull=3D. ** =3Dstderr=3D logging now works with any log driver Updated =3D(smc core log)=3D API now allows to use =3Dstderr=3D logging wit= h any other driver. That is, Guile-SMC will log messages to the =3Dstderr=3D even for = =3Dnone=3D driver is set after =3Dlog-use-stderr!=3D is called with =3D#t=3D. The =3Dstderr=3D logging can be disabled by calling =3Dlog-use-stderr!=3D w= ith =3D#f=3D as the argument. ** PNG parser example now uses =3Dnull=3D log driver That should make building in isolated/restricted environments (like in Guix) easier. ** Guile-SMC tests now uses file log driver Each test suite now logs to a file named =3D-smc.log=3D in= the =3Dtests=3D directory. ** Update the Texinfo documentation =2D-8<---------------cut here---------------end--------------->8--- * Some ideas for the future development =2D Write a PlantUML generator that take a instance and produces a PlantUML state diagram. =2D Add support for other output languages (e.g. C, Common Lisp, ...) =2D 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 networking applications. Any help with this list will be appreciated, and new ideas are welcome! * 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 Happy hacking, =2D Artyom References: 1: https://plantuml.com/state-diagram 2: https://en.wikipedia.org/wiki/INI_file =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----- iQFNBAEBCgA3FiEE0MLqwTMQgi2Y3rV86cWi2QiYoC8FAmMRmAsZHHBvcHRzb3Yu YXJ0eW9tQGdtYWlsLmNvbQAKCRDpxaLZCJigL5VdB/4g7Zaz9Ue6e4YFK5vW23z5 BHOFn4qa0DaNsptou90kl34toJa3eTmN4YAVA9IKjRKj7k+qdEtKa3GmlBk8LWzG K+km6VBTJKuHvsSNGQ7bWSlJnET82WWoxg2tsbQmYLKg6M/YX0i2+ZpMHlg7GAoa rT6YA4mbnh+3wi4QbwKbPztVpO6bxOOU3A5c8RHoh3oDET8Ne0HCp53EjUJOUPAy l/kSofo3KJNAAj34t+iQypBryOxPF2zBI0lb3rQ+P3/ykNzLd2PwVlhyURE5HBJ0 fRO6+VaIxjTxmWHAw24+eWhRtLMe1e9e6bkpMkZrwrz+ljouZbXsmZJKUK1rZkeM =B08l -----END PGP SIGNATURE----- --=-=-=--