Skip to content

Releases: smudgelang/smudge

0.7.1

10 Oct 13:33
Compare
Choose a tag to compare

v0.7.1: This minor release fixes a bad include path in the generated output.

0.7

10 Oct 03:30
Compare
Choose a tag to compare
0.7

v0.7: First release as a part of Splat: the Smudge Platform.

  Project:

  The Smudge language now has a distribution, Splat, including both
  the Smudge compiler and the Smear environment and runtime.

  Oh yeah, the Smudge language also now has an official runtime: Smear!
  The compiler supports generating bindings using the `--c-smear` flag.

  Features:

  The biggest minor feature is that event cycles are detected and
  rejected.  Yes, that's right, Smudge solves (a tiny subset of) the
  halting problem.  It is pretty conservative; it rejects machines
  unless it can tell that all messages sent to an empty queue halts.

  Errata:

  Smudge now generates code that no longer yields an unused parameter
  warning.  This means that all Smudge output compiles silently with:

  gcc -c -std=c89 -pedantic -Wall -Wextra -Werror -Wno-unused-function

  Additionally, there were several errors that were discovered using
  code gen; most of these have been fixed.

  Tickets:

  21: Reject event cycles.
  43: A single state can't handle an event two different ways.
  58: Detect undeclared events sent to other state machines.
  61: Any cannot be transient
  62: Vim mis-highlights parenthesis in name.
  67: Forbid nonsensical any states
  73: Boolean command line switches should be invertable.:

0.6

09 Jan 20:17
Compare
Choose a tag to compare
0.6

v0.6: First open source release, now with better debugging and control.

  Project:

  In an exciting development for the Smudge project, as of October,
  Smudge is now under a BSD 3-clause license!

  Releases are now available for Windows using an installer, and on
  Ubuntu/Debian using a deb package, in addition to zip/tar archives.

  Features:

  Smudge files may now begin with some number of pragmas, before the
  name of the first state machine, thereby enabling any required
  command-line flags (except 'help' and 'version') for that file alone.
  For example, to enable strictness checking for a file, simple start
  the file with:
    #strict

  Two helpful debugging flags were added: --logevent and --logstate.
  The former calls a log function upon receipt of specified events, and
  the latter upon entry into the specified states.  For example, in
  order to enable logging on all events for the "buggy" state machine
  except "noisy" (which is disabled to avoid cluttering the logs):
    smudge --log-event --no-logevent=buggy.noisy buggy.smudge

  NOTE: in order to use the above logging flags, the function
  SMUDGE_debug_print must be defined, which should be the same as
  SMUDGE_panic_print (with the exception of not panicking).

  Errata:

  State machines with leading numbers now yield compilable mangled
  names.  Mangled names that would produce undefined behavior are
  caught and instead yield an error which can be overcome with the
  newly added --nsprefix flag.

  If GraphViz is not installed, Smudge will now exit with an error.

  Errors now refer to the precise location of an error where possible,
  instead of the approximate location.

  Tickets:

  78: lintian - fix file ownership
  53: File-level compilation switches
  38: Event logging for debugging
  44: GraphViz - concatenate parallel edges.
  72: C Identifiers can't begin with numbers or underscores
  59: Friendly message to install GraphViz
  73: Boolean command line switches should be invertable.
  69: Add commit hash to version
  64: PackageInfo warning
  37: Comment header warning of generated code.
  47: Error granularity finer than SM

0.5

03 Nov 01:18
Compare
Choose a tag to compare
0.5

v0.5: A major release, that makes backwards incompatible changes to
the generated code for the C backend.

  The intent is for this release to be the last API-breaking one
  before 2.0.

  IMPORTANT: This release includes backwards incompatibilities. In
  order to use it, you will need to add hooks for message
  passing. See the parts of the tutorial that deal with
  Handle_Message and Send_Message for details. In addition, some
  names generated by Smudge may have been changed. If you use
  anything other than alphanumeric characters for the names of
  your state machines and events, you will have to update your
  C code.

  Features: Adds message passing hooks for user code to queue
  events. Most names are now prettier. Added memory management
  hooks for freeing events.

  Documentation: Updated the tutorial to include the new and
  exciting features.

  Architecture: Replaced monolithic C backend with SmudgeIR
  intermediate representation.

  Tickets:

  20: Refactor C backend to simplify.
  60: Duration is Complicated.
  65: Standardize on a properly injective mangling scheme
  13: Message Passing is Complicated.
  68: Fix documentation.

0.4

03 Nov 01:17
Compare
Choose a tag to compare
0.4

v0.4: A major release, that corrects some long-standing Smudge issues.

  IMPORTANT: This includes a backwards-incompatible rename:
                assert        -> SMUDGE_panic
                printf_assert -> SMUDGE_panic_print

  Features: Added --strict flag which only allows functions for
  one event type.  The prototype for panic_print is now generated.!
  Added --namespace flag, with a default namespace of SMUDGE.
  Added --rename flag, which lets you rename symbols, e.g.:
    smudge --rename="@SMUDGE.@panic @assert"

  Architecture: Added a constraint solver type checker.  Added a
  fleshed out language definition with a section on the grammar
  and one on the type checker.  Removed the syntax for typed
  functions (the semantics of which were never implemented).

  Errata: A few minor parser bugs were fixed, including one that
  permitted junk at the end of a smudgle, and another that allowed
  empty event handler lists.

  Tickets:

  15: Typed function calls not implemented.
  22: Semantic pass to reject conflicting side effect return types
  23: Optional semantic pass to strictly reject conflicting side effects
  29: Problems with assert and special functions.
  39: States must have at least one event.

0.3.1

03 Nov 01:10
Compare
Choose a tag to compare
0.3.1 Pre-release
Pre-release

v0.3.1: This minor release improves certain error messages, and corrects
handling of flags overriding output file locations.

  Tickets:

  25: Resolve conflict between QualifiedName [] and QualifiedName [""]
  48: Map.!: given key is not an element in the map
  51: Fix output path messiness.

0.3

03 Nov 00:53
Compare
Choose a tag to compare
0.3 Pre-release
Pre-release

v0.3: This release is much polished compared to 0.2, and suitable for
even broader use.

  Tickets closed because they were in the roadmap:

  14: Any State + Any Event = Maybe Semantic Pass Failure.
  17: Exit functions are generated for terminal states.
  27: Better error messages
  32: Transient state @function prototypes
  33: _ [ _ -- ]
  34: Clean up release target.

  Tickets closed because we felt like it:

  18: _ event in _ state.
  31: Expose a way to get internal state?
  35: Separate object directories
  36: Option to disable no-transition events in dot output
  41: Debug code takes up global memory.
  50: --output-path=PATH

  Tickets deferred to 0.4:

  15: Typed function calls not implemented.

0.2

03 Nov 00:51
Compare
Choose a tag to compare
0.2 Pre-release
Pre-release

v0.2: Broader release for some limited use. Generates working C code
for simple state machines.

0.1

03 Nov 00:50
Compare
Choose a tag to compare
0.1 Pre-release
Pre-release

v0.1: First release for early testing. Generates basic dot output for
a single state machine. Configurable via command line options.