From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?Q?Aleix_Conchillo_Flaqu=C3=A9?= Newsgroups: gmane.lisp.guile.user Subject: Re: [ANN] Guile-SMC 0.4.0 released Date: Fri, 11 Mar 2022 11:44:44 -0800 Message-ID: References: <87v8wk7132.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="29965"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Guile Users' Mailing List To: "Artyom V. Poptsov" Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Fri Mar 11 20:46:01 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 1nSlD6-0007cM-V8 for guile-user@m.gmane-mx.org; Fri, 11 Mar 2022 20:46:00 +0100 Original-Received: from localhost ([::1]:45440 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nSlD5-0005a2-Gn for guile-user@m.gmane-mx.org; Fri, 11 Mar 2022 14:45:59 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:56454) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nSlC7-0005XD-Qu for guile-user@gnu.org; Fri, 11 Mar 2022 14:44:59 -0500 Original-Received: from [2607:f8b0:4864:20::632] (port=33376 helo=mail-pl1-x632.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nSlC5-0007yu-Lp for guile-user@gnu.org; Fri, 11 Mar 2022 14:44:59 -0500 Original-Received: by mail-pl1-x632.google.com with SMTP id m2so8551036pll.0 for ; Fri, 11 Mar 2022 11:44:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=uoDhXTgwmjOGUiaI/sT93EIoGgdcY/jiWH2T68oq31k=; b=aLXj+lfjFxzdyYkJTeKia7yT98bWpXaUlYoaPn6I1vBwf36g3vzDEjVbHby+kKTARH Un6RNPJK2OP1hDqJBdbOnNXmRSJFGGw1JeMScompc2Rnw3YZOcH6/OaMKHgZ6BSPJp4Z xe4JeZvaorYs6QtipZpTe6S3EMswz95rwnY2wV9vTc1kbmkbqxbIv6afTuaOItHJQlQe PDhsnYYQp1GGEFYxn34gWwcar75/vRLVKi+Zrtyz3gnIhNV4G+9fZgayHu71SgF+TkBI oM6mLPGooG+HvTJ/JE3Nxo8+r8YEgE3BZl/c0dOVHtopWg/M5B8j+HcE4bMbbcdWITvu uwGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=uoDhXTgwmjOGUiaI/sT93EIoGgdcY/jiWH2T68oq31k=; b=Wd96qSHS4sTQR1Zg9D36ovAl7AvTpDCYKqh0G9K1tyXZN8UR4PVoGbMC6yXpX7SGrW Jdm40pgoKhXtrUHDV9baVxGbZPMlZuxYtRRKjS0T6pu0yGJVNzOMSMcB7NiDrwvjkT9Y wBQOgy7Ag3VcpHHH/AXb5inxHkQTAFQVFbJltm1XuSthN3D1NGIpRiE7VrVO4lkj0WNH R+cSEYcH0RYKSKQF29PoR/y3XFXQgViL4oeV/5UOkjD5jRoIbugtCEdAOM3EkdjTDLau Yw7Fo+O33764MC4YH9sU003sQ5Uf0zbI0NcY6/9JRuaL+Dx6OO/e3v9tn1BiYKAZQ8oD PBJA== X-Gm-Message-State: AOAM532mqBSYGV05MIaYAtYu4sKspmaM4fC9rmn2OyZDz3lPW1MPfBBR ZS/hUVkWUL7TaHQMqsGSwBzZeH6By1xwD6BXzL4= X-Google-Smtp-Source: ABdhPJyG5VCptZtGSBhWcRDDOaovZ3KQJXn6ND5SyWBl9kCZQlSeWjeHdqQyfxFjBgG0ZIZjGcpHTVXreO6LGa5q1Q0= X-Received: by 2002:a17:902:e889:b0:151:a56d:eb8f with SMTP id w9-20020a170902e88900b00151a56deb8fmr11688458plg.142.1647027895452; Fri, 11 Mar 2022 11:44:55 -0800 (PST) In-Reply-To: <87v8wk7132.fsf@gmail.com> X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::632 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=aconchillo@gmail.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, HTML_MESSAGE=0.001, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-Content-Filtered-By: Mailman/MimeDel 2.1.29 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:18192 Archived-At: 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 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 > 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 >