Authentication-Results: mail-b.sr.ht; dkim=pass header.d=hagelb-org.20150623.gappssmtp.com header.i=@hagelb-org.20150623.gappssmtp.com Received: from mail-io1-f50.google.com (mail-io1-f50.google.com [209.85.166.50]) by mail-b.sr.ht (Postfix) with ESMTPS id E7C38FF14D for <~technomancy/fennel@lists.sr.ht>; Mon, 18 Jan 2021 23:50:23 +0000 (UTC) Received: by mail-io1-f50.google.com with SMTP id n2so18985062iom.7 for <~technomancy/fennel@lists.sr.ht>; Mon, 18 Jan 2021 15:50:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hagelb-org.20150623.gappssmtp.com; s=20150623; h=user-agent:from:to:subject:date:message-id:mime-version; bh=ygIgAUL/oQe6iMEl2T/YwZY9F46BsfxHQZk2Kdytsng=; b=U6gh/FUP0raVS8d3Dfc/1qUPKHY2il9QLCYvQDqlUvuQQL2RO5BCc7fbwQnCP9p/ms UEQ0FVfsJg87GeXBatoP8bfR8AldIFvGPYCHPrZq2MF4Rs/4yYy9V3QlZWJDuREmXs2m E3Jplj1GZIIIfnPrlOFbVW7ZHls3PONEocRXXqUOmSl0bl5rS4l8XzmQRFyXdiSwbVFB dT0H+XYnQA+a0Iw7z+KetfYxc+KShEgpWEPyoqILXKlFznzIvWaWj0TqNMu/Fvf7EPoc brYNbf8llB73C7dT7xb/RArjuUQ71rBc0ldSn+Fg5HdYmEHkywHTL/sh3I/PB2A+llsR ih3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:user-agent:from:to:subject:date:message-id :mime-version; bh=ygIgAUL/oQe6iMEl2T/YwZY9F46BsfxHQZk2Kdytsng=; b=FPlY9ze8Y80Dco1ClV7FRP17+2vqCQDd9Vv5qjmNTRJ4PSrk6DhbSoRB9iEt9/K9aa jLEvTkWiVXnyEJw9VEVDmBv6UZDhF/dVpuMqHhIg2Zyjh7aEnwzNO6XAdXC31zYT8+7L tg0Qf07WVI4RboGOQOoQY5h6Xq36DJWVFTSxMzqELAAyVoe2ZKW0CLfvtkTIl736MU9y 9ZCvXwchWdywzg6l7p/xEoWnvjur4JDNbPRf+TY5LbbbX5bP/Ws7yfmm5VjRmtY+dnr9 0gbe7MCgAFgfN7Yp3Md7YXi3TbenoDlXdbP8Bwh7maYjYXK2q0tPt38mXScYp14OjvvK tQIA== X-Gm-Message-State: AOAM531KraJTsEIvk0JAsrPukHJvVVbA/STytDvQTu+fCW7lXE4ww2Jt 5/ySKuugIUTPn3OmVICd/nUJQkNCV/rkyRej X-Google-Smtp-Source: ABdhPJyQbrcaf8AuTbzlh+prFKxa+pTSkYPsVNZn6IpNdK3HCD8r1YzVR0OZIWzJ6qlkQ4n8jUsJ4Q== X-Received: by 2002:a02:3441:: with SMTP id z1mr1288991jaz.63.1611013822736; Mon, 18 Jan 2021 15:50:22 -0800 (PST) Received: from whirlwind ([2607:fb90:f32:541b:a52d:753b:83b4:8224]) by smtp.gmail.com with ESMTPSA id r12sm10498983ile.59.2021.01.18.15.50.20 for <~technomancy/fennel@lists.sr.ht> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Jan 2021 15:50:21 -0800 (PST) User-agent: mu4e 1.0; emacs 26.1 From: Phil Hagelberg To: "~technomancy\/fennel\@lists.sr.ht" <~technomancy/fennel@lists.sr.ht> Subject: [ANN] Fennel 0.8.0 released! Date: Mon, 18 Jan 2021 15:50:18 -0800 Message-ID: <878s8px0sl.fsf@whirlwind> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" --=-=-= Content-Type: text/plain Hello Fennel friends! I'm happy to announce the release of version 0.8.0 of Fennel. The highlights for this version are the new "table comprehension" macros `collect` and `icollect`, a completely new serializer in `fennel.view`, and whole-table destructuring using `&as`. For a long time we considered adding things like `map` and `filter` into Fennel, but we decided against it because those are easily brought in by 3rd-party libraries like Lume or Luafun. Fennel has no runtime, so it can only include macros, and traditional map, filter, etc are best done as functions. However, taking inspiration from other languages list comprehensions, `collect` and `icollect` provide similar benefits but in the form of macros which makes them a much better fit for Fennel. No more needing to pull in a 3rd-party library for basic table manipulations. The new Fennelview is completely rewritten in a way that produces much more sensible indentation. The previous logic for indentation was very haphazard and driven by implementation details, now it follows lisp conventions. But even better is that it allows you to override the printing behavior with a `__fennelview` metamethod, and allows your output to get indented in a way that fits nicely with the context. And then the whole-table destructuring solves a long running problem of wanting to destructure a table but keep a reference around to the original. Previously you would have had to do this as two separate bindings; one for the destructuring and one for all: (let [{:a a :b b &as all} {:a 1 :b 2 :c 3 :d 4}] (+ a b all.c all.d)) ; => 10 The full list of user-visible changes: * Allow the parser to optionally include comments in the parsed AST * The fennelview module is now incorporated into the compiler as `fennel.view` * Fully rewrite fennelview for better indentation handling; see fennelview docstring for detailed description of API changes * Improve printing of destructured args in function arglist in `doc` * Allow plugins to provide repl commands * Fix a bug where decimal numbers would be emitted with commas in some locales * Label auto-generated locals in Lua output for improved readability * Fix the behavior of `...` inside `eval-compiler` * Warn when using the `&` character in identifiers; will be disallowed later * Add whole-table destructuring with `&as` * Add list/table "comprehension" macros (`collect`/`icollect`) * Numbers using underscores for readability **may not** begin with an underscore * Provide `...` arguments consistently with Lua when requiring modules * Fix a bug where `import-macros` would not respect certain compiler options * fennelview: respect presence of `__fennelview` metamethod on userdata metatables * Fix a bug where shebang caused incorrect sourcemapped row/col in stacktraces Thanks to everyone who contributed to this release; in particular Thomas Berryhill for the table comprehensions and Andrey Orst for the new Fennelview. You can download the latest version here: https://fennel-lang.org/downloads/fennel-0.8.0 https://fennel-lang.org/downloads/fennel-0.8.0.asc I think now we are not far off from a 1.0.0 release! Please let us know if you run into any issues with this version. Happy hacking! -Phil --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQGzBAEBCgAdFiEEICQrrLvpWtoi0K/XgIoz03nIBsMFAmAGHroACgkQgIoz03nI BsNT7AwAjB9diYZHNDOPM+9+0F229cbePZ73G1ekxT9STN1ZrVts7bQvWziUsuAM 7jE+w2aRrgxDWmlm+aHfQZJiw6HD3HJ5Y8gELT+ynjVld1D4Xo31c8vqJM+r5seG 59Dt9AUlQh4l/Em4pk5tU/IY3gRRVy0K3hrIl4PjdwhBprK3aMzMTkMHmYOEkbfi b8TckidebVzUEwfvmBbSISHKQaDRpypkAo9kgTn2oDGeh+L6JrhhFRTcL/inlq+A sz5m/85bGX3x5Dw5eIdDhGrxhA0HOFk+kkkFQdDfCsoEU/tSwCAz52+GRxvQ5pFt bB8WTcUB4b/SuINlz3C/HkdEA9EwDKNKWZcLATD4SBHC7R2KefnqNPr8T99iwth5 2o7uYp26YmZV4w2Yj1FwpNuISlRhp6TUXqHjj3yOtUwJibsszESPPp1p5kU/OA9C o6NFjj2hEHmUVC4BSRQAf/zY9Tw2BS0YNBbwwI7LOgQAG9KLCN9EdIAQY7kXOWKy hsJCxDjB =R/xB -----END PGP SIGNATURE----- --=-=-=--