Release Process

Update to the latest LLVM version

There can be LLVM syntax changes between releases, and we want to ensure that each DDC new release works with the current LLVM syntax.

Update the default LLVM version string to the current release

In DDC.Llvm.Pretty.Base the default version used when displaying debugging information is hard coded, though when compiling real modules we interrogate the installed LLVM compiler.

Link TODOs

Grep the source for TODO, FIXME, BROKEN etc and enter these into the trac as new issues. Change the TODOs to "ISSUE #NNN" to refer to the issue as entered on the trac.

Audit hard errors

Grep the source for uses of the error function and ensure they at least give the name of the package that causes the error. We don't want any calls like error "blerk" in a released version.

Clear current issues

Ensure that all issues with the to-release version as their milestone are either fixed or have their milestone set to the next version.

Eliminate scar tissue

The codebase should not contain slabs of commented out code. Slabs of unused code need to be deleted, or moved to /icebox if there is a high chance we'll want it back.

Eliminate leftover traces

Grep the source for "Debug.Trace" and "trace". There shouldn't be any of these in the released version.

Forbidden functions

Grep the source for forbidden functions. These all fail with an unhelpful error message and are banned from the DDC source tree.

undefined head tail init fromJust (!!)

Fix cabal files

Ensure that all modules are entered in the cabal files, and the packages build. Hide internal modules that we don't want to reveal in the public-facing API.


Build the complete documentation and ensure all functions and data structures are documented. Use the cabal haddock command to exercise the .cabal files.

Add release notes to doc/release

Release notes should summarise the main changes since last release, and who worked on it, for posterity. We don't need a list of the issues fixed, as these are kept in the trac.

Clean wiki

Go though all the wiki pages and ensure old stuff is deleted or updated.

Check version strings

Check that ddc and ddci-core in include the correct version string. Also bump the year in the LICENSE files if needed

Build and check the source distros

Do cabal sdist for each of the packages, and then unpack and build the unpacked version. This should catch any modules that were part of the build but didn't make it into the cabal file.

Create a new branch on github

Make a branch for the new released version, and update links to demo programs on the wiki and release notes / readme to point to the ones in the new branch.

Test on all platforms

Ensure DDC builds cleanly on all platforms.

Last modified 10 months ago Last modified on Sep 6, 2016, 10:15:59 AM