# -*- mode: org; coding: utf-8; -*-
#+TITLE: Guile Hall NEWS – history of user-visible changes
#+STARTUP: content hidestars

Copyright © 2018-2020 Alex Sassmannshausen <alex@pompo.co>

  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
  notice and this notice are preserved.

Please send Guile Hall bug reports to alex@pompo.co.

* Changes in 0.4.1 (since 0.4.0)
** Fix upgrade to guile-config 0.5
** Revert Guile query during build time
** Implement CI script
* Changes in 0.4.0 (since 0.3.1)

** WARNING: Changed Hall subcommand semantics

   BREAKING UI CHANGE: Previously, the `dist` command generated files for the
   gnu build system, and the `guix` command generated the file for use with
   Guix.

   We are now moving to supporting multiple build systems (e.g. the guix
   `guile-build-system`). We may also want to support multiple ways of
   distributing packages (not just Guix recipes). There is also a subtle
   semantic error here: previously, the `dist` command generated files related
   to build systems, not distribution.

   From this version, we introduce a new sub-command called `build-system`,
   which can be used for managing the build-system files (as done previously
   by `dist`. The `dist` subcommand (`distribution-system`) is now used to
   manage distribution related files (e.g. guix).

   The functionality should be the same, it's just the command to be used that
   is different.

** Permissive missing filetype handling

   I decided early on that Hall wants to /understand/ the files it
   manages. This means the program needs to know filetypes. This is done in
   the hall/spec.scm file, using the `filetype` procedure. I still believe
   there are benefits to this approach, but the system is also mature enough
   now for me to know that we don't need to handle every filetype in the
   universe.

   With this release Hall simply warns users if an unknown file type is used,
   but it should just work with them.

** We now use Guile to query build time environment variables

   GNU build system magic is arcane and befuddling. Thanks for the hint, Nala!

** Added unit tests

   The project has sufficient maturity to warrant developing to unit tests
   now.  And also, missing tests have fucked with my dev process one to many
   times!

** .dir-locals.el and .gitignore are no longer ignored by `scan`

   These files are generally a part of the project and should be treated as
   such.

** Add `skip` functionality to the spec

   You can now add a default set of files to be skipped by all commands
   supporting `--skip` functionality in the spec itself. This should save you
   some repetitive typing!

* Changes in O.3.1 (since 0.3.0)

** Fix texinfo syntax so the manual appears in (Top)

   A missing '.' (gaah!) caused the Hall manual to not show up in the manual
   index, despite existing.  This was gracefully pointed out by Catonano.

* Changes in 0.3.0 (since 0.2.1)

** Allow adding single files to hall.scm using `hall scan'

   `hall scan' now accepts two optional arguments so that you can quickly add
   individual files to your hall.scm file, even if your project state is
   dirty.  This is an alternative to running the full auto-magic `hall scan'
   command.

** Emit user friendly error messages for common failures

   Hitherto we simply used `throw' to error out of unexpected situations.
   This would happen even in the case of user error or predictable situations.

   I consider the codebase solid enough to emit more user-friendly error
   messages in predictable situations.

** Allow use of fully-fledged regexp to --skip files

   The `scan' and `clean' subcommands accept a --skip keyword to exclude
   specific (classes of) files from their operation.  So far they had to be
   precise files.  The --skip keyword now expects Guile style regex pattern
   strings for increased flexibility.

** Add a notes system for giving advice to the user

   Hall aims to understand your project and the files it contains, even if it
   does not fully support your use case.  To this end, its architecture
   creates a representation of your project in the hall.scm file.

   Hall now has a facility for emitting useful commentary when creating or
   manipulating this representation.

   A current case in point at present is that we understand that Guile
   projects may include C files — but Hall does not support them in its build
   infrastructure.  So we want to allow & support users who include C files,
   but we want to warn them about Hall's short-comings in this area.

** Change the filetype architecture

   So far, filetype registration code was spread out over the codebase.  From
   this version we support a simple <filetype> interface.  Supported filetypes
   are declared in /hall/spec.scm.

   Supporting more filetypes is as easy as adding a simple declaration there.

   This sets up a further development allowing individual projects to specify
   filetypes above and beyond Hall's built-in filetypes.

** Support XML, C, .log, .trs, .tex, & emacs autosave/backup files

   A simple development thanks to the above.

** Add a default .gitignore file

   Hall has strong opinions about development, primarily to stop new
   developers from having to make bewildering choices.  Currently it pushes
   strong git & guix integration, as well as a specific documentation and
   folder structure.  As such we now add a standard .gitignore file that
   should cover the vast majority of use cases.

* Changes in 0.2 (since 0.1.1)

** Bugfix: clean: handle nested subdirectories correctly.

   `hall clean' is supposed to recursively walk the project.  Prior to
   this, the walk would stope at the first subdirectory beneath the
   project root.  Now subdirectories should be walked in their
   entirety.

** Improve output of Makefile.am generator.

** Generate a fully-fledged test-driver.

   The test driver parses output from srfi-64 test files.  This means
   any such test files will now work out of the box with guile-hall.

   Thanks to Catonano for the suggestion, and Mathieu Lirzin for
   writing the original test-driver that we use in the project.

** Accept all error conditions when trying to fetch license.

   Should license fetching fail for any reason, then we just use a
   placeholder text.

** No longer assume we have a subdirectory with scheme files.

   This means guile-hall can be used to manage single script file
   projects.

* Changes in 0.1.1 (since 0.1)

** Add more default content for various files.

* Publication at 0.1
