<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0">
  <channel>
    <title>jemarch.net</title>
    <link>http://jemarch.net</link>
    <description>
      jemarch.net
    </description>

    <item>
      <title>SUPPER, a "modern" stropping regime for Algol 68</title>
      <description><![CDATA[
      <p>A draft of a proposed GNU extension to the Algol 68
      programming language has been published today at <a href="https://algol68-lang.org/docs/GNU68-2025-004-supper.pdf">https://algol68-lang.org/docs/GNU68-2025-004-supper.pdf</a>.
      </p>
<figure><a href="http://jemarch.net/images/a68-supper-stropping.png"><img src="http://jemarch.net/images/a68-supper-stropping.png" alt="SUPPER stropping in Algol 68" width="480" ></a><figcaption>SUPPER stropping in Algol 68</figcaption></figure>
      <p>This new stropping regime aims to be more appealing to contemporary
      programmers, and also more convenient to be used in today's computing
      systems, while at the same time retaining the full expressive power of a
      stropped language and being 100% backwards compatible as a super-extension.
      </p>
      <p>
       The stropping regime has been already implemented in
       the <a href="https://gcc.gnu.org/wiki/Algol68FrontEnd">https://gcc.gnu.org/wiki/Algol68FrontEnd</a>GCC Algol 68 front-end</a> and also in the <a href="https://git.sr.ht/~jemarch/a68-mode">Emacs a68-mode</a> that provides full automatic indentation and syntax highlighting.
      </p>
      <p>
          The sources of the <a href="https://git.sr.ht/~jemarch/godcc">godcc</a> program have been already
          transitioned to the new regime, and the result is quite
          satisfactory.  Check it out!
          </p>
      <p>
      Comments and suggestions for the draft are very welcome, and would help
      to move the draft forward to a final state. Please send them to algol68@gcc.gnu.org.
      </p>
      <p>
      Salud, and happy Easter everyone!
      </p>]]>
      </description>
      <pubDate>Mon, 21 Apr 2025 00:00:00 GMT</pubDate>
    </item>


    <item>
      <title>Homepage for Algol 68</title>
      <description><![CDATA[
        <p>
        The Algol 68 programming language got a new homepage:
        <a href="https://www.algol68-lang.org">https://www.algol68-lang.org</a>.
        </p>]]>
      </description>
      <pubDate>Thu, 20 Mar 2025 08:00:00 GMT</pubDate>
    </item>

    <item>
      <title>DWARF codes assigned for Algol 68</title>
      <link>http://jemarch.net</link>
      <description><![CDATA[
        <p>
        We just got official DWARF codes assigned to Algol 68, and
        adapted the GCC front-end to use them.
        </p>
        <p>
        For DWARF 5, DW_LANG_Algol68 = 0x44.
        </p>
        <p>
        For DWARF 6, DW_LNAME_Algol68 = 0x2e with versioning schema YYYY,
        starting with 1973 for the original Revised language. The language
        extensions we are working on will be encoded in subsequent
        versions, 2025 etc.
        </p>
        <p>
        <a href="https://dwarfstd.org/issues/250304.1.html">DWARF issue 250304.1</a>.
        </p>]]>
      </description>
      <pubDate>Sat, 08 Mar 2025 13:40:00 GMT</pubDate>
    </item>

    <item>
      <title>Algol 68 in Compiler Explorer</title>
      <link>http://jemarch.net</link>
      <description>
        <p>
          Thanks to Marc Poulhiès the Compiler Explorer instance at
          godbolt.org now has support for compiling Algol 68 programs
          using ga68, the Algol 68 GNU compiler based in GCC which is
          under development.
        </p>
        <p>
          <a href="https://godbolt.org/z/6s9aqvW4K">https://godbolt.org/z/6s9aqvW4K</a>
        </p>

        <p>
          On a related note, the demo application that I am using as
          both as a test and a showcase for the front-end, called
          <b>godcc</b>, is precisely a full-fledged command-line
          interface to Compiler Explorer, written in Algol 68.  It
          hopefully shows how powerful, clear, concise and modern the
          language is.
        </p>
        <p>
          <a href="https://git.sr.ht/~jemarch/godcc">godcc: a
          command-line interface to Compiler Explorer</a>
        </p>
        <p>
          Finally, yesterday support for Algol 68 in Automake got
          integrated upstream and shall be available at the next
          release.  The corresponding support for Autoconf is still
          being reviewed in the project's development list.  The Emacs
          <b>a68-mode</b> mode, that provides syntax highlighting and
          smart indentation of Algol 68 programs, got also added to
          the ELPA archive.  The development of the front-end itself
          is progressing and soon we shall be able to get it
          integrated in GCC proper.
        </p>
        <p>
          <a href="https://gcc.gnu.org/wiki/Algol68FrontEnd">GCC Algol 68 front-end development page</a>
        </p>
      </description>
      <pubDate>Mon, 03 Feb 2025 00:00:00 CET</pubDate>
    </item>

    <item>
      <title>Algol 68 Front-End for GCC</title>
      <link>http://jemarch.net</link>
      <description>
        <p>
          Just posted a WIP series for an Algol 68 front-end for
          GCC. It is about time to have support for the best
          programming language ever designed in the best optimizing
          compiler ever made ;)
        </p>
        <p>
          Thanks to Marcel van der Veer for his awesome parser, that I
          took the liberty to borrow from Algol 68 Genie.  Free
          Software for the win!
        </p>
        <p>
          <a href="https://inbox.sourceware.org/gcc-patches/20250101020952.18404-1-jose.marchesi@oracle.com">WIP patch series in gcc-patches...</a>
        </p>
      </description>
      <pubDate>Wed, 01 Jan 2025 00:00:00 CET</pubDate>
    </item>

    <item>
      <title>bugz-mode and a68-mode now in sourcehut</title>
      <link>http://jemarch.net</link>
      <description>
        <p>
          I have decided to start using sourcehut for a few of my
          projects.  The first projects landing there are
          <b>bugz-mode</b> and <b>a68-mode</b>, two Emacs modes. The
          first implements a quite efficient and comfortable interface
          to bugzilla. The second is a programming mode for <a
          href="algol.html">Algol 68</a>.
        </p>
        <p>
          Let's see how it goes!
        </p>
        <p>
          <a href="https://git.sr.ht/~jemarch">https://git.sr.ht/~jemarch</a>
        </p>
      </description>
      <pubDate>Fri, 12 Oct 2024 00:00:00 CET</pubDate>
    </item>

    <item>
      <title>Applied Pokology - Interesting poke idiom: sparse tables</title>
      <link>http://jemarch.net/pokology-20230128.html</link>
      <description>
        <p>
          During tonight poke online office hours our friend hdzki
          came with an interesting use case.  He is poking at some
          binary structures that are like sparse tables whose entries
          are distributed in the file in an arbitrary way.

          Each sparse table is characterized by an array of
          consecutive non-NULL pointers.  Each pointer points to an
          entry in the table.  The table entries can be anywhere in
          the IO space, and are not necessarily consecutive, nor be in
          order.
        </p>
      </description>
      <pubDate>Fri, 28 Jan 2023 00:00:00 CET</pubDate>
    </item>

    <item>
      <title>Applied Pokology - Padding and aligning data in GNU poke</title>
      <link>http://jemarch.net/pokology-20210302.html</link>
      <description>
        <p>
          It is often the case in binary formats that certain elements
          are separated by some data that is not really used for any
          meaningful purpose other than occupy that space.  The reason
          for keeping that space varies from case to case; sometimes
          to reserve it for future use, sometimes to make sure that
          the following data is aligned to some particular alignment.
          This is known as "padding".  There are several ways to
          implement padding in GNU poke.  This article shows these
          techniques and discusses their advantages and disadvantages.
        </p>
      </description>
      <pubDate>Tue, 02 Mar 2021 00:00:00 CET</pubDate>
    </item>

    <item>
      <title>Applied Pokology - Learning the Poke language in Y minutes</title>
      <link>http://jemarch.net/pokology-20210301.html</link>
      <description>
        <p>
          Mohammad-Reza Nabipoor has written a <a
          href="http://jemarch.net/learn-poke-language-in-y-minutes.pk.html">nice
          short tutorial</a> called "Learn the Poke Language in Y
          minutes".  The tutorial has the form of a Poke program
          itself, and I think it really highlights the most uncommon
          (and useful!) features of our domain-specific language.
        </p>
      </description>
      <pubDate>Mon, 01 Mar 2021 00:00:00 CET</pubDate>
    </item>

    <item>
      <title>Applied Pokology - Using maps in GNU poke</title>
      <link>http://jemarch.net/pokology-20210224.html</link>
      <description>
        <p>
          Editing data with GNU poke mainly involves creating mapped
          values and storing them in Poke variables.  However, this
          may not be that convenient when poking several files
          simultaneously, and when the complexity of the data
          increases.  poke provides a convenient mechanism for this:
          maps and map files.
        </p>
      </description>
      <pubDate>Wed, 24 Feb 2021 00:00:00 CET</pubDate>
    </item>

    <item>
      <title>Applied Pokology - GNU poke development news</title>
      <link>http://jemarch.net/pokology-20201115.html</link>
      <description>
        <p>
          The development of GNU poke is progressing well, and we keep
          hopes for a first release before the end of the year: we are
          determined for something good to happen in 2020! ;)
        </p>
        <p>
          This article briefly reviews the latest news in the
          development of the program, like changes in certain syntax
          to make the language more compact, support for lambda
          expressions, support for stream-like IO spaces and how they
          can be used to write filters, support for using assignments
          to poke complex data structures, improvements in data
          integrity, annoying bugs fixed, and more.
        </p>
      </description>
      <pubDate>Mon, 15 Nov 2020 00:00:00 CET</pubDate>
    </item>

    
    <item>
      <title>Applied Pokology - Integral structs in GNU poke</title>
      <link>http://jemarch.net/pokology-20200720.html</link>
      <description>
        <p>
          This weekend I finally implemented support for the so-called
          "integral structs" in poke.  This expands the expressivity
          power of Poke structs to cover cases where data is stored in
          composited integral containers, i.e. when data is structured
          within stored integers.
        </p>
      </description>
      <pubDate>Mon, 20 Jul 2020 00:00:00 CET</pubDate>
    </item>

    <item>
      <title>Applied Pokology - Writing binary utilities with GNU poke</title>
      <link>http://jemarch.net/pokology-20200716.html</link>
      <description>
        <p>
          <a href="http://www.jemarch.net/poke">GNU poke</a> is, first
          and foremost, intended to be used as an interactive editor,
          either directly on the command line or using a graphical
          user interface built on it.  However, since its conception
          poke was intended to also provide a suitable and useful
          foundation on which other programs, the so-called binary
          utilities, could be written.  At last, the development of
          poke has progressed to a point where we can start writing
          such utilities, and the purpose of this article is to show a
          small, albeit working and useful example of what can be
          achieved by writing a few lines of Poke: an extractor for
          ELF sections.
        </p>
      </description>
      <pubDate>Thu, 16 Jul 2020 00:00:00 CET</pubDate>
    </item>

    <item>
      <title>Applied Pokology - Understanding Poke methods</title>
      <link>http://jemarch.net/pokology-20200504.html</link>
      <description>
        <p>
          Poke struct types can be a bit daunting at first sight.  You can
          find all sort of things inside them: from fields, variables and
          functions to constraint expressions, initialization expressions,
          labels, other type definitions, and methods.
        </p>
        <p>
          Struct methods can be particularly confusing for the novice
          poker.  In particular, it is important to understand the
          difference between methods and regular functions defined inside
          struct types.  This article will hopefully clear the confusion,
          and also will provide the reader with a better understanding on
          how poke works internally.
        </p>
      </description>
      <pubDate>Mon, 4 May 2020 00:00:00 CET</pubDate>
    </item>
    <item>
      <title>Applied Pokology - Multi-line output in poke pretty-printers</title>
      <link>http://jemarch.net/pokology-20200503.html</link>
      <description>
        <p>
          The ID3V1 tag format describes the format for the tags that
          are embeded in MP3 files, giving information about the song
          stored in the file, such as genre, the name of the artist,
          and so on.  While hacking the id3v1 pickle today, I found a
          little dilemma on how to best present a pretty-printed
          version of a tag to the user.
        </p>
      </description>
      <pubDate>Sun, 3 May 2020 00:00:00 CET</pubDate>
    </item>
    <item>
      <title>Applied Pokology - Interruptible poke</title>
      <link>http://jemarch.net/pokology-20200302.html</link>
      <description>
        <p>
          Poke has loops.  It also does IO (yeah, right :D). On one
          hand, this means that Poke programs that never finish are
          definitely possible (here is one: <tt>while (1) {}</tt>)
          and, on the other, a Poke program acting on an enormous
          amount of data may take a long time to finish, depending on
          what it does.  Maybe hours, maybe even days?
        </p>
      </description>
      <pubDate>Mon, 2 Mar 2020 12:00:00 CET</pubDate>
    </item>
    <item>
      <title>Applied Pokology - Hyperlink Support in GNU Poke</title>
      <link>http://jemarch.net/pokology-20200202.html</link>
      <description>
        <p>
          FOSDEM 2020 is over, and hyperlink support has just landed for GNU Poke!
        </p>
        <div style="font-size: 4em; text-align: center;">
          Wait, Hyperlinks!?
        </div>
        <p>
          What do hyperlinks, a web concept, mean for GNU Poke, a
          terminal application?
        </p>
        <p>
          For many years now, terminal emulators have been detecting
          <code>http://</code> URLs in the output of any program and giving the user
          a chance to click on them and immediately navigate to the corresponding
          web page. In 2017, Egmont Kob made a
          <a href="https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda">proposal</a>
          for supporting general hyperlinks in terminal emulators. Gnome Terminal,
          iTerm and a few other terminal emulators have already implemented this
          proposal in their latest releases. With Egmont's proposal, an application
          can emit any valid URI and have the terminal emulator take the user to
          that resource.
        </p>
      </description>
      <pubDate>Mon, 2 Feb 2020 21:00:00 CET</pubDate>
    </item>

    <item>
      <title>Applied Pokology - Endianness in Poke - And a little nice hack</title>
      <link>http://jemarch.net/pokology-20191025.html</link>
      <description>
        Byte endianness is an important aspect of encoding data.  As a
        good binary editor poke provides support for both little and
        big endian, and will soon acquire the ability to encode exotic
        endianness like PDP endian.  Endianness control is integrated
        in the Poke language, and is designed to be easily used in
        type descriptions.  Let's see how.
      </description>
      <pubDate>Fri, 25 Oct 2019 00:00:00 CET</pubDate>
    </item>
    <item>
      <title>Applied Pokology - Styled output in Poke programs</title>
      <link>http://jemarch.net/pokology-20191021.html</link>
      <description>
        I just committed support for styling in printf.  Basically, it
        uses the libtextstyle approach of having styling classes that
        the user can customize in a .css file.
      </description>
      <pubDate>Mon, 21 Oct 2019 00:20:00 CET</pubDate>
    </item>
    <item>
      <title>Applied Pokology - Dealing with alternatives - Unions in Poke</title>
      <link>http://jemarch.net/pokology-18102019.html</link>
      <description>
        The Poke type definitions can be seen as a sort of declarative
        specifications for decoding and encoding procedures.  You
        specify the structure of the data you want to operate on, and
        poke uses that information to automatically decode and encode
        the data for you.  Under this perspective, struct types
        correspond to sequences of instructions, array types to
        repetitions (or loops), and union types to conditionals.
      </description>
      <pubDate>Fri, 18 Oct 2019 12:00:00 CET</pubDate>
    </item>
    <item>
      <title>Applied Pokology - Values of the world, unite! - Offsets in Poke</title>
      <link>http://jemarch.net/pokology-06102019.html</link>
      <description>
        Early in the design of what is becoming GNU poke I was struck
        by a problem that, to my surprise, would prove not easy to
        overcome in a satisfactory way: would I make a byte-oriented
        program, or a bit-oriented program?  Considering that the
        program in question was nothing less than an editor for binary
        data, this was no petty dilemma.
      </description>
    </item>
    <item>
      <title>Applied Pokology - Array boundaries and closures in Poke</title>
      <link>http://jemarch.net/pokology-03102019.html</link>
      <description>
        Poke arrays are rather peculiar.  One of their seemingly
        bizarre characteristics is the fact that the expressions
        calculating their boundaries (when they are bounded) evaluate
        in their own lexical environment, which is captured.  In other
        words: the expressions denoting the boundaries of Poke arrays
        conform closures.  Also, the way they evaluate may be
        surprising.  This is no capricious.
      </description>
    </item>
    <item>
      <title>Applied Pokology - Nomenclature: poke, Poke and pickles</title>
      <link>http://jemarch.net/pokology-01102019.html</link>
      <description>
        GNU poke is a pretty new program and it introduces many a new
        concept.  As people are starting to join the development, I
        think it is a good idea to clarify how I call things.  The
        idea is for everyone to use the same nomenclature when
        referring to pokeish thingies.  Otherwise its gonna get very
        confusing very soon!
      </description>
      <pubDate>Mon, 01 Oct 2019 15:00:00 CET</pubDate>
    </item>
    <item>
      <title>Rhhw Friday 16 March 2018 - Sunday 18 March 2018 @
      Frankfurt am Main</title>
      <link>http://jemarch.net/rhhw.html#16march2018</link>
      <description>
        The Rabbit Herd will be meeting the weekend from 16 March to
        18 March.
      </description>
      <pubDate>Mon, 12 Mar 2018 15:00:00 CET</pubDate>
    </item>
    <item>
      <title>New page with useful checklists</title>
      <link>http://jemarch.net/checklists.html</link>
      <description>
        I maintain several checklists as part of my organizational
        system.  I am publishing them here in the hope they will be
        useful to someone else.
      </description>
      <pubDate>Mon, 19 Mar 2018 14:00:00 CET</pubDate>
    </item>
    <item>
      <title>Rhhw Friday 1 June 2018 - Sunday 3 June 2018 @
      Stockholm</title>
      <link>http://jemarch.net/rhhw.html#1june2018</link>
      <description>
        The Rabbit Herd will be meeting the weekend from 1 June to
        3 June 2018.
      </description>
      <pubDate>Wed, 4 Apr 2018 14:00:00 CEST</pubDate>
    </item>
    <item>
      <title>Rhhw July 2019 @ Frankfurt am Main</title>
      <link>http://jemarch.net/rhhw.html#july2019</link>
      <description>
        The Rabbit Herd will be meeting the weekend from 26 July to
        28 July 2019, in Frankfurt.  If you are in the nearby and in
        the mood for some hacking, feel free to join us!
      </description>
      <pubDate>Wed, 24 Jul 2019 3:47:00 CEST</pubDate>
    </item>
  </channel>
</rss>
