Skip to content
Andrew Plotkin edited this page Mar 12, 2015 · 29 revisions

Planned (and current) Glk spec updates:

First update (spec 0.7.1)

Released Jan 22, 2011. (These are simple updates which don't require a whole lot of design work. See Glk 071 draft spec changes.)

  • glk.h header should use 32-bit typedefs for glui32 and glsi32. (Include stdint.h.)

  • A way to set line-input terminator keys (so the game can react to function keys, etc, during line input)

  • A way to set whether line input is automatically echoed to the window, when input is completed or cancelled. (Currently it always is, but in certain cases you want to suppress that.)

  • The always-popular "draw a border between these windows" flag.

  • Calls to decompose and renormalize a bufferful of Unicode text.

Second update (spec 0.7.2)

Released Feb 17, 2011. See Glk 072 draft spec changes.

  • System-clock API (get the current time, in Unix timestamp form or a broken-out date/time structure)

Third update (spec 0.7.3)

Released Oct 10, 2011. Improvements to the sound-channel API. See Glk 073 draft spec changes.

  • You can pause and unpause sound channels
  • You can tell a sound channel to change volume gradually
  • You can start several sounds at exactly the same time
  • A single gestalt selector covers all sound functions now, so you don't have to write complicated feature tests

Fourth update (spec 0.7.4)

Released Jan 29, 2012. See Glk 074 draft spec changes.

  • Recommendation for unifying the way interpreters handle file suffixes. For data files, at least.
  • A way to embed data files in a Blorb archive, so that the game can read them directly.
  • Update Jul 20: I've added one clause to this, to allow reading embedded IFF-style files in Blorb. (AIFF or Quetzal saves, for example.) I know it's uncool to add a feature to a released spec, but this is small and shouldn't cause backwards-compatibility problems.

Fifth update (spec 0.7.5)

Assorted clarifications. See Glk 075 draft spec changes.

  • Tighten specification of the way external files are written. (Unicode/text files must now be UTF-8.)
  • Discuss the case of zero-size windows.
  • Accept character input in graphics windows.

The stylesheet update (spec 0.8.0)

A way for a game to customize its presentation: fonts, colors, margins, etc. Also includes features for including HTML display directly in games.

Future plans

  • Provide a glk_tick() macro, and document that calling it will be free (a do-nothing macro) if the library doesn't need to do tick work.

  • Glk Multi-Display Support -- that is, the ability for a single application to run several games in independent Glk display windows. (Both app code and library code require backwards compatibility! Headache.)

  • Network API

  • Provide a hook for starting up without having to worry about opening windows or setting output streams. The Glulx VM would access this as a distinct I/O system (the "quick and dirty system" or some such). It would provide a buffer window, but no access to the @glk opcode or any other Glk features. (Intended for use by VM tests that don't care whether they've got a Glk library or FyreVM or what have you; they just want an output stream.)