New features (albeit very minor ones): * Eliminated tail recursion in favor of loops in the generated C code; no dependency on gcc for implementing this feature anymore. * Modified the rts queue handling so that messages with identical deadlines/baselines are circulated wherever possible (even though this cannot affect schedulability). * Changed program startup code to exclude module initializations from work attributed to the startup message. * Made the number of cpu cores a dynamically selected parameter instead of a hard coded value. * Changed name of primitive type 'PID' to 'OID' in accordance with documentation. * Wiped out the 'while' syntax. * Extended the possibilities to use record stuffing patterns in structs that themselves are defined using stuffing syntax. * Allowed internally generated state types to appear abstractly in module interfaces. * Implemented the static Delay rule for subtype coercions, which transforms coercion selections from forward references into forward references in their own right. Not as nice as a dynamic Delay rule, but better than ill-founded recursion generated by the compiler. * Changed the script ./timberc to run the latest compiler build relying on a previous install for a valid datadir. * Changed the monomorphism restriction so that single variable right-hand sides are allowed to be polymorphic, but non-function recursion is always monomorphic. * Changed some defs in Prelude to use struct stuffing in a more direct way. * Separated the Monad and Applicative type classes to better align with Haskell wisdom, and updated the parsing combinator files accordingly. * Adapted Data.Objects.Dictionary to use monadClass. * Added function fromJust to Prelude. * Added an implementation of "The Santa Problem" to the examples collection. Bug fixes (mostly listed in internal form, with little connection to the examples that trigger them): * Fixed Prelude bugs in 'replicate' and the Applicative Maybe instance. * Moved the start-gc-test to a more proper place *before* a worker might go to sleep. * Fixed bug in the POSIX rts leading to active threads not being properly registered in the runQ. * Fixed race condition bug in the code for allocating new heap segments. * Fixed bug in the placement of interrupt airholes in scanTimerQ. * Switched to using octal escape sequences in the generated C code, as well as some standard escapes, for the purpose of avoiding C/Haskell mismatches (and the ambiguous length of hexadecimal escapes). * Fixed bug causing rts function Raise to crash when called from a non-Cmd context. * Fixed bug causing incorrect gcinfo being generated for extensions to the Msg type. * Fixed a bug in the splitting of switches into nullary/non-nullary cases in Prepare4C. * Fixed a bug in Prepare4C causing loss of dependencies between generated bindings. * Added missing indirect dependencies on free type variables to the lambda-lifter. * Fixed the Kindle translation of Class, Cmd and Request types so that it works even if the saturated type expression is obtained only after a type substitution. * Reworked the arity-adapting pieces of Core2Kindle to work correctly even in the higher-order case. * Fixed incorrect entering of polymorphic closures in Core2Kindle. * Fixed bug in Type2: polymorphic quantifiers not already present in the input to Type2 were not properly encoded in the generated terms. * Removed printing of what would seem like scoped type variables in the type inference output, and also removed prefixing of "_" to truly scoped variable occurrences in type declarations. * Prevented term reduction from choking on static divide-by-zero terms. * Removed erroneous inlining of state variables. * Corrected the code for type-expression duplication in the presence of free unification variables. (The parsing combinator tests work again!) * Fixed unexplicable slip that avoided using the special code for reducing case alternatives (no eta-reduction must be allowed here). * Removed incorrect resetting of the 'ticked' constraint attribute which caused incomplete removal of internally generated coercion constraints. * Fixed bug causing incorrect pruning of substitutions in the type- checker. * Fixed accidental reordering of mutually recursive binidings during dependency analysis. * Made type syntax checks generate proper error messages instead of internal errors (and added an explicit error message for illegal use of type wildcards). Various code cleanups: * Removed superfluous file env.h * Introduced a custom made Exception type for error handling in the compiler. * Added test files related to recent bug fix history. * Added "linkLibs" as a separate configuration parameter in each rts. * Made the original form of a symbolic name (re)appear in the generated C code as a comment appended to the generated name. * Added primitive closure names for arities 1-3.