eighty-twenty news feed for tag "releases"2024-01-24T14:37:46+00:00http://eighty-twenty.org/tag/releases/index.atomtonygmikebSimpler Preserves Binary Syntax2023-10-15T13:21:47+00:00http://eighty-twenty.org/2023/10/15/simpler-preserves-binary-syntaxtonyg<p>I’ve just updated the <a href="https://preserves.dev/">Preserves</a> spec to version 0.990.0. I feel like
a 1.0-rc is approaching!</p>
<p>The main change since spec version 0.7.1 has been to simplify the binary syntax for Preserves
<a href="https://preserves.dev/preserves.html#semantics"><code class="language-plaintext highlighter-rouge">Value</code>s</a>:</p>
<ul>
<li>
<p>Both “short” and “medium” <code class="language-plaintext highlighter-rouge">SignedInteger</code> representations (starting with tags <code class="language-plaintext highlighter-rouge">0x9x</code>/<code class="language-plaintext highlighter-rouge">0xAx</code>)
were removed. They weren’t pulling their weight. Every <code class="language-plaintext highlighter-rouge">SignedInteger</code> now has tag <code class="language-plaintext highlighter-rouge">0xB0</code>.</p>
</li>
<li>
<p><code class="language-plaintext highlighter-rouge">Float</code> and <code class="language-plaintext highlighter-rouge">Double</code> are now encoded with tag <code class="language-plaintext highlighter-rouge">0x87</code> and a length, rather than with fixed
tags <code class="language-plaintext highlighter-rouge">0x82</code> and <code class="language-plaintext highlighter-rouge">0x83</code>, opening the door to other IEEE754 formats in future.</p>
</li>
</ul>
<hr />
<p>Here’s the 0.990.0 syntax in “<a href="https://preserves.dev/cheatsheet.html">reference card</a>” format,
where we write <code class="language-plaintext highlighter-rouge">«V»</code> for the binary encoding of some value <code class="language-plaintext highlighter-rouge">V</code>:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> «#f» = [0x80]
«#t» = [0x81]
«@W V» = [0x85] ++ «W» ++ «V»
«#!V» = [0x86] ++ «V»
«V» if V ∈ Float = [0x87, 0x04] ++ binary32(V)
«V» if V ∈ Double = [0x87, 0x08] ++ binary64(V)
«V» if V ∈ SignedInteger = [0xB0] ++ varint(|intbytes(V)|) ++ intbytes(V)
«V» if V ∈ String = [0xB1] ++ varint(|utf8(V)|) ++ utf8(V)
«V» if V ∈ ByteString = [0xB2] ++ varint(|V|) ++ V
«V» if V ∈ Symbol = [0xB3] ++ varint(|utf8(V)|) ++ utf8(V)
«<L F_1...F_m>» = [0xB4] ++ «L» ++ «F_1» ++...++ «F_m» ++ [0x84]
«[X_1...X_m]» = [0xB5] ++ «X_1» ++...++ «X_m» ++ [0x84]
«#{E_1...E_m}» = [0xB6] ++ «E_1» ++...++ «E_m» ++ [0x84]
«{K_1:V_1...K_m:V_m}» = [0xB7] ++ «K_1» ++ «V_1» ++...++ «K_m» ++ «V_m» ++ [0x84]
varint(v) = [v] if v < 128
[(v & 0x7F) + 128] ++ varint(v >> 7) if v ≥ 128
</code></pre></div></div>
Joining Markdown tables2023-09-06T21:20:18+00:00http://eighty-twenty.org/2023/09/06/joining-markdown-tablestonyg<p>I’ve been working with Markdown tables a lot recently. The lovely
<a href="https://jblevins.org/projects/markdown-mode/">markdown-mode</a> for Emacs makes this easy and
pleasant. However, I find myself treating the tables a little like CSV, and started wanting to
run <em>joins</em> on tables often enough that I hacked together my first little Emacs package,
<a href="https://gist.github.com/tonyg/c951be93656b45027ed7d15e79f07c01"><code class="language-plaintext highlighter-rouge">markdown-join</code></a>.</p>
<p>Here’s a demo:</p>
<script async="" id="asciicast-606594" src="https://asciinema.org/a/606594.js"></script>
<p>The code is a single file,
<a href="https://gist.github.com/tonyg/c951be93656b45027ed7d15e79f07c01#file-markdown-join-el"><code class="language-plaintext highlighter-rouge">markdown-join.el</code></a>.
I’ve submitted it to MELPA.</p>
Chicken SDL v0.4.51117.02005-11-17T12:45:25+00:00http://eighty-twenty.org/2005/11/17/chicken-sdl-0.4.51117.0tonyg<p>A new release of <tt>chicken-sdl</tt> is available from our <a href="/tech/repos">code
repository</a>. You can download the <tt>egg</tt> file <a href="/releases/sdl-0.4.51117.0.egg">here</a>.</p>
<p>Interesting changes include:</p>
<ul>
<li>Switch to Chicken 2.x conventions for invoking <code>syntax-case</code>.</li>
</ul>
From TLA to Darcs2005-10-30T09:50:52+00:00http://eighty-twenty.org/2005/10/30/archives-moved-2tonyg<p>I’ve finally gotten around to moving many of our TLA archives over to
<a href="http://www.darcs.net/">Darcs</a>. I simply sealed the TLA
versions and imported the sealed snapshot into Darcs, without
transferring the history.</p>
<p>The main public projects I’ve darcsified are <a href="http://www.eighty-twenty.org/~tonyg/Darcs/chicken-sdl">chicken-sdl</a>
and <a href="http://www.eighty-twenty.org/~tonyg/Darcs/gyre">gyre</a>
(which is the tool we use to publish this site).</p>
Chicken Cairo 0.1.2 alpha2005-02-13T14:05:01+00:00http://eighty-twenty.org/2005/02/13/chicken-cairo-0.1.2alphamikeb<p>"Release early, release often," <a href="http://www.bbc.co.uk/weather/">they</a> say. In this spirit,
another release of Chicken Scheme bindings for Cairo is available in
our <a href="/tech/repos.html">2005
archive</a>.</p>
<p>The <tt>egg</tt> file is available in <a href="/releases/">releases</a>.</p>
<pre class="code">
2005-01-06 18:15:03 GMT Michael Bridgen <mikeb@lshift.net> patch-8
Summary:
Added text and font extents
Revision:
chicken-cairo--dev--0.1--patch-8
- cairo_text_extents_t and cairo_font_extents_t types
These are not returned from a function, so we have to allocate
them as a (GC-able) byte vector and make C think it's a spot of
memory.
- Functions for determining the extents of text and fonts.
- Updated example
2004-12-04 17:52:21 GMT Tony Garnock-Jones <tonyg@lshift.net> patch-7
Summary:
Adapt to chicken-sdl's recent case changes, and upcase the cairo binding too
Revision:
chicken-cairo--dev--0.1--patch-7
A few constants changed to UPPER_CASE, both references to SDL
constants, and the flags defined in cairo.scm. Also removed test-cairo
from the Makefile - it doesn't need to be compiled now that we have
sdl-csi.
2004-11-30 00:40:37 GMT Michael Bridgen <mikeb@squaremobius.net> patch-6
Summary:
Font and text rendering
Revision:
chicken-cairo--dev--0.1--patch-6
Just a start on these -- enough to see something painted, which is exciting.
2004-11-17 19:40:06 GMT Tony Garnock-Jones <tonyg@kcbbs.gen.nz> patch-5
Summary:
cairo.setup file, to make 'make install' (and the egg) work
Revision:
chicken-cairo--dev--0.1--patch-5
2004-11-15 22:33:03 GMT Michael Bridgen <mikeb@squaremobius.net> patch-4
Summary:
Query functions
Revision:
chicken-cairo--dev--0.1--patch-4
Might come in handy ('specially alpha)
2004-11-15 14:02:26 GMT Michael Bridgen <mikeb@squaremobius.net> patch-3
Summary:
Matrix operations (untested)
Revision:
chicken-cairo--dev--0.1--patch-3
Added the cairo_matrix_* functions -- untested, except for the
compilation unit test.
Just a bunch of typing really.
2004-11-11 00:19:12 GMT Michael Bridgen <mikeb@squaremobius.net> patch-2
Summary:
Some documentation and decorations
Revision:
chicken-cairo--dev--0.1--patch-2
Added some documentation regarding obscure/non-obvious things;
divided into sets of functions with headers for navigation.
</pre>
GNU/Arch archives moved2005-02-13T13:09:21+00:00http://eighty-twenty.org/2005/02/13/archives-movedmikeb<p>I’ve cycled our GNU/arch archives to 2005, meaning that the previous
archive link is wrong. To correct:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>tla register-archive http://www.eighty-twenty.org/archives/2004
tla register-archive http://www.eighty-twenty.org/archives/2005
</code></pre></div></div>
Chicken SDL v0.3p22004-12-30T14:46:50+00:00http://eighty-twenty.org/2004/12/30/chicken-sdl-0.3p2tonyg<p>A new release of <tt>chicken-sdl</tt> is available from our <a href="/tech/releases/Chicken_SDL_and_Cairo.html"><tt>arch</tt>
archive</a>. You can download the <tt>egg</tt> file <a href="/releases/sdl-0.3p2.egg">here</a>.</p>
<p>Interesting changes include:</p>
<ul>
<li>Case changes: constant definitions are now in uppercase,
matching the C API.</li>
<li>The SDL egg now supports <tt>SDL_net</tt> networking.</li>
<li>The <tt>sdl-csi</tt> program is now installed in
the <tt>bin</tt> directory, as part of the normal installation of
the egg</li>
<li>Added missing <tt>sdl-quit-sub-system</tt> parameter;
added <tt>sdl-set-color-key!</tt> (thanks to Felix Winkelmann)</li>
<li>Added a <tt>sdl-pixel-format-bytes-per-pixel</tt> accessor
(thanks to Sunnan)</li>
<li>Added getter/setter for SDL errors.</li>
<li>The <tt><em>sdl-rect-nil</em></tt> global has been replaced
by <tt>#f</tt>.</li>
<li>The problem on MacOS X (and probably also Windows)
regarding <tt>sdl-init</tt> has been better documented (in
the <tt>README</tt>)</li>
</ul>
Chicken SDL v0.3p12004-12-01T13:50:07+00:00http://eighty-twenty.org/2004/12/01/chicken-sdl-0.3p1tonyg<p>A new release of <tt>chicken-sdl</tt> is available from our <a href="/tech/releases/Chicken_SDL_and_Cairo.html"><tt>arch</tt>
archive</a>. You can download the <tt>egg</tt> file <a href="/releases/sdl-0.3p1.egg">here</a>.</p>
<p>Below is the relevant part of the changelog:</p>
<pre class="code">
2004-12-01 13:18:11 GMT Tony Garnock-Jones <tonyg@kcbbs.gen.nz> patch-10
Summary:
Incorporate changes suggested by Alex Shinn
Revision:
chicken-sdl--main--0--patch-10
- (sdl-fill-rect) is now generic in the kind of colour it expects -
either an unsigned integer, or an SDL_Color structure.
- Added procedures (ttf-size-text!) and (ttf-size-utf8!).
2004-11-19 16:38:01 GMT Tony Garnock-Jones <tonyg@lshift.net> patch-9
Summary:
Returned TTF_Fonts now have a NULL check
Revision:
chicken-sdl--main--0--patch-9
Previously, calling (ttf-open-font) when the path specified was
invalid in some way would result in the construction of a ttf-font
structure with a pointer value of #f, and there was no way of checking
the success or failure of (ttf-open-font) without explicitly calling
(ttf-font-pointer), which is bad style.
I've changed the foreign-type wrap procedure to check for a #f pointer
before constructing the ttf-font structure. If the pointer is #f, the
whole result is #f - otherwise a ttf-font structure is built as usual.
2004-11-15 12:09:04 GMT Tony Garnock-Jones <tonyg@kcbbs.gen.nz> patch-8
Summary:
Replace timer functionality
Revision:
chicken-sdl--main--0--patch-8
It is problematic supporting SDL_AddTimer and SDL_RemoveTimer from
chicken, since they a) are implemented using setitimer(2) and b)
involve callbacks from C to Scheme. Each would be fine on its own, but
taken together they interfere with the main Scheme thread.
As it happens, the SDL_WaitEvent function is implemented in terms of
polling (!) for events, with a short delay if none present themselves
- the usual pragmatic tradeoff for event-based systems on Unix-like
machines - and so we will be doing no worse if we do a similar thing
ourselves. Hence, I've written a Scheme-based timer library which
integrates with SDL's event loop, calling SDL_Delay(10) when there's
no work just like SDL_WaitEvent.
This does of course mean that the user must now either use
(sdl-wait-event!), which manages timeouts itself, or must instead
somehow arrange for periodic calls to (sdl-process-timer-queue!).
The timer library is implemented in timer.scm, and depends on a
leftist-heap implementation from heap.scm. These two modules ought
probably to be split out into eggs of their own, and distributed as
part of some kind of general utility library for chicken. For now,
they're (include)d directly into sdl.scm, to avoid needing to install
more than one file for this extension.
</pre>
Chicken SDL and Chicken Cairo2004-11-09T13:40:10+00:00http://eighty-twenty.org/2004/11/09/Chicken_SDL_and_Cairomikeb<p>For your consideration, alpha releases of SDL and Cairo bindings for
<a href="http://www.call-with-current-continuation.org/">Chicken Scheme</a>.</p>
<p><a href="http://www.libsdl.org/">SDL</a> is a cross-platform library for accessing video, audio and HID
events. <a href="http://cairo.freedesktop.org/">Cairo</a> is a
vector-graphics library that happens to be easily integrated with SDL.</p>
<p>Both are available in our <a href="http://www.gnuarch.org/">GNU/Arch</a> archive at
<a href="http://www.eighty-twenty.org/archives">http://www.eighty-twenty.org/archives</a>:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>tla register-archive http://www.eighty-twenty.org/archives
tla abrowse arch@eighty-twenty.org-public--2004
</code></pre></div></div>