Change history
Version 5.5 (30 Jul 2022)
- New output format: YAML.
- New output for text format: maps.
- New option:
-v
(verbose), which shows more information when running.
- The
maps
option of the -show
command has been removed (it’s
superseded by the new text map output).
- The
-e
option (specify max errors before exiting) has been removed.
- Fixed problem caused by recent compiler versions becoming a bit fussier.
Version 5.4 (13 Feb 2009)
- Some documentation updates and fixes.
- Fixed build problems on various systems.
Version 5.3 (14 Nov 2008)
- New
them
keyword, which refers to the list of items mentioned in the
current statement.
- New game-solver variables:
finish_room
, finish_item
and
finish_task
, which can be a comma-separated list of extra rooms,
items and tasks which get assigned the finish
attribute (i.e., cause
the solver to exit).
- New task graph variables:
task_graph_wrap
, which controls
word-wrapping when printing graph nodes, and task_graph_font
, which
sets the text font.
- The new keywords
true
and false
can be used in place of 1 and 0,
respectively, when setting variables.
- Both versions of the personal initialization file (
.ifmrc
and
ifm.ini
) are now read, if they exist.
- There’s a new Perl script
ifm2web
, which converts IFM maps to image
files suitable for the Interweb.
- The GNU Emacs
ifm-mode.el
in the contrib
directory has been
improved: it can display task recording and debugging output, now has
imenu
and flymake
support, and a minor bug fix.
- The documentation is now much prettier, thanks to Sphinx and Pygments.
The
contrib
directory contains the Python module used to
syntax-highlight IFM code and IF transcripts.
- Since
asciimapper
is now in the IF archive, it is no longer part of
the contrib
directory.
- PostScript maps now conform properly to Adobe DSC. This stops
Ghostscript 8.x barfing on them.
Version 5.2 (7 Sep 2006)
- There’s a new
-errors
option, which controls the maximum number of
errors printed before giving up.
- New program in the
contrib
directory: asciimapper
. This is a
tool to create IFM maps from ASCII art maps, contributed by Elijah
Griffin.
- The GNU Emacs
ifm-mode.el
in the contrib
directory has new
commands to display maps, items and tasks and various other things.
Based on an initial version contributed by Lee Bigelow.
- Several unused features which added needless complexity have been
removed. These are: preprocessing by
gpp
, expressions for
real/integer values, and variable interpolation in strings.
- An obscure bug has been fixed which involved the
follow
and need
attributes combined. This caused some valid task orderings to be flagged
as cycles.
- A bug with modification of room attributes has been fixed.
- Don’t crash when trying to solve game and there are no rooms.
- A crash when trying to print an error message about cyclic task
dependencies has been fixed.
Version 5.1 (30 Nov 2004)
- The
tkifm
program now supports line numbering and syntax
highlighting, thanks to a contributor who wishes to remain anonymous.
- There is now a man page summarizing the command-line options.
- In PostScript output, up/down and in/out labels are now drawn separately,
next to their respective rooms. Also, if a link leaves a room and
returns to the same room, it’s drawn as a small circle. Thanks to Dan
Eble.
- Hopefully, the Windows port should work properly now.
- Fixed weird bug with scaled arcs in PostScript output. More thanks to
Dan Eble.
- Fixed bug in
ifm2tex
with converting strings to TeX format
(specifically, ones with embedded zeros).
- Fixed crash when using
it
in some circumstances.
Version 5.0 (23 Jan 2003)
- New map output: Fig format, suitable for viewing or editing with Xfig, or
exporting to other formats.
- New utility program:
ifm2dev
, which pipes IFM output in Fig format
through fig2dev
repeatedly to write each map section to its own file.
- New utility program:
ifm2tex
, which converts Fig files to EPS and
includes them in a LaTeX document together with tables of items and
tasks.
- New task output: graphviz (
dot
) format, which dumps a task dependency
graph.
- New
keep with
and keep until
syntax for items, allowing items to
be kept until certain tasks are done or certain other items are dropped.
- New room
nodrop
attribute, indicating that no items should be dropped
there.
- New task and item
ignore
attribute, indicating that these things
should be ignored when finding a solution.
- New task
do
attribute, indicating that when a task is done, it also
does one or more other tasks automatically.
- New option:
-style
, which sets global styles for all IFM objects.
- New option:
-set
, which lets you set variables from the command line.
To support this, the variable-setting syntax has been changed: instead
of a space separating the driver name from the variable, there’s now a
period.
- New
-show
option: maps
, which lists all the map sections and
their sizes.
- The
-map
option now accepts an optional list of map sections to
print.
- There’s a bunch of new variables to control things, including the overall
behaviour of the game solver.
- IFM input is now preprocessed, in a similar way to C programs. As a
result, the old
include
and alias
features have been replaced
with the preprocessor equivalents.
- There’s a new
require
keyword, which lets you say that a certain
version of IFM (or later) is required for a map.
- Changed implicit-link style behaviour: the
style
clause on a room
now applies to both the room and the implicit link, so it’s now
independent of its position relative to the dir
clause.
- The command-line option
-debug
has been removed; its functionality
has been replaced by a control variable.
- The old
puzzle
and special
attributes have finally been removed;
if you have any old maps which use these, you must replace them with the
corresponding styles instead.
- Documentation is now distributed in HTML and PDF formats, instead of GNU
Info.
- The GNU Emacs IFM mode in the
contrib
directory now has font lock
support. The ifm.vim
file has also been updated with the latest
keywords.
- Fixed bug with room
link
and join
attributes: it didn’t work to
use last
as an argument.
- Fixed glitch in room text on PostScript output: now tries reducing font
size before squishing, so that text is filled better.
Version 4.1 (10 May 1999)
- Fixed minor task bug: in special cases, giving items caused solver to
fail to find newly-opened paths.
- Fixed stupid blunder with DOS
\r
characters in one of the source
files.
- Fixed core dump problem when reading colour definitions (on FreeBSD, at
least).
Version 4.0 (21 Apr 1999)
- PostScript driver can now print in colour.
- New 3D room shadowing effect on maps.
- Many new output variables to control new map features.
- Variables can now be set via expressions, not just values. Variables can
now be used to customize many aspects of the input (e.g., notes, repeat
counts).
- Individual parts of the map can now be customized using display styles.
- New
include
syntax, which allows files to include other files, either
explicitly or via a path search.
- New
-include
(-I
) option to prepend directories to the search
path from the command line.
- New
-show
option to show various things (defined variables, search
path), also included in tkifm
menus.
- More information is now printed in item lists: which tasks require an
item, which tasks an item requires, etc.
- Some example maps are now bundled with IFM, in the
demos
subdirectory.
- Names and defaults of many output variables have been changed in order to
make them more consistent.
- Extra complexity in variable syntax has been removed, as it wasn’t being
used. Specifically, variables can’t be set according to type of output
or per-map-section any more, only by output driver.
- Removed formatted man page documentation: now only Info, HTML and text
documentation is distributed. If there are enough complaints, I’ll put
it back.
- The
puzzle
and special
attributes are now obsolete; they’re
replaced by display styles.
tkifm
now redisplays old map windows when refreshing the map.
- Win32 version is now compiled with Cygwin b20, and so requires
cygwin1.dll
(not cygwin.dll
), included in the distribution.
See README.win32
for details.
Version 3.0 (1 Oct 1998)
- There’s a new program
scr2ifm
in the distribution, which attempts to
convert a game transcript into IFM format. It’s a perl script, and gets
installed on Unix-type systems if perl is detected.
- New
nolink
attribute for rooms, which suppresses generation of an
implicit link between this and the previous room.
- New
nopath
attribute for rooms, links and joins, which stops those
map connections from being used by the game solver.
- New task
cmd none
syntax, for tasks that don’t need any special user
commands (e.g., visiting a room for the first time).
- New PostScript variable
link_arrowsize
, which allows you to change
the size of arrowheads on one-way links.
tkifm
is now installed automatically on Unix-type systems if wish
(or one of its namesakes) is detected.
tkifm
now shows busy-cursor when doing something CPU-intensive.
- Improved solver failure messages, which give more information about
what’s wrong.
- Removed PostScript documentation from distribution.
- The
times
keyword is now obsolete (but still works, for
compatibility); just the repeat count is used instead.
- Fixed bug with
drop all except
clause; it was treating it as just a
simple drop
clause.
- Fixed bug in task path calculation; it didn’t always choose the best
route between rooms.
- Linking a room to itself with no
dir
clause now results in an error,
instead of failing mysteriously at the map-drawing stage.
- Minor fixes to make installation smoother on FreeBSD.
Version 2.1 (26 Aug 1998)
- Fixed bug which caused some types of variable not to be set properly.
- Minor fixes to library functions to link properly under Solaris.
Version 2.0 (19 Aug 1998)
- Lots of new keywords for use by the game solver, which has been
considerably enhanced.
- New commands to modify previous definitions, which allow you to keep all
game hacks in one place.
- New
show_tags
variable, which toggles addition of room tag names to
room descriptions.
- New
-debug
command-line option, which gives the gory details of what
the game solver is up to.
- New recording output, which can generate commands to play back in
interpreters.
- Package now has a test suite.
- Links and joins can now be
hidden
, which means they’re used only for
task purposes.
- Removed
groff
output; it’s not worth supporting any more, now that
PostScript output works so well.
- Text task output now prints details of the rooms you move through to get
places, including directions moved in (or commands typed to move that
way).
- PostScript driver now has some standard page sizes. Also there’s a
variable
page_rotate
which can override the default decisions on
whether to print landscape or not.
- Having no rooms defined is not an error any more, in order to placate
tkifm
.
- Changed list attributes to be cumulative, instead of overriding previous
value.
- Variables can now be set to
undef
, which allows their default setting
to reappear.
- Various
tkifm
enhancements to make it convenient to use your
preferred editor.
- Unix version now uses GNU autoconf/automake for installation.
- Got
tkifm
save-as option to set current filename properly.
- Stopped outside grid warnings from causing
tkifm
to fail when
drawing map.
- Library function now doesn’t clobber read-only strings.
Version 1.0 (11 Jun 1998)