2026-02-24  Rutger van Beusekom  <rutger@dezyne.org>

	script: Add catch all with-exception-handler for any command.
	This is a follow-up to commit
	    script: Add catch all with-exception-handler for any command.
	    2fd73f6c2d0b5554edbeb649457959cb2396e15f

	* dzn/script.scm: Prefix error with "internal error"; use "unknown
	exception" for exceptions without message.

2026-02-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Add ANNOUNCE-2.20.0.
	* doc/announce/ANNOUNCE-2.20.0: New file.

2026-02-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Revert "build: Ignore doc/dezyne.info-{1,2} too."
	With --no-split, this is no longer necessary.

	This reverts commit 7001d352badc332c9a25c75aba36e81748b4c95e.

2026-02-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Do not split info file.
	* Makefile.am (MAKEINFOFLAGS): New variable.

2026-02-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: system_shared: Eradicate.
	* test/all/system_shared/trace: Remove stray file.

2026-02-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Post-release update.
	* Makefile.am (--previous-version): Bump to 2.19.3
	* NEWS (Changes in 2.19.3 since 2.19.2): Typo.

	guix: dezyne: Update to 2.20.0.rc0.
	* guix/pack/dezyne.scm (dezyne): Update to 2.20.0.rc0.

2026-01-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.20.0 since 2.19.2): New section.
	(Changes in 2.19.3 since 2.19.3): Typo.

2025-11-26  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Update `ROADMAP':
	* ROADMAP (Release 2.20): Move `shoaw defer skip, function call...' to...
	(Release 2.21): ...here.  Add wip-lookup.
	(Release 2.20): Remove.
	(Release 2.25): Add port parameters.  Deprecate injected.

2026-02-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Ignore doc/dezyne.info-{1,2} too.
	* .gitignore: Use /doc/dezyne.info*.

2026-01-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Revert "Deprecate injection."
	Injection is used for more than only a poor man's foreign function
	replacement, notably:

	  * stateful behavior

	Until there is a better solution for those, let's keep injected.

	This reverts commit d0a84c438d485924b6e4b1c341da194db0e2d401.

2025-12-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Deprecate injection.
	* dzn/ast/wfc.scm (wfc <port>): Add deprecation warning.
	* doc/dezyne.texi (Integrating C++ Code): Add note about deprecation.
	(Injection): Likewise.
	(Systems): Likewise.
	(Using Injection): Likewise.
	* test/all/parse_port_qualifier/baseline/verify.err,
	test/all/wf_bindingRequiredWildcard/baseline/verify.err,
	test/all/wf_injectionOutEvent/baseline/verify.err: Update baseline.
	* doc/parse/binding-two-wildcards.texi,
	doc/parse/binding-wildcard-requires.texi,
	doc/parse/injected-with-out-event.texi: Update accordingly.

2026-01-16  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Simplify and fix defined-function.
	* dzn/ast/wfc.scm (defined-function): Use ast:lookup via .function to
	determine if the call can be resolved.

2026-01-29  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Document the foreign aspect of foreign functions.
	* doc/dezyne.texi (Functions): Describe the non-determinstic semantics
	of calling foreign functions.

2026-01-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add foreign_function_space_function.
	* test/all/foreign_function_space_function: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2026-01-12  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add foreign_function_shadow_event.
	* test/all/foreign_function_shadow_event: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2026-01-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add space.foreign_functions.
	* test/all/space.foreign_functions: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2025-12-22  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_foreign_function_bool_state.
	* test/all/hello_foreign_function_bool_state: New test.
	test/all/local.mk (FEATURE_TESTS): Register it.

2025-12-23  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Always pass bahavior state to foreign function.
	* dzn/code/scmackerel/makreel.scm: (makreel:process-formals): Add
	missing model parameters to global function process.

2026-01-05  Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_data_assign.
	* test/all/hello_data_argument/hello_data_assign.dzn:
	* test/all/local.mk (FEATURE_TESTS): Add it.
	* test/all/hello_data_assign/META: Add reply-data feature.

2026-01-26  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Make a foreign call deterministic.
	* dzn/vm/run.scm (foreign-call?): New procedure ...
	(non-deterministic?): ... use here to ignore pcs with
	<postponed-match> status caused by a foreign call.

	vm: Remove redundant sut prefix from end-of-trail labels.
	* dzn/vm/util.scm (end-of-trail-labels): Do not redundantly add the
	"sut." prefix to end-of-trail labels when the instance is the sut.

2026-01-25  Rutger van Beusekom  <rutger@dezyne.org>

	normalize: Add support for foreign functions.
	* dzn/ast/normalize.scm (add-function-return): Handle foreign functions.

2025-11-25  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_foreign_function_data_space.
	* test/all/hello_foreign_function_data_space: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

2025-10-13  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_foreign_function_data.
	* test/all/hello_foreign_function_data: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

2025-12-10  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Expand return "*" to all values.
	* dzn/vm/step.scm (step <return>): Return a list of pcs for each return
	value.

	vm: Refactor to avoid unnecessary eval.
	* dzn/vm/step.scm (step <call>): Use let value.

2025-12-07  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_foreign_function_enum_space.
	* test/all/hello_foreign_function_enum_space: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

2025-12-06  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Add function and prototype to namespace.
	* dzn/parse/peg.scm (peg:parse): Cater for prototype.

2025-12-03  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Forward declare foreign functions.
	* dzn/code/scmackerel/c++.scm (c++:global-function->statements):
	Generate prototype for function without a compound statement.

2025-10-03  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_foreign_function_int.
	* test/all/hello_foreign_function_int: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

	test: Add hello_foreign_function_enum.
	* test/all/hello_foreign_function_enum: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

2025-09-30  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_foreign_function_bool.
	* test/all/hello_foreign_function_bool: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

2025-12-10  Janneke Nieuwenhuizen  <janneke@gnu.org>

	config: Add "foreign_function" feature.
	* dzn/config.scm.in (%feature-alist): Add "foreign_function".
	* test/dzn/dzn.scm (file-name->features): Check for it.

2025-12-06  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Implement return *;
	* dzn/code/scmackerel/makreel.scm: (makreel:return->value): Refactor
	arguments ...
	(ast->process): ... to match usage here; implement * as a
	non-determinstic sum.

2025-12-03  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Handle foreign functions, i.e., without statement.
	* dzn/ast/wfc.scm (wfc-function): Do not check the statement of an
	foreign function.
	(missing-return): Skip missing return check for foreign functions.

2025-12-02  Rutger van Beusekom  <rutger@dezyne.org>

	ast: Cater for prototype.
	* dzn/ast/parse.scm: (parse:tree->ast): Add the case for prototype and
	from it create a function with a return * statement.

2025-12-01  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Allow the prototype of a function to be declared.
	* dzn/parse/peg.scm: (peg:parse): Add prototype production rule; add it
	to global definitions.
	* test/all/parse-flags/baseline/parse.err,
	test/all/parse_fall_back_import_path/baseline/verify.err,
	test/all/parse_fall_back_out_binding_argument/baseline/verify.err,
	test/all/parse_fall_back_preprocessed_foo/baseline/verify.err,
	test/all/parse_fall_back_preprocessed_imported_bar/baseline/verify.err,
	test/all/parse_fall_back_preprocessed_imported_baz/baseline/verify.err,
	test/all/parse_fall_back_syntax/baseline/verify.err,
	test/all/parse_import_end/baseline/verify.err,
	test/all/parse_import_path/baseline/verify.err,
	test/all/parse_preprocessed_foo/baseline/verify.err,
	test/all/parse_preprocessed_imported_bar/baseline/verify.err,
	test/all/parse_preprocessed_imported_baz/baseline/verify.err,
	test/all/parse_syntax/baseline/verify.err: Add prototype to parse
	error in baseline.

2025-11-25  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add LTS based testing.
	* test/dzn/dzn.scm (run-lts-test): New procedure to generate and run an
	i/o-lts on an executable.
	(run-code): Use it.

	test: New command.
	* dzn/commands/test.scm: New file.
	* dzn/commands/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/test.scm: New file.
	* dzn/local.mk (dist_%C%_scm_DATA): Add it.
	* doc/dezyne.texi (Invoking dzn test): Document it.

	lts: Extend lts command with input output LTS generation.
	* dzn/lts.scm (i/o-lts): New procedure that prefixes LTS labels with in
	and out.
	* dzn/commands/lts.scm (main): Add i/o-lts option.

	pipe: Remove draining stderr.
	* dzn/pipe.scm (pipeline*): Do not read from child stderr.

	verify: Make stderr line buffered.
	* dzn/commands/verify.scm (main): Set buffering on stderr to 'line.

	trace: Add illegal as expected output.
	* dzn/trace.scm (trace-parse): Parse <illegal>.
	(<illegal>): Add record.
	(step->communication): Instantiate record here.
	(illegal->string): New procedure.
	(step->code, step->event): Use it.
	(steps->trail): Include <illegal>.

	runtime: c++: Ready for lts testing.
	* runtime/c++/dzn/pump.hh (struct pump): Add member and corresponding
	ctor parameter with default initialization.
	* runtime/c++/pump.cc (pump::wait): Use it to enable waiting for
	pending timers.

2026-02-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c: Add include guard for global functions.
	* dzn/code/scmackerel/c.scm (c:include-guard): Cater for global function.
	(c:global-function->header-statements): New procedure.
	(root->header-global-functions): Use it in new procedure.
	(root->header-statements): Use it.

	test: c++: Use -Wredundant-decls.
	* test/lib/build.c++.make (WARN_FLAGS): ADd -Wredundant-decls.

2026-01-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c++: Add include guard for global functions.
	* dzn/code/scmackerel/c++.scm (c++:include-guard): Cater for function guard.
	(c++:global-function->statements): New procedure, factored-out from...
	(root->global-functions): ...here.
	(c++:global-function->header-statements function): New procedure.
	(root->header-global-functions): New method.
	(root->header-statements): Use it.
	(print-header-ast): Remove root->header-statements.

	ast: Fix ast:full-name for functions.
	* dzn/ast/accessor.scm (ast:full-name <function>): New specialization.

2026-02-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c++: Have a global function generate a compilation unit.
	* dzn/code/language/c++.scm (c++:generate-source?): Also create a
	compilation unit for a global function.

2025-01-16  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Document global functions.
	* doc/dezyne.texi (Dezyne Files): Add global function.
	(Functions): Document global functions.

	doc: Reword functions to functionality in patches.
	* doc/dezyne.texi (Introduction): Reword functions to functionality in
	patches.

2025-03-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Typo.
	* doc/dezyne.texi (Invoking dzn): Use `-t' as short option of `--transform'.

2026-01-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add space.function.
	* test/all/space.function: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-10-09  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add global_function_space.
	* test/all/hello_global_space_function: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2026-01-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	scheme: Support function call for component in nampsace.
	* dzn/templates/scheme/functions@function: Use x:model-full-name instead
	of x:model-name.

2025-11-09  Rutger van Beusekom  <rutger@dezyne.org>

	code: Prefix global function calls with namespace.
	* dzn/code/scmackerel/code.scm (ast->namespace): New procedure.
	(ast->code <call>): Use it.

	peg: Allow global function in namespace.
	* dzn/parse/peg.scm (peg:parse): Add function to namespace-root; guard
	enum-literal with !call to global function in namespace

2025-03-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add support for dzn-flags in META.
	* test/dzn/dzn.scm (dzn-flags): New procedure.
	(run-verify, run-code, run-traces, run-constrained-component,
	run-constrained-no-compliance, run-simulate-trace, run-lts): Use it.

	command-line: Cater for multi-options on dzn.
	* dzn/command-line.scm (dzn:command-line:get): Consider multi-options.

2026-01-19  Rutger van Beusekom  <rutger@dezyne.org>

	test: Refactor and add missing cases to unreachable_function.
	* test/all/unreachable_function/unreachable_function.dzn: Add bool
	functions and call in combination with and/or expressions.

2025-01-22  Paul Hoogendijk  <paul@dezyne.org>

	test: Add global_function_shadow.
	* test/all/global_function_shadow: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	test: Add global_function_chain.
	* test/all/global_function_chain: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2024-11-03  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_global_function.
	* test/all/hello_global_function: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

2026-01-06  Rutger van Beusekom  <rutger@dezyne.org>

	config: Add "global_function" feature.
	* dzn/config.scm.in (%feature-alist): Add global function.
	* test/dzn/dzn.scm (file-name->features): Check for it.

2025-12-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c: Support global function.
	* dzn/code/scmackerel/c.scm (ast->code <call>): Cater for global function.
	(function->function): New procedure.
	(root->global-functions): Use it in new method.
	(print-header-ast): Use it.
	(print-code-ast): Likewise.

	javascript: Support global-function.
	* dzn/templates/javascript/expression@call,
	dzn/templates/javascript/source@root: Cater for global function.
	* dzn/templates/javascript/global-function@function,
	dzn/templates/javascript/this@model,
	dzn/templates/javascript/this@root: New files.

	scheme: Support global-function.
	* dzn/code/language/scheme.scm (scheme:exported-names): Cater for global function.
	* dzn/code/legacy/code.scm (code:global-functions): New method.
	(code:this <call>): New specialization.
	* dzn/templates/code.scm (function-name, this): New templates.
	* dzn/templates/scheme/expression@call:
	dzn/templates/scheme/global-function@function: Cater for global function.
	* dzn/templates/scheme/this@model,
	dzn/templates/scheme/this@root: New files.

2025-12-12  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	c++: Support global function.
	* dzn/code/scmackerel/c++.scm (c++:->formal): Cater for out-parameters.
	(ast->code <action>): Cater for global function.
	(root->global-functions): New method.
	(root->statements, print-header-ast): Use it.
	* dzn/code/scmackerel/code.scm (ast->code <call>): Cater for global function.

2025-01-21  Paul Hoogendijk  <paul@dezyne.org>

	makreel: Fix crash for local variables in global functions.
	* dzn/code/language/makreel.scm (makreel:member*): Cater for global
	function.

2025-11-09  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Generate processes for called global functions.
	* dzn/code/language/makreel.scm (calls:direct->direct+indirect): New
	procedure.
	(makreel:call-continuation*-unmemoized): Use it.
	* dzn/code/scmackerel/makreel.scm (%return-type): Add global functions.
	(model->scmackerel): Update accordingly.
	* (interface->scmackerel-unmemoized): Update accordingly.  Generate
	makreel infrastructure consistently for functions and returns,
	(return-processes): Make sure there is always a return process.
	(%return-type): Make sure there is always a void return type.
	* dzn/ast.scm (ast:recursive?): Use eq? instead of ast:name-equal?.
	* dzn/ast/recursive.scm (set-called?): Compare the function's locations
	instead of using ast:name-equal?

2026-01-19  Rutger van Beusekom  <rutger@dezyne.org>

	accessor: Add ast:function* specialization for <interface>.
	* dzn/ast/accessor.scm (ast:function* <interface>): Add missing
	specialization.

2025-11-07  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Refactor model parameter for global function support.
	* dzn/code/language/makreel.scm (%model-name): Rename to %model and
	store actual as opposed to just the name of the model.
	(makreel:get-model, makreel:init): Refactor using %model.
	(makreel:call-continuation*): Derive behavior from %model for global functions.
	* dzn/code/scmackerel/makreel.scm (%model-name): Implement as procedure
	using %model.
	(statement->process-name, ast->process, function->processes): Make model
	explicit using %model.
	(model->scmackerel, port-processes): Set %model.

2025-01-27  Paul Hoogendijk  <paul@dezyne.org>

	makreel: Add function name to first process of function.
	* dzn/code/scmackerel/makreel.scm (statement->process-name <ast>): Add
	function name.
	(statement->process-name <model>): Likewise.

2025-11-24  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	makreel: Add global functions.
	* dzn/ast/lookup.scm (.function): Remove overload with <model>;
	generalize lookup to find function by name anywhere.
	* dzn/ast/normalize.scm (add-temporary): Support global functions in
	add-temporary.
	* dzn/code/language/makreel.scm (dzn): Remove makreel:called-function*.
	(reachable, reachable-calls-unmemoized, reachable-calls, is-called?,
	markeel:called-function*): Remove.
	(makreel:call-continuation*-unmemoized): Update Accordingly.
	(makreel:process-identifier): Use provided model parameter for global
	functions.
	* dzn/code/scmackerel/makreel.scm (statement->process-name <model>):
	New specialization.
	(ast->process <call>): Use it.
	(%return-type): Ignore expression functions.
	(interface->scmackerel-unmemoized, model->scmackerel): Use
	ast:function* and ast:function** instead of makreel:called-function*.
	* test/all/parse-flags/baseline/parse.err,
	test/all/parse_fall_back_import_path/baseline/verify.err,
	test/all/parse_fall_back_out_binding_argument/baseline/verify.err,
	test/all/parse_fall_back_preprocessed_foo/baseline/verify.err,
	test/all/parse_fall_back_preprocessed_imported_bar/baseline/verify.err,
	test/all/parse_fall_back_preprocessed_imported_baz/baseline/verify.err,
	test/all/parse_fall_back_syntax/baseline/verify.err,
	test/all/parse_import_end/baseline/verify.err,
	test/all/parse_import_path/baseline/verify.err,
	test/all/parse_preprocessed_foo/baseline/verify.err,
	test/all/parse_preprocessed_imported_bar/baseline/verify.err,
	test/all/parse_preprocessed_imported_baz/baseline/verify.err,
	test/all/parse_syntax/baseline/verify.err: Update error with function
	at root level.

2026-01-26  Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	peg: Allow functions in root, aka global functions.
	* dzn/parse/peg.scm (peg:parse): Allow functions at root level.

2025-11-07  Rutger van Beusekom  <rutger@dezyne.org>

	lookup: Remove redundant code.
	* dzn/ast/lookup.scm (search-unmemoized): Remove unused statement.

2025-11-24  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Add global functions.
	* dzn/ast/wfc.scm (defined-function): Add support for global functions.
	(call-context): Do not handle a call to an unknown function as valued.
	* test/all/wf_undefined_function/baseline/verify.err: Update baseline.
	* dzn/ast/wfc.scm (wfc <root>): Also check global functions.

2025-11-07  Rutger van Beusekom  <rutger@dezyne.org>

	ast: Move ast:function* overload for <function>.
	* dzn/ast.scm: (ast:recursive?): Here and rename to
	function->called-functions; add comment.

2025-09-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	accessor: Add function**.
	* dzn/ast/accessor.scm (ast:function**): New method.
	* dzn/ast.scm: Re-export it.

2025-12-10  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Refactor.
	* dzn/code/scmackerel/c++.scm (ast->code): Remove unused let values.

2025-01-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	peg: Use compound-name for <call>.
	This prepares for a call to a global function defined in a namespace.

	* dzn/parse/peg.scm (peg:parse): Use compound-name for <call>.
	* dzn/parse/tree.scm (.name): Update accordingly.
	* dzn/ast/wfc.scm (defined-function): Refactor, use ast:name-equal? and
	ast:name.
	* dzn/code/language/makreel.scm (is-called?): Use ast:name-equal?.
	(tick-names-): Tick function's <scope.name>.
	* test/dzn/language.scm ("component-incomplete-port after behavior",
	"component-incomplete-port behavior end"): Remove expected failure
	marking.
	* dzn/code/scmackerel/code.scm (ast->code <call>): Use ast:name.
	* dzn/code/scmackerel/cs.scm (ast->code <call>): Likewise.
	* dzn/code/language/dzn.scm (print-ast <function>, print-ast <call>):
	* dzn/code/scmackerel/c.scm (ast->code): Use ast:name.
	* dzn/templates/javascript/expression@call,
	dzn/templates/scheme/expression@call: Update accordingly.
	* test/all/code-json/baseline/parse.out,
	test/all/parse_function_shadow_event/baseline/verify.err: Update
	baseline.

2025-09-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Have ast:equal? cater for scope.name.
	* dzn/ast/equal.scm (ast:name-equal? <named> <scope.name>): New
	specialization.
	(ast:name-equal? <scope <named>.name>): Use it in new specialization.

	ast: Extend ast:empty-namespace?.
	* dzn/ast/equal.scm (ast:empty-namespace? <scope.name>): New specialization.

2025-02-17  Paul Hoogendijk  <paul@dezyne.org>

	wfc: Report undefined port correctly.
	* dzn/ast.scm (ast:wildcard? <ast>): New specialization.

2025-12-31  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Throw on unset %context.
	* dzn/ast/context.scm (ast:memoize-context): Assert %context.
	(ast:context): Likewise.

2025-01-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Avoid language-specific wfc errors.
	* dzn/commands/parse.scm (main): Set %language to "dzn".

2023-07-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Refactor tree-collect-filter using ast:keyword+child*.
	* dzn/ast/util.scm (tree-collect-filter <ast>): Change to...
	(tree-collect-filter <object): ...this, and refactor.
	(tree-collect-filter <ast-list>): Remove.

2024-02-10  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Refactor tree-find using ast:keyword+child*.
	* dzn/ast/util.scm (tree-find <ast>): Change to...
	(tree-find <object): ...this, and refactor.
	(tree-find <pair>): Change to...
	(tree-find <top>: ...this, and refactor.

2023-07-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Refactor tree-map using ast:keyword+child*.
	* dzn/ast/util.scm (tree-map <ast>): Change to...
	(tree-map <object): ...this, and refactor.
	(tree-map <ast-list>, tree-map <namespace>, tree-map <root>): Remove.

	ast: Refactor deep-clone using ast:keyword+child*.
	* dzn/ast/util.scm (deep-clone <ast>): Change to...
	(deep-clone <object): ...this, and refactor.
	(deep-clone <pair>): Remove.

	ast: Refactor keyword-values+mutate using ast:keyword+child*.
	* dzn/ast/util.scm (ast:keyword+child*, ast:child*): Local imports.
	(keyword-values+mutate?): Use them to refactor.

	ast: Add ast:keyword+child*.
	* dzn/ast/context.scm (ast:keyword+child*): New method, factored-out
	from...
	(ast:child*): ...here.

2023-07-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	goops: Remove ast:inevitable, ast:optional.
	* dzn/ast/goops.scm (ast:inevitable, ast:optional): Remove.

2025-09-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Revert "Use perfect-funcq instead of ast:perfect-funcq."
	This reverts commit 4a44280f6eda99e942db045fc2c00be994d11ccd.

2023-07-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Use perfect-funcq instead of ast:perfect-funcq.
	* dzn/ast/lookup.scm (ast:funcq, ast:pure-funcq, ast:perfect-funcq):
	Move to...
	* dzn/misc.scm (funcq, pure-funcq, perfect-funcq): ...here.  Update
	callers throughout.

	ast: Eradicate ast:eq?.
	* dzn/ast/equal.scm (ast:eq?): Remove.
	* dzn/ast.scm
	dzn/ast/lookup.scm,
	dzn/ast/normalize.scm,
	dzn/ast/wfc.scm,
	dzn/code.scm,
	dzn/code/language/c.scm,
	dzn/code/language/dzn.scm,
	dzn/code/language/makreel.scm (makreel,
	dzn/code/scmackerel/c++.scm (system->sm,
	dzn/code/scmackerel/c.scm,
	dzn/code/scmackerel/cs.scm,
	dzn/code/scmackerel/makreel.scm (makreel,
	dzn/explore.scm,
	dzn/simulate.scm,
	dzn/transform.scm ,
	dzn/verify/pipeline.scm (mcrl2,
	dzn/vm/compliance.scm,
	dzn/vm/evaluate.scm,
	dzn/vm/report.scm,
	dzn/vm/run.scm,
	dzn/vm/runtime.scm,
	dzn/vm/step.scm,
	dzn/vm/util.scm ,
	test/dzn/ast.scm: Remove callers.

	ast: Eradicate ast:node-eq?.
	* dzn/ast/equal.scm (ast:node-eq?): Remove.
	(ast:eq?): Remove caller.
	(ast:equal?): Likewise.
	* dzn/vm/evaluate.scm (expr:equal?): Likewise.

2023-07-24  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add ast unit test.
	* test/dzn/ast.scm: New file.
	* test/dzn/local.mk (UNIT_TESTS): Add it.

2023-08-04  Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	ast: Use %context instead of <ast-node> and <ast> wrapping.
	Use parameterized hash-table from pointer to context: (ast ancestor-0
	...  ancestor-n root) for parent lookups, in new %context parameter.

	Throughout, replace (clone ... #:parent) with (graft ...).

	* dzn/ast/goops.scm (define-ast): Create <ast>s, instead of <ast-node>s.
	Export <ast> and accessors.
	(<ast>)[node, parent]: Remove fields.
	[comment]: Move field from...
	(<ast-node>): ...here.  Remove type.
	(.elements <ast-list>): Remove specialization.
	(initialize <root-node>): Change to...
	(initialize <root>): ...this.
	(.id <ast>): Remove specialization.
	(construct): Remove procedure.
	(node-class, ast:unwrap, make-wrapper, get-parent, make-instance):
	Remove methods.  Update class definitions accordingly.

	* dzn/ast/parse.scm (parse:tree->ast): Create <ast>s, instead of
	<ast-node>s.
	* dzn/ast/context.scm: New file.
	* dzn/ast/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/parse.scm (parse:annotate-ast): Set first %contexts using
	ast:memoize-context.  Use with-root with silence annotation.

	* dzn/simulate.scm (simulate*): Likewise.
	* dzn/vm/normalize.scm (vm:normalize): Likewise.
	* dzn/code.scm (code:normalize-, code:normalize+determinism): Likewise.
	* dzn/code/language/cs.scm (cs:normalize): Likewise.
	* dzn/code/language/makreel.scm (makreel:normalize): Likewise.
	* dzn/code/language/scheme.scm (scheme:normalize): Likewise.
	* dzn/commands/parse.scm (parse): Likewise.
	* dzn/code/language/json.scm (system-diagram): Likewise.
	(json:get-fields <ast-node>): Change to...
	(json:get-fields <ast>): ...this.
	(json:elements <ast-list-node>): Change to...
	(json:elements <ast-list>): ...this.

	* dzn/ast/util.scm (clone-base): Rename to...
	(keyword-values+mutate?): ...this.
	(clone-top, clone): Rewrite to use it; always create new object to avoid
	creating joins in the AST.
	(clone-base-unwrap, clone-base-node, clone-base-ast, clone <ast-node>):
	Remove methods.
	(deep-clone): Rename to...
	(deep-copy): ...this.
	(deep-copy*, graft, graft*): New methods.
	* dzn/ast/display.scm (ast-name <ast-node>):
	(sdisplay <ast-node>): Change to...
	(sdisplay <ast>): ...this.
	(sdisplay <location-node>): Change to...
	(sdisplay <location>): ...this.
	(write <ast-node>): Remove specialization.
	* dzn/ast/equal.scm (ast:node-eq?): Refactor without .node.

	* dzn/ast.scm (trigger-in-component): Remove.
	(port+event->trigger): Refactor accordingly.
	(ast:event->trigger): New method, factored-out from...
	(ast:in-triggers): ...here.
	(ast:argument->formal): Update for removal of .node.

	* dzn/commands/code.scm (main): Parameterize %context.
	* dzn/commands/graph.scm (main): Likewise.
	* dzn/commands/simulate.scm (main): Likewise.
	* dzn/commands/traces.scm (main): Likewise.
	* dzn/commands/verify.scm (main): Likewise
	* dzn/code.scm (code:shared-lts-unmemoized, code:shared-lts): Likewise.

	* dzn/templates/json/source@root-node: Rename to...
	* dzn/templates/json/source@root: ...this.  Update to use value@ast.
	* dzn/templates/json/value@ast-node: Rename to...
	* dzn/templates/json/value@ast: ..this.

	* dzn/code/language/json.scm (json:ast-name): Remove code that blindly
	attempts to drop the now non-existent `-node' suffix.

2023-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add function_if.
	Test for add-tag normalization.

	* test/all/function_if/function_if.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-07-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_function_arguments.
	* test/all/hello_function_arguments/hello_function_arguments.dzn: New file.
	* test/all/local.mk (HELLO_TESTS): Add it.

2023-07-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Hide node/wrapper details in. display.
	This makes <ast-node> vs <ast> wrapper debugging *much* harder,
	but it makes comparison with wip-parent output much easier.

	* dzn/ast/util.scm (ast-name <ast-node>): New specialization.
	* dzn/ast/serialize.scm (serialize <object>): Update accordingly.
	* dzn/code/language/json.scm (json:ast-name): Update accordingly.
	* dzn/ast/display.scm (write <ast>): Drop second `*'.
	* dzn/ast/serialize.scm (serialize <object>): Do not call...
	(serialize-name): ...this procedure;  Remove.
	* test/all/parse_locations/baseline/parse.out,
	test/all/parse-flags/baseline/parse.out: Update baseline.

2023-07-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Respect parse tree skip in ast.
	* dzn/ast/parse.scm (parse:tree->ast): For 'skip in tree, create <skip-node>,
	instead of <compound-node>.
	* dzn/ast.scm (ast:add-statement): Cater for <skip>.
	* doc/parse/mixing-declarative.texi: Update accordingly.

2023-07-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	normalize: Use canonical-ons->on for normalize:event, drop <triple>.
	* dzn/ast/normalize.scm (<triple>): Remove type.
	(write-triple, canonical-on->triple): Remove procedures.
	(triples:->on-guard*): Replace with...
	(sort-canonical-ons): ...this new procedure, and...
	(canonical-ons->on): ...this new method.

	normalize: Use canonical-on->guard for normalize:state.
	* dzn/ast/normalize.scm (triples:->compound-guard-on): Replace with...
	(statement->canonical-on): ...this new method.
	(normalize:state, normalize:state+illegals, simplify-guard-expressions):
	Update accordingly.

	normalize: Use group-expressions on <canonical-on>.
	* dzn/ast/normalize.scm (triples:group-expressions): Remove.
	(group-expressions): Cater for canonical-on.
	(normalize:state, normalize:state+illegals, normalize:event,
	normalize:event+illegals, simplify-guard-expressions): Use
	group-expressions on <canonical-on>.

2023-07-07  Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	normalize: Use simplify-guard on <canonical-on>.
	* dzn/ast/normalize.scm (triples:simplify-guard): Replace with...
	(simplify-guard <canonical-on>): ...this new specialization.
	(normalize:state, normalize:state+illegals, normalize:event,
	normalize:event+illegals): Update accordingly.

	normalize: Rewrite alpha-rename with <canonical-on>.
	* dzn/ast/normalize.scm (rewrite-formals-and-locals): Replace with...
	(alpha-rename): ...this new method.
	(normalize:event, normalize:event+illegals): Update accordingly.

2023-08-01  Rutger van Beusekom  <rutger@dezyne.org>

	code: Eradicate use of code:on -- partly.
	* dzn/code/scmackerel/c++.scm (component-model->sm:statements-unmemoized),
	* dzn/code/scmackerel/cs.scm (component-model->statements):
	Use ast:parent now that ast:in-triggers returns behavior triggers.
	* dzn/code.scm (code:on): Add TODO.

	ast: Implement ast:in-triggers for <component> with tree-collect.
	* dzn/ast.scm (ast:in-triggers <component>): New specialization
	implement with tree-collect instead of synthesized triggers.
	* dzn/ast/normalize.scm (implicit-illegals->explicit-illegals): Remove
	dependency on old ast:in-triggers implementation.

2023-07-06  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	normalize: Rewrite implicit->illegals->explicit-illegals with <canonical-on>.
	* dzn/ast.scm (ast:in-triggers): Set parent to behavior.
	* dzn/ast/normalize.scm (trigger-equal?): Remove.
	(make-declarative-illegal/illegal): New procedure.
	(add-illegals): Replace with...
	(implicit-illegal->explicit-illegal): ...this new method.
	(triples:add-illegals): Replace with...
	(implicit-illegals->explicit-illegals): ...this new method.
	(normalize:state+illegals, normalize:event+illegals): Update
	accordingly.

	normalize: Rewrite add-void-reply, add-the-end with <canonical-on>.
	* dzn/ast/normalize.scm (triples:mark-the-end): Replace with...
	(add-the-end): ...this, and...
	(add-void-reply): ...this.
	(normalize:state+illegals): Update accordingly.

2023-07-06  Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	normalize: Rewrite illegal->declarative-illegal with <canonical-on>.
	* dzn/ast/normalize.scm (triples:declarative-illegals model): Replace with...
	(illegal->declarative-illegal): ...this new method.
	(normalize:state+illegals): Update accordingly.

	normalize: Use <canonical-on> to create triples.
	* dzn/ast/normalize.scm (triples:->triples, triples:split-multiple-on):
	Replace with...
	* dzn/ast/normalize.scm (statement->canonical-on, canonical-on->triple):
	...these new methods.
	(normalize:state, normalize:state+illegals, normalize:event,
	normalize:event+illegals, simplify-guard-expressions): Update
	accordingly.

2023-07-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	goops: Add <canonical-on>.
	* dzn/ast/goops.scm (<canonical-on>): New type.
	* dzn/code/language/dzn.scm (print-ast <canonical-on>): New method.
	* dzn/ast/accessor.scm (ast:trigger* <canonical-on>): New
	specialization.
	* dzn/ast/lookup.scm (ast:lookup-variable): Cater for <canonical-on>.

2026-02-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.19.3.
	* guix/pack/dezyne.scm (dezyne): Update to 2.19.3.

2025-09-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.19.3 since 2.19.2): New section.

2025-11-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.20): Use Foreign Functions.  Introduce
	wip-lts-test.
	(Release 2.24): Update accordingly.

2026-02-19  Rutger van Beusekom  <rutger@dezyne.org>

	script: Add catch all with-exception-handler for any command.
	* dzn/script.scm (main): Prevent exceptions to escape causing a
	backtrace unless --debug or exit/quit.

2026-02-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Fixes for out-of-source build.
	* Makefile.am (bin/%): Depend on bin-dir.
	(bin-dir): New target.
	(dzn/%): Depend on dzn-dir.
	(dzn-dir): New target.
	GUILEC_FLAGS: Also add --load-path to build dir.
	(do_subst): Also substitute @abs_top_srcdir@, @abs_top_builddir@,
	@srcdir@, @builddir@.
	* build-aux/pre-inst-env.in (PATH): Add $abs_top_builddir/test/bin.
	* runtime/local.mk (%C%_libdzn_la_CPPFLAGS): Also include builddir.
	(%C%_libdzn_c___la_CPPFLAGS): Likewise.
	* dzn/config.scm.in (%builddir): New variable.
	(%bindir): Use it.
	(%srcdir): New variable.
	* test/dzn/dzn.scm (run-build): Use it.

2026-02-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	runtime: c++: Whitespace nitpicks.
	* runtime/c++/dzn/context.hh: Use && debug, instead of &&debug.
	* runtime/c++/pump.cc: Likewise.

2026-02-09  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Remove warnings.
	* runtime/c++/dzn/container.hh (container): Rename lookup parameter to l
	to avoid shadowing member variable.
	* runtime/c++/dzn/runtime.hh (=): Rename event to event_wrapper to avoid
	shadowing struct name and constructor(s); rename port_update to
	port_update_wrapper to avoid shadowing port_update member function; add
	parentheses around &&.

2026-02-04  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Remove unnecessary shadowing pointer variable.
	* runtime/c++/dzn/runtime.hh (=): Remove local variable.

2026-01-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Fix updating of test/bin scripts.
	* Makefile.am (noinst_SCRIPTS): New variable.

2026-01-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add list-models.
	* test/all/list-models: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2026-01-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Have list-models work on incorrect Dezyne files.
	This is a follow-up to commit
	    0f42b4f1d226ea1c17e23e7c27f1e8ce8c9f3ff6
	    parse: Split-off list-models.

	* dzn/parse/util.scm (list-models-name+type): Use
	parse:call-with-handle-exceptions, as in 2.18.

2026-01-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: Also print behavior <invariant> (after normalize).
	* dzn/code/language/dzn.scm (print-ast <behavior>): Print <invariant>,
	if set.

2026-01-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: Cater for expression functions.
	* dzn/code/language/dzn.scm (dzn:statement?): Do not identify a call
	in a guard-expression to be a statement.

2026-01-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: When -d,--debug, set stack-trace depth to 40.
	* dzn/script.scm (main): When 'debug set, debug-set! depth to 40.

2026-01-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: dzn: Fix printing of scoped types.
	* dzn/code/language/dzn.scm (dzn:full-name): Add model parameter.
	(dzn:dotted-name): Likewise.
	(print-ast, print-type): Update callers.

	code: dzn: Add catch-all for print-type.
	* dzn/code/language/dzn.scm (print-type <top>): New specialization.

2026-01-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	tree: Use negation instead of not.
	This is a follow-up to commit
	    1c8c50a062a9830e8f152291ae18be494530a1fb
	    peg: Replace not with negation to prevent collision.

	* dzn/parse/tree.scm (tree:record): Replace 'not by 'negation.

2026-01-16  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Allow multiple pump waiters.
	* runtime/c++/pump.cc (pump::operator ()): Use notify_all to wake up
	all waiters.

2026-01-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_function_shadow_port.
	* test/all/parse_function_shadow_port: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2026-01-15  Rutger van Beusekom  <rutger@dezyne.org>

	lookup: Add .type specialization for <function>.
	Fixes function_shadow_port.

	* dzn/ast/lookup.scm (.type <function>): Here.

2026-01-12  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Fix leakage of "symbol table" names.
	Move "symbol table" name reset to end of productions.

	* dzn/parse/peg.scm (peg:parse)[interface]: Remove initial
	reset-event-names, reset-port-name.  Add reset-event-names at the end.
	[component]: Remove initial
	reset-event-names, reset-port-name.  Add reset-port-names at the end.

2026-01-15  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add interface_action_missing_reply.
	* test/all/interface_action_missing_reply/interface_action_missing_reply.dzn,
	test/all/interface_action_missing_reply/trace,
	test/all/interface_action_missing_reply/baseline/simulate.err,
	test/all/interface_action_missing_reply/baseline/simulate.out,
	test/all/interface_action_missing_reply/baseline/verify.err,
	test/all/interface_action_missing_reply/baseline/verify.out: Add it.
	test/all/local.mk: Register it.

	makreel: Fix deadlock when missing_reply after action.
	* dzn/code/scmackerel/makreel.scm (interface-reorder-processes): Move
	missing_reply action to reorder_reply and remove state communication
	from reorder process altogether.

	runtime: c++: Add executing state to pump.
	* runtime/c++/dzn/pump.hh (struct pump)[executing]: New member.
	* runtime/c++/pump.cc (pump::pump): Initialize it.
	(pump::wait): Include executing in the wait condition.
	(pump::operator ()): Add an execute abstraction to worker.

2026-01-12  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	pipe: Display pipeline process failure.
	* dzn/pipe.scm (pipeline->string): Inspect all exit stati and print
	error message upon failure of a process.

2026-01-12  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	pipeline: Respect pipeline failure.
	This implements "fail early" instead of "stumbling on" after an
	unrecoverable error was detected and presenting incomprehensible,
	collateral errors.

	* dzn/verify/pipeline.scm (mcrl2:verify-interface): Call error upon
	pipeline failure.
	(mcrl2:verify-component): Likewise.

2026-01-12  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	lts: Exit gracefully on empty input.
	This implements "fail early" instead of "stumbling on" after an
	unrecoverable error was detected and presenting incomprehensible,
	collateral errors.

	* dzn/commands/lts.scm: Do not continue after receiving null input.

2026-01-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: defer_data: Cater for gcc-14's strictness.
	* test/all/defer_data/main.c (main): Add cast.

2026-01-08  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Respect %no-constraint?.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized):
	Avoid running code:shared-state when %no-constraint?
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized):
	Remove dead code.

2025-11-29  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Fix MSVC compiler warnings.
	* runtime/c++/dzn/runtime.hh (to_string): Remove unused parameter t.
	(data): Give parameter a distinct name from the member.

2026-01-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Generate code for most interesting non-imported model.
	* dzn/code/scmackerel/makreel.scm (root->scmackerel): Filter-out
	imported models before selecting interesting model.

2026-01-20  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Remove unused and erroneous get-model procedure.
	* dzn/code/language/makreel.scm (makreel:get-model (o <root>): Remove.

2025-11-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: Add explanatory message.
	* dzn/script.scm (parse-opts): Explain what script does.

2025-11-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Move COPYING.AGPL to COPYING.
	* COPYING: Move to...
	* COPYING.GPL: ...this new file.
	* COPYING.AGPL: Move to...
	* COPYING: ...this.
	* Makefile.am (EXTRA_DIST): Update accordingly.

2025-05-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	anonymize: New command.
	* dzn/parse.scm: Export parse:file->string.
	* dzn/commands/anonymize.scm: Use it in new file.
	* dzn/commands/local.mk (dist_%C%_scm_DATA): Register it.
	* doc/dezyne.texi (Invoking dzn anonymize): New section.

2025-11-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Typo.
	* doc/dezyne.texi (Invoking dzn hello): Use "dzn" instead of "ide".

2025-11-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.19.2.
	* guix/pack/dezyne.scm (dezyne): Update to 2.19.2.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.19.2 since 2.19.1): New section.

2025-11-10  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.19.2 since 2.19.1): New section.

	doc: `NEWS': Fix typos.
	* NEWS: Fix typos throughout.

2025-11-08  Rutger van Beusekom  <rutger@dezyne.org>

	build: Add erpprocess: Extract file-names from pre-processed stream.
	* build-aux/erpprocess.scm: New file.

2025-11-10  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Avoid adding whitespace with each pre-process.
	* dzn/parse.scm (parse:file->stream)[import+content->stream-lines,
	file+content->stream-lines): Make sure that content ends with one and
	only one newline.
	* test/all/parse-flags/baseline/parse.out,
	test/all/parse_locations/baseline/parse.out: Update baseline.

2025-11-07  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add blocking_if_action_in_function.
	* test/all/blocking_if_action_in_function: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-11-06  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Remove makreel:add-action-reply duplication.
	* dzn/code/language/makreel.scm (makreel:add-action-reply): Delegate
	the <compound> case to the inner procedure add-action-reply.

2025-11-05  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Fix add-action-reply normalization.
	* dzn/code/language/makreel.scm: (makreel:add-action-reply): Recurse
	action-reply into statement.

2025-11-11  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Avoid stack trace.
	* dzn/code/scmackerel/makreel.scm (makreel:process-formals): Remove
	<stack> since it will never match (.variable.name o).

	runtime: c++: Add thread_id support for thread based coroutines.
	* runtime/c++/pump.cc (pump::operator ()): Save pump thread_id,
	(pump::create_context): Pass pump thread_id to coroutine.
	* runtime/c++/dzn/coroutine.hh (coroutine): Add thread_id parameter.
	* runtime/c++/coroutine.cc (set_thread_id, get_thread_id): New
	procedures to set and get coroutine thread pump thread_id thread_local
	storage.
	* runtime/c++/dzn/context.hh (set_thread_id, get_thread_id): Forward
	declare new procedures,
	(context): Pass pump thread_id and refactor this->work initialization,
	(call): rename lock2 to c_lock.
	* test/all/shell_injected_foreign/Logger.hh (class Logger): Demonstrate
	dzn::get_thread_id ().

2025-11-10  Rutger van Beusekom  <rutger@dezyne.org>

	test: helloworld_external: Add traces.
	* test/all/helloworld_external/trace0: Add the incomplete trace that
	reports deadlock if queued external events are not eligible.
	* test/all/helloworld_external/trace1: Add the complete trace.

2025-11-18  Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Avoid reporting deadlock when external q not empty.
	Fixes simulate helloworld_external.dzn with trace h.hello.

	* dzn/simulate.scm (event-traces-alist): Add queued external events to
	eligible.

2025-11-08  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_indirect_type.
	* test/all/shared_indirect_type/shared_indirect_type.dzn: Add it.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	lookup: Refactor and fix .type lookup for shared enum-literal.
	* dzn/ast/lookup.scm (.type <enum-literal>): Allow for lookup fallback.

2025-10-30  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add compliance_second_out_action.
	* test/all/compliance_second_out_action: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	compliance: Fix compliance_second_out_action.
	* dzn/vm/compliance.scm (check-provides-compliance): Retain run to
	completion trace.

2025-10-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Also print eligible for immutable invariant.
	* dzn/vm/report.scm (report): Add default '() value for #:eligible.
	* dzn/simulate.scm (end-report, run-trail): Update accordingly to
	suppress undesirable labels and eligble reporting due to report eligible
	keyword parameter default value.
	* test/all/variant_immediately/baseline/simulate.out: Update simulate
	baseline to add missing labels and eligible.

	trace: Cater for missing (eligible).
	* dzn/trace.scm (trace:steps->json): Use '() if eligible is missing.

2025-11-10  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Post-release update.
	* Makefile.am (--previous-version): Bump to 2.19.1.

2025-10-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.19.1.
	* guix/pack/dezyne.scm (dezyne): Update to 2.19.1.

2025-10-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.19.1 since 2.19.0): New section.

2025-10-09  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add reachable_expression_function.
	* test/all/reachable_expression_function: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-10-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Fix typo.
	Reported by logocp via IRC.

	* doc/dezyne.texi (Functions): Add missing identifier in
	expression-function definition.

2025-10-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	normalize: Have temporaries skip <expression-function> and <invariant>.
	* dzn/ast/normalize.scm (split-complex-expressions): Skip
	<expression-function> and <invariant>.
	(add-explicit-temporaries): Likewise.

2025-10-07  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add invariant_functions_expression.
	* test/all/invariant_functions_expression: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	simulate: Support expressions of expression functions.
	* dzn/code/language/makreel.scm (makreel:normalize): Inline expression
	functions before introducing explicit temporaries to prevent
	eval-expression from failing.

	verify: Support expressions of expression functions.
	* dzn/code/language/makreel.scm (makreel:normalize): Inline expression
	functions before introducing explicit temporaries to prevent makreel
	code from not expanding expressions to mcrl2.

2025-10-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Also instal interface files for hello, cruise-control.
	* test/all/local.mk (nodist_dzn_example_DATA): Add
	cruise-control-interfaces.dzn, ihello.dzn.

2025-10-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Post-release update.
	* doc/announce/ANNOUNCE-2.19.0: Update checksums, number of commits, fix typos.
	* Makefile.am (--previous-version): Bump to 2.19.0.

	guix: dezyne: Update to 2.19.0.
	* guix/pack/dezyne.scm (dezyne): Update to 2.19.0.

2025-09-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.22..2.28): Bump to 2.23..2.29.
	(Release 2.21): Split simulator off to
	(Release 2.22): ...this release.

2025-10-01  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_data_reply.
	* test/all/hello_data_reply/hello_data_reply.dzn,
	* test/all/local.mk (FEATURE_TESTS): Add it.

2025-09-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	makreel: Remove debugging.
	* dzn/code/scmackerel/makreel.scm (makreel:return-variable <ast>,
	makreel:return->value <return>): Fail early: remove catch-all with pke.

2025-09-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	reply_data_full: Remove obsolete META.
	Now that test/dzn/dzn.scm recognizes "reply_data", we no longer need
	this META.

	* test/all/reply_data_full/META: Remove.

2025-09-30  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add reply_data_call_action.
	* test/all/reply_data_call_action: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	test: Add reply_data_action_call.
	* test/all/reply_data_action_call: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	test: Add reply-data as feature.
	* test/dzn/dzn.scm (file-name->features): Cater for "relpy_data" or
	"data_reply" => "reply-data".

	normalize: Reply data support: run add-explicit-temporaries first.
	* dzn/code/language/makreel.scm (makreel:normalize): Move
	add-explicit-temporaries to initial position.
	* dzn/code.scm (code:normalize-): Likewise.
	* dzn/vm/normalize.scm (vm:normalize): Likewise.

2025-09-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	wfc: Fix argument count check for call in action / action in call.
	* dzn/ast/wfc.scm (wfc <arguments>): Use .parent to check immediate
	parent of <arguments>, i.e., <action> or <call>, instead of possibly
	skipping over one of those.

2025-09-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add parameter_shadow_function.
	* test/all/parameter_shadow_function: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	test: parameter_shadow_port: Rename from param_shadow.
	* test/all/param_shadow: Rename to...
	* test/all/parameter_shadow_port: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2025-09-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.19.0.rc1.
	* guix/pack/dezyne.scm (dezyne): Update to 2.19.0.rc1.

2025-09-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (2.19.0): Add note about false positive verification deadlocks.

2025-09-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Add ANNOUNCE-2.19.0.
	* doc/announce/ANNOUNCE-2.19.0: New file.

2025-09-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: mcrl2-next: Update to 202507.0.
	* guix/pack/mcrl2.scm (mcrl2-next): Update to 202507.0:

2025-09-23  Rutger van Beusekom  <rutger@dezyne.org>

	misc: Add ppke.
	* dzn/misc.scm (ppke): New procedure.

2025-09-19  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_multiple_provides.
	* test/all/local.mk (REGRESSION_TESTS),
	* test/all/shared_multiple_provides/shared_multiple_provides.dzn: Add it.

2025-09-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: Refactor multiple_provides.
	* test/all/multiple_provides/multiple_provides.dzn: To allow
	shared_multiple_provides to correspond more closely.

2025-09-20  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Replace state communication sequence with choice.
	This fixes a deadlock in shared_multiple_provides.

	* dzn/code/scmackerel/makreel.scm (semantics-async): Rename
	shared-provides to provides-shared; avoid deadlock by offering a choice
	between multiple provides state communications.
	(ast->process <the-end>): Likewise.  Add component behavior queue-empty
	transition without state communication for ports without shared state.

2025-09-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add implicit_temporary5.
	* test/all/implicit_temporary5: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-09-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	transform: Resurrect add-explicit-temporaries.
	This is a follow-up to commit
	    1baf729fd58ad093d703c406fc9a849ae5ab2b25
	    normalize: Eradicate noisy and refactor.

	and re-enables invoking using dzn --transform=add-explicit-temporaries ...

	* dzn/transform.scm (add-explicit-temporaries): New wrapper.

2025-09-19  Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	normalize: Fix purge-data for variable and assign.
	This is a follow-up to commit
	    1baf729fd58ad093d703c406fc9a849ae5ab2b25
	    normalize: Eradicate noisy and refactor.

	* dzn/ast/normalize.scm (purge-data): Refactor and fix naive <variable> and
	<assign> purging for implicit temporaries.

2025-09-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add implicit_temporary4.
	* test/all/implicit_temporary4: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-09-19  Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	normalize: Fix purge-data for reply and return.
	This is a follow-up to commit
	    1baf729fd58ad093d703c406fc9a849ae5ab2b25
	    normalize: Eradicate noisy and refactor.

	* dzn/ast/normalize.scm (purge-data): Refactor and fix naive <reply> and
	<return> purging for implicit temporaries.

2025-09-18  Rutger van Beusekom  <rutger@dezyne.org>

	lookup: Extend search-unmemoized to use dotted prefix as scope.
	* dzn/ast/lookup.scm (search-unmemoized): Check for empty scope and
	dotted-ness and use dotted prefix as scope.

2025-09-18  Janneke Nieuwenhuizen  <janneke@gnu.org>

	wfc: Remove stray import.
	* dzn/ast/wfc.scm: Do no use (dzn ast accessor).

2025-09-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Revert "test: data_full: Add tests for <extern> data as return and reply."
	Extending the overly complicated data_full test is highly undesirable;
	the ROADMAP has listed the intend to split it for many years now.  Also,
	it's not canonicalized.

	Because C# does not support reply-data, adding that feature to data_full
	would mean that the data path was no longer under test for C#.

	This reverts commit b136b6ab0164cbf2d012348ecbf45be0134011f3.

2025-09-09  Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Paul Hoogendijk  <paul@dezyne.org>

	test: Add reply_data_full.
	* test/all/reply_data_full: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-09-18  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.19.0.rc0.
	* guix/pack/dezyne.scm (dezyne): Update to 2.19.0.rc0.

2024-04-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.19.0 since 2.18.2): New section.

2025-09-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.19): Remove.

	build: Bump previous release to 2.18.4.
	* Makefile.am (--previous-version): Bump to 2.18.4.

	test: cruise-control: Bump timeout to 600.
	* test/all/cruise-control/META (timeout): New field.

	doc: Typos.
	* doc/dezyne.texi (Functions): Fix typos.

2025-09-03  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add choice_invariant.
	* test/all/choice_invariant/choice_invariant.dzn,
	* test/all/choice_invariant/ihello.dzn,
	* test/all/local.mk: Add it.

2025-09-03  Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	vm: Only check invariant at run to completion.
	* dzn/vm/invariant.scm (check-invariants): Make conditional on run to
	completion.

2025-01-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	pipeline: Refactor babooshka-esque verify assert code.
	* dzn/verify/pipeline.scm (mcrl2:verify-compliance): Rename to ...
	(mcrl2:compliance-output->trace): ...this.  Move trace generation upward to...
	(mcrl2:verify-interface-asserts): Split into...
	(verify:interface-asserts, verify:interface-nondet-assert): ...these new
	procedures.  Move running of pipeline upward to...
	(mcrl2:verify-interface): ...here.
	(mcrl2:verify-component-asserts): Split into...
	(verify:component-asserts, verify:compliance-assert): These new
	procedures.  Move running of pipeline upward to...
	(mcrl2:verify-component): ...here.

	pipeline: Use #:skip? parameter in report.
	* dzn/verify/pipeline.scm (report): Change order of parameters to
	"model", "assert", "trace", and change "skip" to keyword #:skip
	parameter.
	(mcrl2:verify-interface-asserts): Update caller.
	(mcrl2:verify-component-asserts): Likewise.

2024-12-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	pipeline: Remove static "abstraction".
	* dzn/verify/pipeline.scm (component-stage): Remove constant procedure.
	(in-out:dzn->aut+provides-aut, mcrl2:verify-component-asserts): Update
	callers.

2025-03-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	verify: Allow verifying imported interface with -m,--model.
	* dzn/commands/verify.scm (file->verify): Restrict import error to
	components.

2025-01-15  Paul Hoogendijk  <paul@dezyne.org>

	doc: Add data-type return.
	* doc/dezyne.texi (Types and Expressions): Add data-type return.

2025-06-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add system_reply_data.
	* test/all/system_reply_data: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-01-10  Paul Hoogendijk  <paul@dezyne.org>

	test: wf_functionReturnValue: Add reply ($..$) inside a function.
	* test/all/wf_functionReturnValue/wf_functionReturnValue.dzn (i)[cruel]:
	New event.
	(wf_functionReturnValue)[f]: Change to void function, use reply.

2024-11-21  Paul Hoogendijk  <paul@dezyne.org>

	wfc: Disallow reply ($..$) inside a function.
	* dzn/ast/wfc.scm (wfc <trigger>):
	* test/all/wf_functionReturnValue/baseline/verify.err: Update
	accordingly.

2025-06-17  Paul Hoogendijk  <paul@dezyne.org>

	test: Add reply_extern.
	* test/all/reply_extern: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-01-10  Paul Hoogendijk  <paul@dezyne.org>

	test: data_full: Add tests for <extern> data as return and reply.
	* test/all/data_full/data_full.dzn (Idata_full)[ei_ret]: New event.
	(Idata): New interface.
	(data_full_): Implement them.
	* test/all/data_full/main.c (main): Likewise.
	* test/all/data_full/main.cc (main): Likewise.
	* test/all/data_full/main.cs (Main): Likewise.
	* test/all/data_full/main.js (dzn): Likewise.
	* test/all/data_full/main.scm (main): Likewise.
	* test/all/data_full/trace: Update accordingly.
	* test/all/data_full/META: New file, mention "reply-data" feature.

2025-01-10  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: data_full: Whitespace fixes.
	* test/all/data_full/data_full.dzn: Fix whitespace.

2025-08-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_int_guard.
	* test/all/hello_int_guard: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

	test: Add hello_data_argument.
	* test/all/hello_data_argument: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

2025-08-22  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_data_function.
	* test/all/hello_data_function: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

2025-07-23  Paul Hoogendijk  <paul@dezyne.org>

	cs: Partial support replying <extern> data.
	* dzn/code/scmackerel/cs.scm: (ast->code <reply>): Use type of
	trigger for reply ($..$).

2025-09-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	runtime: c: Handle data reply for int.
	* dzn/templates/c/main.c (log_typed): Add check for "return".

2025-07-23  Paul Hoogendijk  <paul@dezyne.org>

	c: Support replying <extern> data.
	* dzn/code/scmackerel/c.scm (ast->code <reply>): Use type of
	trigger for reply ($..$).
	(provides-trigger->method): Also display "return" for <extern>.
	* dzn/config.scm.in (%feature-alist): Add "c" to "reply-data".

2025-01-17  Paul Hoogendijk  <paul@dezyne.org>

	javascript: Support replying <extern> data.
	* runtime/javascript/dzn/runtime.js (runtime.call_in): Unwrap `.value` from object
	replies.
	* dzn/codegen/javascript.scm: (javascript:wrap-value-prefix, javascript:wrap-value-suffix):
	New methods for wrapping and unwrapping <extern> types.
	* dzn/templates/javascript.scm (wrap-value-prefix, wrap-value-suffix):
	New templates.
	* dzn/templates/javascript/assign-reply@reply: Use new templates to wrap
	reply expressions.
	* dzn/templates/javascript/wrap-value-prefix@reply,
	dzn/templates/javascript/wrap-value-suffix@reply: New files.
	* dzn/config.scm.in (%feature-alist): Add "javascript" to "reply-data".

2025-01-16  Paul Hoogendijk  <paul@dezyne.org>

	scheme: Support replying <extern> data.
	* dzn/code/language/scheme.scm (scheme:reply-name <extern>): New method.
	* dzn/templates/scheme/reply-member-initializer@extern: New file.
	* dzn/templates/scheme/reply@extern: New file.
	* runtime/scheme/dzn/runtime.scm (call-in): Unwrap second element from
	reply list when returning <extern> values.
	* dzn/config.scm.in (%feature-alist): Add "scheme" to "reply-data".

2025-08-24  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Handle data reply for int.
	* runtime/c++/dzn/runtime.hh (to_int): Add check for "return".

2024-11-21  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Support replying <extern> data.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized,
	component-model->sm:statements-unmemoized): Wrap <extern> with data
	template.
	* runtime/c++/dzn/runtime.hh (data, to_string): New template to overload
	to_string to return "return" for <extern> data.
	* runtime/c++/dzn/pump.hh (shell): Adjust to unwrap `dzn::data<T>` in
	returned values.
	* dzn/config.scm.in (%feature-alist): Add "c++" to "reply-data".

2024-11-21  Paul Hoogendijk  <paul@dezyne.org>

	makreel Allow <extern> data as return type for events and functions.
	* dzn/code.scm (code:type->string <extern>): New specialization.
	* dzn/code/scmackerel/makreel.scm (makreel:process-formals): Allow data.

2025-09-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	wfc: Add reply-data feature.
	* dzn/config.scm.in (%feature-alist): Add reply-data.
	* dzn/ast/wfc.scm (wfc <signature>): Check for it to allow <extern> as
	return type.

2024-11-21  Paul Hoogendijk  <paul@dezyne.org>

	normalize: Add temporaries for data expression.
	* dzn/ast/normalize.scm (temporaries): Allow data.
	(temporaries*): Likewise.
	(replace-expression): Avoid creating a #f argument.
	(add-temporary): Avoid temporaries for data expressions.

	normalize: Purge data from signature too.
	(purge-data): Remove data from signature, maintain expression
	side-effects.

2025-03-07  Paul Hoogendijk  <paul@dezyne.org>

	test: Add invariant_group_expressions
	* test/all/invariant_group_expressions: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-03-03  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add invariant_guarded.
	* test/all/invariant_guarded: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-01-15  Paul Hoogendijk  <paul@dezyne.org>

	doc: Add invariant.
	* doc/dezyne.texi (Keywords): Add invariant.
	(Invariant): Document it.

2025-01-06  Rutger van Beusekom  <rutger@dezyne.org>

	test: cruise-control: Add invariants.
	* test/all/cruise-control/cruise-control-interfaces.dzn: Split-off from...
	* test/all/cruise-control/cruise-control.dzn: ...here.
	(cruise-control): Add invariants.

2025-01-08  Paul Hoogendijk  <paul@dezyne.org>

	test: Add variant_blocking_out.
	* test/all/variant_blocking_out: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-01-09  Paul Hoogendijk  <paul@dezyne.org>

	test: Add variant_out.
	* test/all/variant_out: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-01-08  Paul Hoogendijk  <paul@dezyne.org>

	test: Add invariant_two_out.
	* test/all/invariant_two_out: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	test: Add invariant_out_forward.
	* test/all/invariant_out_forward: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	test: Add invariant_blocking_two_out.
	* test/all/invariant_blocking_two_out: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-01-06  Paul Hoogendijk  <paul@dezyne.org>

	test: Add invariant_sync_out.
	* test/all/invariant_sync_out: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	test: Add variant_immediately.
	* test/all/variant_immediately: New test.
	* test/all/local.mk (PARSER_TESTS): Register it.

	test: Add variant_interface.
	* test/all/variant_interface: New test.
	* test/all/local.mk (PARSER_TESTS): Register it.

	test: Add variant_defer.
	* test/all/variant_defer: New test.
	* test/all/local.mk (PARSER_TESTS): Register it.

	test: Add variant_component.
	* test/all/variant_component: New test.
	* test/all/local.mk (PARSER_TESTS): Register it.

	test: Add hello_invariant.
	* test/all/hello_invariant: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

2024-12-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_variant.
	* test/all/invariant_fail: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2025-01-06  Paul Hoogendijk  <paul@dezyne.org>

	test: Add unreachable_predicates.
	* test/all/unreachable_predicates: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	test: Add parse_predicate.
	* test/all/parse_predicate: New test.
	* test/all/local.mk (PARSER_TESTS): Register it.

	test: Add guard_predicates.
	* test/all/guard_predicates: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-01-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	graph: Support <invariant>.
	* dzn/explore.scm (pc->rtc-lts): Check invariants.

2025-07-31  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support <invariant>.
	* dzn/vm/goops.scm (<invariant-error>): New class.
	* dzn/vm/step.scm (step <invariant>): New specialization.
	(step <guard>): Cater for <guard> without <on> and expression
	functions.
	* dzn/vm/invariant.scm: New file.
	* dzn/vm/local.mk (dist_%C%_scm_DATA): Register it.
	* dzn/simulate.scm (run-sut, run-trail): Use it to check invariant.
	* dzn/vm/report.scm (report): Cater for <invariant-error>.
	* dzn/vm/normalize.scm (lift-invariants): New function.
	(vm:normalize): Use it. And add inline-expression-functions.

2025-01-08  Paul Hoogendijk  <paul@dezyne.org>

	traces: Add prioritization of invariant event.
	* dzn/lts.scm (prioritize-invariant-edges): New procedure to remove
	other edges when <invariant> edge is present.
	(prioritize-invariant): Use it in new procedure to do it for all nodes.
	(generate-traces): Use it.
	* dzn/commands/traces.scm (model->traces): Add call to prioritize-invariant.

2025-07-31  Paul Hoogendijk  <paul@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	verify: Support <invariant>.
	* dzn/code/language/makreel.scm: (reachable-calls-unmemoized,
	makreel:call-continuation*-unmemoized): Exclude declarative calls.
	* dzn/code/scmackerel/makreel.scm (%invariant-action): New variable.
	(ast->process <declarative-compound> <ast>,
	ast->process <declarative-compound> <list>,): Add %invariant-action
	guarded by the negation of its predicate to indicate the invariant
	violation when the action occurs.
	(interface-reorder-processes, provides-processes,
	component-defer-processes, semantics-blocked,
	component-assembly-processes, constraint-processes): Allow it.
	(semantics-main, semantics-blocked, component-semantics-processes):
	Synchronize on %invariant-action to disallow behavior to continue.
	* dzn/lts.scm (parse-label): Cater for <invariant>.
	(report-fail): Report invariant violation.

2025-09-02  Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Paul Hoogendijk  <paul@dezyne.org>

	normalize: Add make-behavior-invariant.
	* dzn/ast/normalize.scm (make-a=>b-expression): New normalization.
	(normalize:state, normalize:state+illegals): Use it.

	normalize: Add invariant:include-guard-expressions.
	* dzn/ast/normalize.scm  (make-a=>b-expression): New procedure to rewrite implies.
	(invariant:include-guard-expressions): Use it in new procedure to
	collect all guards and add to expression of invariant.
	* dzn/transform.scm: Re-export it.

	normalize: Add remove-invariant.
	* dzn/ast/normalize.scm (remove-invariant): New normalization.
	(normalize:state, normalize:state+illegals): Use it.
	* dzn/transform.scm: Re-export it.

2024-12-20  Paul Hoogendijk  <paul@dezyne.org>

	wfc: Support <invariant>.
	* dzn/ast/wfc.scm (wfc <invariant>): New specialization.
	(wfc <guard>): Cater for invariant.

2025-09-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Add expression functions.
	* doc/dezyne.texi (Expression functions): New subsection.

2025-09-02  Janneke Nieuwenhuizen  <janneke@gnu.org>

	normalize: Add inline-expression-functions.
	* dzn/ast/normalize.scm (inline-expression-functions): New normalization.
	* dzn/code/language/makreel.scm (makreel:normalize): Use it.
	* dzn/transform.scm: Re-export it.

2025-08-23  Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Paul Hoogendijk  <paul@dezyne.org>

	wfc: Support <expression-function>.
	* dzn/ast/wfc.scm (wfc-error->info): New procedure.
	(wfc-predicate): New method.
	(wfc <function>): Rename to...
	(wfc-function): ...this.
	(wfc <function>, wfc <expression-functions>): Use it in new
	specializations.
	(wfc <guard>): Use it to check that all calls of expression of guards
	are predicates.

2025-08-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Annotate function call and recursion.
	* dzn/ast/equal.scm: (ast:name-equal? <named> <named>): New
	specialization.
	* dzn/ast/ast.scm (<function>)[called?]: New field.
	* dzn/ast/recursive.scm (set-called?): Use them in new method.
	(annotate-recursion): Rename to...
	(recursive:annotate): ...this, and use it.
	* dzn/parse.scm (parse:annotate-ast): Use it to annotate functions.
	* test/all/code-json: Update baseline.

	Co-authored: Paul Hoogendijk <paul@dezyne.org>

2025-08-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Add <root> specialization for ast:imported?
	* dzn/ast.scm (ast:iported? <root>): Add specialisation.

	Co-authored: Paul Hoogendijk <paul@dezyne.org>

2025-08-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Add <call> specialization for ast:imperative?.
	* dzn/ast.scm (ast:imperative? <call>): Add specialisation.

	Co-authored: Paul Hoogendijk <paul@dezyne.org>

2025-08-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Add <call> specialization for ast:declarative?.
	* dzn/ast.scm (ast:declarative? <call>): Add specialisation.

	Co-authored: Paul Hoogendijk <paul@dezyne.org>

2025-01-17  Paul Hoogendijk  <paul@dezyne.org>

	peg: Add invariant.
	* dzn/ast/ast.scm (<invariant>): New AST.
	* dzn/parse/tree.scm (tree:record): Add 'invariant.
	* dzn/parse/peg.scm (peg:parse): Parse invariant.
	* dzn/ast/parse.scm (parse:tree->ast): Cater for it.
	* dzn/code/language/dzn.scm (print-ast <invariant>): New specialization.

	Co-authored: Paul Hoogendijk <paul@dezyne.org>

2025-08-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	peg: Add expression-function.
	* dzn/ast/ast.scm (<expression-function>): New AST.
	* dzn/ast/lookup.scm (ast:lookup-variable): Cater for <expression-function>.
	* dzn/parse/tree.scm (tree:record): Add 'expression-function.
	* dzn/parse/peg.scm (peg:parse): Parse expression-function.
	* dzn/ast/parse.scm (parse:tree->ast): Cater for it.
	* test/all/parse_fall_back_out_binding_argument/baseline/verify.err:
	Update baseline.

	Co-authored: Paul Hoogendijk <paul@dezyne.org>

2025-08-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	peg: Remove optional name from behavior.
	* dzn/parse/peg.scm (peg:parse): Remove optional name after behavior.
	* dzn/ast/parse.scm (parse:tree->ast): Remove behavior-with-name case
	and reformat.
	* test/all/hello_parse/hello_parse.dzn (iworld): Remove name from
	behavior

	Co-authored: Paul Hoogendijk <paul@dezyne.org>

2025-08-22  Rutger van Beusekom  <rutger@dezyne.org>

	ast: Add predicate to ast:parent.
	* dzn/ast/accessor.scm (ast:parent): New specialization.

2025-01-16  Paul Hoogendijk  <paul@dezyne.org>

	doc: Add implies (=>) operator.
	* doc/dezyne.texi (Operators): Add =>.
	(Expressions): Likewise.
	(Bool): Document it.

2025-01-14  Paul Hoogendijk  <paul@dezyne.org>

	doc: Some improvements and fixing typos.
	* doc/dezyne.texi: Throughout: fix typos.
	(On): Move imperative-statement example to...
	(Imperative Statements): ...here.

2025-01-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add implies_expressions.
	* test/all/implies_expressions: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2023-08-15  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Add implication "=>".
	* dzn/parse/peg.scm (peg:parse): Add implication.
	* dzn/ast/parse.scm (parse:tree->ast): Handle it.

2024-12-12  Paul Hoogendijk  <paul@dezyne.org>

	ast: Remove <unary> from ast define of <variable>.
	* dzn/ast/ast.scm (<variable>): Do not inherit from <unary>
	* dzn/templates/scheme/code-arguments@variable,
	dzn/templates/scheme/expression-expand@variable: New template files.
	* dzn/templates/javascript/code-arguments@variable,
	dzn/templates/javascript/expression-expand@variable: New template files.

	wfc: Do not report next statement for typed recursion call.
	* dzn/ast/wfc.scm (tail-recursion): Remove "statement after call" info.
	* test/all/wf_functionTailRecursion/baseline/verify.err: Update
	accordingly.

2025-02-17  Paul Hoogendijk  <paul@dezyne.org>

	test: wf_undefined: Add undefined port and undefined instance.
	* test/all/wf_undefined/wf_undefined.dzn (C2): New component.
	(wf_undefined): Use it.
	* test/all/parse_fall_back_out_binding_argument/baseline/verify.err:
	Update baseline.

2025-02-18  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_function_shadow_event.
	* test/all/parse_function_shadow_event: New test.
	* test/all/local.mk (PARSER_TESTS): Register it.

2025-08-22  Rutger van Beusekom  <rutger@dezyne.org>

	parse: Disallow function shadowing action: duplicate identifier.
	* dzn/ast/ast.scm (<undefined>): Replace <unary> with <var>.
	(<duplicate>): Add.
	* dzn/ast/parse.scm: (parse:tree->ast): Create.
	* dzn/ast/wfc.scm (duplicate): Report.
	* dzn/parse/peg.scm: (peg:parse): Add duplicate-identifier and use it to
	record a function shadowing an event.
	* test/all/parse_interface_parens/baseline/verify.err,
	test/all/undefined/interface/call_in_function/baseline/verify.err,
	test/all/wf_undefined_function/baseline/verify.err: Update baseline.

2025-02-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Remove function_shadow_event.
	* test/all/function_shadow_event: Remove.
	* test/all/local.mk (REGRESSION_TESTS): Unregister.

2025-01-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Revert "language: Drop lazy importing and just-in-time parsing."
	This reverts commit 398b9675ed9b6490764df85e839f461132d5a1c7.

2024-11-28  Rutger van Beusekom  <rutger@dezyne.org>

	verify: Add fall-back command line option.
	* dzn/commands/verify.scm (parse-opts): Add fall-back to option-spec.

2024-12-03  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Break the mutual import cycle.
	* dzn/peg/util.scm (peg:imported-from->message): Maintain a list of
	visited elements and avoid revisiting elements.

2024-11-28  Rutger van Beusekom  <rutger@dezyne.org>

	parse: Enable forwarding fall-back option.
	* dzn/commands/parse.scm (parse): Parameterize the fall-back parse
	option.

2025-01-10  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Replace not with negation to prevent collision.
	* dzn/parse/peg.scm (peg:parse)[not]: Rename to...
	[negation]: ...this.
	* dzn/ast/parse.scm (parse:tree->ast): Update accordingly.

	peg: Replace interface-action with action.
	* dzn/parse/peg.scm (peg:parse): Remove interface-action and add
	is-event to action.
	* dzn/ast/parse.scm (parse:tree->ast): Replace interface-action with
	action.
	* test/all/parse-flags/baseline/parse.out,
	test/all/parse_interface_parens/baseline/verify.err,
	test/all/undefined/interface/call_in_function/baseline/verify.err,
	test/all/wf_undefined_function/baseline/verify.err,
	test/all/parse_peg_locations/baseline/parse.out: Update accordingly.
	test/all/parse_peg_locations/baseline/verify.out: Remove.

2025-01-09  Rutger van Beusekom  <rutger@dezyne.org>

	test: Define before use.
	The upcoming PEG symbol table rewrite disallows use before define for
	toplevel types.  Update the test framework accordingly.

	* test/all/Camera/Optics.dzn,
	test/all/blocking_multiple_provides0/blocking_multiple_provides0.dzn,
	test/all/blocking_multiple_provides2/blocking_multiple_provides2.dzn,
	test/all/blocking_multiple_provides3/blocking_multiple_provides3.dzn,
	test/all/bool_expressions/bool_expressions.dzn,
	test/all/calling_context/calling_context.dzn,
	test/all/collateral_cancel_guarantee/collateral_cancel_guarantee.dzn,
	test/all/compliance_blocking_double_release2/compliance_blocking_double_release2.dzn,
	test/all/compliance_blocking_out/compliance_blocking_out.dzn,
	test/all/compliance_external/compliance_external.dzn,
	test/all/compliance_failures_inevitable_optional/compliance_failures_inevitable_optional.dzn,
	test/all/compliance_optional/compliance_optional.dzn,
	test/all/deadlock_blocking_inevitable/deadlock_blocking_inevitable.dzn,
	test/all/deadlock_blocking_replies/deadlock_blocking_replies.dzn,
	test/all/enum_expressions/enum_expressions.dzn,
	test/all/enum_only/enum_only.dzn,
	test/all/extern_in_interface/extern_in_interface.dzn,
	test/all/foreign_handwritten/foreign_handwritten.dzn,
	test/all/foreign_import_system/hello_foreign.dzn,
	test/all/foreign_injected/foreign_injected.dzn,
	test/all/foreign_multiple_provides/foreign_multiple_provides.dzn,
	test/all/foreign_optional/foreign_optional.dzn,
	test/all/foreign_reply/foreign_reply.dzn,
	test/all/foreign_requires/foreign_requires.dzn,
	test/all/formal_binding/formal_binding.dzn,
	test/all/guard_expressions/guard_expressions.dzn,
	test/all/hello_bool/hello_bool.dzn,
	test/all/hello_data/hello_data.dzn,
	test/all/hello_else/hello_else.dzn,
	test/all/hello_enum/hello_enum.dzn,
	test/all/hello_enum_function/hello_enum_function.dzn,
	test/all/hello_expression/hello_expression.dzn,
	test/all/hello_external/hello_external.dzn,
	test/all/hello_foreign/hello_foreign.dzn,
	test/all/hello_foreign_path/hello_foreign_path.dzn,
	test/all/hello_functions/hello_functions.dzn,
	test/all/hello_guard/hello_guard.dzn,
	test/all/hello_guard_two/hello_guard_two.dzn,
	test/all/hello_if/hello_if.dzn,
	test/all/hello_ifelse/hello_ifelse.dzn,
	test/all/hello_ifif/hello_ifif.dzn,
	test/all/hello_import_component/components.dzn,
	test/all/hello_imported/hello_imported.dzn,
	test/all/hello_int/hello_int.dzn,
	test/all/hello_local/hello_local.dzn,
	test/all/hello_local_assign/hello_local_assign.dzn,
	test/all/hello_namespace_foreign/hello.dzn,
	test/all/hello_namespace_shadow/hello_namespace_shadow.dzn,
	test/all/hello_otherwise/hello_otherwise.dzn,
	test/all/hello_out_data/hello_out_data.dzn,
	test/all/hello_out_state/hello_out_state.dzn,
	test/all/hello_recursive/hello_recursive.dzn,
	test/all/hello_reply/hello_reply.dzn,
	test/all/hello_tick/hello_tick.dzn,
	test/all/hello_two/hello_two.dzn,
	test/all/hellofundata/hellofundata.dzn,
	test/all/hellointbug/hellointbug.dzn,
	test/all/hellooutevent/hellooutevent.dzn,
	test/all/helloparam/helloparam.dzn,
	test/all/helloparams/helloparams.dzn,
	test/all/inevitable_multiple_requires/inevitable_multiple_requires.dzn,
	test/all/injected_foreign/injected_foreign.dzn,
	test/all/inline-functions/baseline/default.dzn,
	test/all/inline-functions/baseline/inline-f.dzn,
	test/all/inline-functions/baseline/inline-g.dzn,
	test/all/inline-functions/baseline/inline-null.dzn,
	test/all/inner.space/inner.space.dzn,
	test/all/interface_enum/interface_enum.dzn,
	test/all/interface_int/interface_int.dzn,
	test/all/iteration/iteration.dzn,
	test/all/parse_missing_event/parse_missing_event.dzn,
	test/all/parse_parameter_mismatch/parse_parameter_mismatch.dzn,
	test/all/pump_twice/pump_twice.dzn,
	test/all/step_state/step_state.dzn,
	test/all/stress_comment/stress_comment.dzn,
	test/all/system_bool_enum/system_bool_enum.dzn,
	test/all/system_double_inevitable/system_double_inevitable.dzn,
	test/all/system_double_out/system_double_out.dzn,
	test/all/system_flush_double/system_flush_double.dzn,
	test/all/system_foreign_only/system_foreign_only.dzn,
	test/all/system_foreign_only_flush/system_foreign_only_flush.dzn,
	test/all/system_helloworld/system_helloworld.dzn,
	test/all/system_import_foreign/hello0.dzn,
	test/all/system_import_foreign/system_import_foreign.dzn,
	test/all/system_out/system_out.dzn,
	test/all/system_out_internal/system_out_internal.dzn,
	test/all/system_out_two/system_out_two.dzn,
	test/all/unused_function/unused_function.dzn,
	test/all/wf_missing_bindings/wf_missing_bindings.dzn: Order interfaces,
	components, instances and bindings accordingly.

2023-09-13  Rutger van Beusekom  <rutger@dezyne.org>

	ast: Add <event> specialization of ast:direction.
	* dzn/ast.scm (ast:direction <event>): New specialization.

2023-06-23  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Allow '=' in nonterminal identifiers.
	* dzn/peg/string-peg.scm (peg-as-peg, peg-nonterminal): Add '=' to
	character range.

2025-01-13  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Formatting.
	* dzn/peg/codegen.scm (fall-back-skip): Replace begin with let and
	format.

2025-01-08  Rutger van Beusekom  <rutger@dezyne.org>

	test: LegoBallSorter: Refactor imports and define before use.
	* test/all/LegoBallSorter/BallSorter.dzn: Remove redundant import.
	* test/all/LegoBallSorter/Brick2.dzn,
	test/all/LegoBallSorter/Brick3.dzn: REMOVEME XXX?
	* test/all/LegoBallSorter/Conveyor.dzn,      XXX?
	component file.                              xxx?
	* test/all/LegoBallSorter/EndConstrainedAxis.dzn: Use interface instead
	of component file.
	* test/all/LegoBallSorter/FeedPort.dzn: Reorder component before
	encapsulating system.
	* test/all/LegoBallSorter/Feeder.dzn,
	test/all/LegoBallSorter/Inspector.dzn,
	test/all/LegoBallSorter/LightSensor.dzn,
	test/all/LegoBallSorter/MaterialHandler.dzn,
	test/all/LegoBallSorter/Motor.dzn,
	test/all/LegoBallSorter/Robot.dzn,
	test/all/LegoBallSorter/Stage.dzn,
	test/all/LegoBallSorter/TouchSensor.dzn: Remove redundant import and
	reorder component before encapsulating system.
	* test/all/LegoBallSorter/foreign_timer.dzn (itimer): Move to...
	* test/all/LegoBallSorter/lego.dzn (itimer): ...here.

2025-01-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Cleanup parse:tree-alist->ast.
	* dzn/parse.scm (parse:tree-alist->ast)[expand-imports]: Use match
	instead of car/cdr.
	[file+content->file]: Use unquote instead of cons.

2025-04-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	peg: Memoize peg:imports.
	* dzn/peg/util.scm (peg:imported-file-names-unmemoized): Add content parameter.
	(peg:imported-file-names-helper): Use it in new memoized procedure.
	(peg:imported-file-names): Use it.

2024-12-02  Rutger van Beusekom  <rutger@dezyne.org>

	parse: Refactor file->content-alist to prepare for PEG symbol table.
	This changes the ordering of the imports parse *-alists to be
	topologically sorted, i.e.,

	    ((MAIN-FILE . content)
	     (least-dependent-import . content)
	     ..
	     (most-dependent-import . content))

	to prepare for the PEG symbol table parser.

	* dzn/parse.scm (file->string-unmemozized): New memoizable procedure.
	(parse:file->content-alist): Use them to simplify and correct, i.e.,
	define before use ordering.  This changes the ordering of the resulting
	alist.
	* test/all/parse-flags: Update baseline.

2024-12-02  Rutger van Beusekom  <rutger@dezyne.org>

	parse: Factor-out canonicalize-file-name.
	* dzn/shell-util.scm (canonicalize-file-unmemoized, canonicalize-file):
	New prodedures, factored-out from...
	* dzn/parse.scm (parse:file->content-alist): ...here.  Also factor-out...
	(file->string-unmemozized): ...this new procedure.

	parse: Unnest unnecessarily nested procedure.
	* dzn/parse.scm (parse:file->stream)[file+content->stream-line]: Move
	out of outer let.

2025-04-09  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Restrict imports to top of dezyne file.
	This improves performance considerably, about an order of magnitude, on
	parsing large projects.

2024-09-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	scheme: Do not crash when top (copyright) comment is missing.
	* dzn/code/language/scheme.scm (scheme:comment <ast>): Cater for ast
	without comment.

2025-01-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Support running non-compiled template framework from anywhere.
	* Makefile.am (DZN_UNINSTALLED, DZN_PREFIX): New exported variables.
	* dzn/templates.scm (compile-template): Use %template-dir instead of
	relative "dzn/templates".
	(define-templates-base): Likewise.

2025-01-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add port type-name lookup for missing interface.
	* test/dzn/parse.scm ("string-tree"): New test.

	tree: Support type-name for port.
	* dzn/parse/tree.scm (.type-name): Cater for port's
	type-name (compound-name) wrapped in provides/requires.

	tree: Support normalization without locations.
	* dzn/parse/tree.scm (tree:scoped-name->compound-name): Make location
	optional.

	tree: Fix programming-warning.
	* dzn/parse/tree.scm (tree?): Use write semantics.

	tree: Cleanup context:collect.
	* dzn/parse/tree.scm (context:collect): Remove duplicate definition.
	(context:collect): Change order of parameters.
	(tree:list-model*): Update accordingly.

	dzn: Add true tree:collect.
	* dzn/parse/tree.scm (tree:collect): Rename to...
	(tree:filter): ...this.
	* dzn/parse/complete.scm (complete:context): Update accordingly.

	parse: Remove redundant annotation.
	* dzn/parse.scm (parse:content-alist->tree-alist): Remove *.

	test: Add parse unit test.
	* test/dzn/parse.scm: New file.
	* test/dzn/local.mk (UNIT_TESTS): Register it.

	peg: Keep comments when %peg:locations? is unset.
	* dzn/peg/codegen.scm (wrap-parser-for-users): Only remove locations
	when %peg:locations? is unset, not comments.

	peg: Refactor nested if.
	* dzn/peg/codegen.scm (wrap-parser-for-users): Rewrite to use COND.

2025-02-13  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Cater for comments in between imports.
	* dzn/peg/util.scm: (peg:imported-file-names): After import ignore
	trailing parse tree nodes, like comments.

2025-01-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Expose content-alist on convenience interface.
	* dzn/parse.scm (parse:file->tree-alist+content-alist,
	parse:file->tree-alist): Add #:content-alist parameter.

2025-01-13  Rutger van Beusekom  <rutger@dezyne.org>

	language: Remove testing for multiple port qualifiers.
	* dzn/parse/complete.scm (complete:root): Simplify to ony cater for one qualifier.
	* test/language/component-requires.dzn (hello): Remove multiple port
	qualifier ports.
	* test/dzn/language.scm ("component-requires external injected",
	"component-requires injected external"): Remove tests.

2025-01-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	language: Drop lazy importing and just-in-time parsing.
	* dzn/commands/language.scm (main): Use parse:file->tree-alist instead
	of parse:string->tree*.
	* test/dzn/language.scm (test-context): Likewise.

	language: Merge gratuitous inner let.
	* dzn/commands/language.scm (main): Collapse inner context let.

2025-01-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Support for using parse:file->content-alist with import failures.
	* dzn/parse.scm (parse:file->tree-alist): Add #:ignore-import-error?
	Pass it to...
	(parse:file->content-alist): ...here.  Add #:ignore-import-error?
	parameter.  Do not throw 'import-error when set.

	test: language: Remove duplicate definition.
	* test/language/import-double.space.dzn (bar.int, bar.double.i): Make
	unique names.

	test: language: Cater for define before use.
	* test/language/lookup.dzn (ihello_nondet): Move before its use in
	compontent.
	* test/dzn/language.scm ("port->interface"):
	("variable-expression->variable", "trigger->port", "action->port",
	"action->event"): Update accordingly.

2025-01-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: language: Cater for define before use.
	* test/language/enum.dzn: Move enum definition before its use in interface.
	* test/dzn/language.scm ("field-test field", "enum-literal with
	comment", "field-test->reference", "field-test->enum-field",
	"enum-literal->field with comment"): Update locations accordingly.

2025-01-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: language: Fix lookup locations.
	* test/dzn/language.scm ("system binding instance provides", "system
	binding instance requires"): Avoid attempting lookup at <=> symbol.

	language: Add misc.
	* dzn/parse/lookup.scm: Use (dzn misc) for debugging.
	* dzn/commands/language.scm: Likewise.
	* test/dzn/language.scm: Likewise.

	language: Use write mode for tree debug printing.
	* dzn/commands/language.scm (main): Use "~s" instead of "~a" for
	"tree:...".

2024-12-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add cruel_project.
	* test/all/cruel_project: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.
	:

2025-01-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: hello_project: Also run verify.
	* test/all/hello_project/run: Run verify on the directory.

2024-12-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	verify: Support mulitple files, and directory as FILE-NAME.
	* dzn/verify/pipeline.scm (verification:verify): Add #:multiple?
	parameter.  Pass it to...
	(verification:models): ...here.  Add #:multiple? parameter.  Use it to
	disable verification of interfaces when verifying multiple files.
	* dzn/commands/verify.scm (file->verify): New procedure, factored-out
	from...
	(main): ...here.  Use it to support building a directory.
	* doc/dezyne.texi (Invoking dzn verify): Document it.

2024-11-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	hello: Add `--runtime' option.
	* dzn/config.scm.in (%runtime-dir): New variable.
	* dzn/commands/hello.scm (parse-opts): Add `--runtime' option.
	(main): When used, print %runtime-dir.
	* doc/dezyne.texi (Invoking dzn hello): Document it.

2024-11-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: Add --version-number option.
	This simplifies getting the version number of Dezyne in environments
	where Dezyne is the only program in use that conforms to the GNU coding
	standards.

	* dzn/script.scm (parse-opts): Add `--version-number' option.  When
	used, print a terse version number using...
	* dzn/command-line.scm (show-version-number-and-exit): ..this new
	procedure.

2025-01-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: hello_project: Add checks for dzn hash.
	* test/all/hello_project/run: Check various sha1sum's.

2024-11-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	hash: New command.
	* dzn/hash.scm (dzn): New file.
	* dzn/local.mk (dist_%C%_scm_DATA): Register it.
	* dzn/commands/hash.scm: Use it in new file.
	* dzn/commands/local.mk (dist_%C%_scm_DATA): Register it.
	* doc/dezyne.texi (Invoking dzn hash): Document it.

	build: Check for guile-gcyrpt.
	* configure.ac: Add check.

	guix: dezyne: Add guile-gcrypt dependency.
	* guix/pack/dezyne.scm (dezyne)[inputs]: Add guile-gcrypt.

2024-11-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Add -D,--no-directives option.
	Using `| grep -v ^#' is reportedly too cumbersome or even unknown (dying?) art.

	* dzn/commands/parse.scm (parse-opts): Add -E,--no-directives option.
	(main): When used, imply --preprocess.
	(preprocess): Forward it to...
	* dzn/parse.scm (parse:file->stream): ...here.  Add #:file-directives?
	parameter.  Use it to omit #file and #import directives.
	* doc/dezyne.texi (Invoking dzn parse): Document it.

2024-11-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_project.
	* test/all/hello_project: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

	test: Add run-build, run-execute.
	* test/bin/run-build,in,
	test/bin/run-execute.sh: New files.
	* configure.ac: Generate executable versions.
	* .gitignore: Ignore them.

2024-11-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c++: Add -t,--touch-empty-files.
	Touching empty files creates consistency that removes an irregularity
	from the build system.

	* dzn/commands/code.scm (parse-opts): Add -t,--touch-empty-files.
	(main): Pass it...
	(file->code): ...here, into new #:empty-files? parameter.
	* dzn/code.scm (code): Add parameter #:empty-files?.  Pass it...
	* dzn/code/language/c++.scm (ast->): ...here into new #:empty-files?
	parameter.  When set, touch otherwise empty .cc file using...
	* dzn/code/util.scm (code:touch): ...this new procedure.
	* dzn/code/language/c.scm (ast->): Add #:empty-files? parameter.
	* dzn/code/language/cs.scm (ast->): Likewise.
	* dzn/code/language/dot.scm (ast->): Likewise.
	* dzn/code/language/dzn.scm (ast->): Likewise.
	* dzn/code/language/javascript.scm (ast->): Likewise.
	* dzn/code/language/json.scm (ast->): Likewise.
	* dzn/code/language/makreel.scm (ast->): Likewise.
	* dzn/code/language/scheme.scm (ast->): Likewise.
	* doc/dezyne.texi (Invoking dzn code): Document it.

2024-11-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Support mulitple files, and directory as FILE-NAME.
	* dzn/shell-util.scm (dzn-file?, file-name->dzn-files): New prodedures.
	* dzn/code/util.scm (code:dump): Add #:verbose? parameter.
	* dzn/code.scm (code): Add #:verbose? parameter.
	* dzn/code/language/c++.scm (ast->): Add #:verbose? parameter.
	* dzn/commands/code.scm (file->code): New procedure, factored-out
	from...
	(main): ...here.  Use them to support building a directory.
	* dzn/code/language/c.scm (ast->): Add #:verbose? parameter.
	* dzn/code/language/cs.scm (ast->): Likewise.
	* dzn/code/language/dot.scm (ast->): Likewise.
	* dzn/code/language/dzn.scm (ast->): Likewise.
	* dzn/code/language/javascript.scm (ast->): Likewise.
	* dzn/code/language/json.scm (ast->): Likewise.
	* dzn/code/language/makreel.scm (ast->): Likewise.
	* dzn/code/language/scheme.scm (ast->): Likewise.
	* doc/dezyne.texi (Invoking dzn code): Document it.

2024-11-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: c++: Use dezyne dependencies.
	* test/lib/build.c++.make ($(OUT)/%.hh, $(OUT)/%.cc): Dummy rules to
	convince make that their being out-of-date is important by telling it
	that these files can actually be rebuilt.

	c++: Generate make dependencies.
	* dzn/code/util.scm (code:depend-dir, code:depend-file-name,
	code:relative-file-name, code:depend-imports): New procedures.
	* dzn/code/util.scm (): New procedure.
	* dzn/code/language/c++.scm (ast->): Use them to generate make dependencies.
	* doc/dezyne.texi (Invoking dzn code): Document it.

2024-09-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	misc: common-prefix: Support #:eq?.
	* dzn/misc.scm (common-prefix): Add optional #:eq? parameter.

2024-03-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	misc: Add common-prefix.
	* dzn/misc.scm (common-prefix): New procedure.

2025-01-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Do not prematurely cut model from AST.
	* dzn/commands/parse.scm (parse): Do not cut model from AST.
	* dzn/commands/code.scm (main): Remove workaround for that.
	* dzn/commands/graph.scm (main): Likewise.
	* dzn/commands/simulate.scm (main): Likewise.
	* dzn/verify/pipeline.scm (verification:models): New procedure,
	refactored to respect --model selection for interfaces too.
	Factored-out from...
	(verification:verify): Here.

2025-01-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	verify: Verify non-imported interfaces even with --no-interfaces.
	* dzn/verify/pipeline.scm (verification:verify): Refactor, keep
	non-imported interfaces with --no-interfaces.
	* doc/dezyne.texi (Invoking dzn verify):

	parse: Resurrect parsing from stdin.
	* dzn/parse.scm (parse:file->content-alist)[canonicalize-path-memoized]:
	Cater for file-name "-".

2024-11-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	shell-util: Replace file-is-directory?.
	* dzn/shell-util.scm (file-is-directory?): Use #:replace to silence
	warning.

2024-11-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	exec: New command.
	* dzn/commands/exec.scm: New file.
	* dzn/commands/local.mk (dist_%C%_scm_DATA): Register it.
	* doc/dezyne.texi (Invoking dzn exec): Document it

2024-09-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	misc: Add write-line, write-line-error.
	* dzn/misc.scm (write-line-error): New procedure.

2024-04-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Friendlier debugging.
	* dzn/parse.scm (parse:string->tree): Use debug instead of format.
	(parse:annotate-ast): Add canary.

	misc: Add debug.
	* dzn/vm/util.scm (%debug?): Move to...
	* dzn/misc.scm (%debug?): ...here.
	(debug): New procedure.

2024-08-01  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: Add --threads option.
	* dzn/script.scm (parse-opts): Add --threads.
	* dzn/verify/pipeline.scm (in-out:lps->aut): Use it on lps2lts as
	--threads=NUMBER.
	* doc/dezyne.texi (Invoking dzn): Document it.
	* configure.ac: Check for LPS2LTS with --threads=N.

2024-07-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Use FALSE,TRUE instead of False,True.
	This prepares to cater for Python.

	* test/all/bool_expressions/bool_expressions.dzn
	test/all/hello_implicit_enum/hello_implicit_enum.dzn,
	test/all/import_cycle/ihello.dzn,
	test/all/import_cycle/import_cycle.dzn,
	test/all/import_cycle/iworld.dzn,
	test/all/sync_out_reply_enum/sync_out_reply_enum.dzn,
	test/all/unused_interface_type/icruel.dzn,
	test/all/unused_interface_type/interfaces.dzn,
	test/all/unused_interface_type/unused_interface_type.dzn: Use FALSE,TRUE.

2024-04-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	misc: Add atom?.
	* dzn/misc.scm (atom?): New prodedure.

	misc: Add display-join*.
	* dzn/misc.scm (display-join*): New procedure.
	(display-join): Use it.

2024-03-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Exit gracefully when --shell does not specify a system.
	* dzn/parse.scm (parse:handle-exceptions): Handle `quit'.
	* dzn/commands/code.scm (main)[shell-error]: New inner define.  Enclose
	body in `call-with-handle-exceptions' and use it to throw errors

2024-04-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add space.shell.
	* test/all/space.shell: New test.
	(REGRESSION_TESTS): Add it.

	test: Add hello_shell.
	* test/all/hello_shell: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2024-03-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add usage/code/shell.
	* test/all/usage/code/shell: New test.
	* test/all/local.mk (USAGE_TESTS): Add it to new variable.
	(FULL_TESTS): Add $(USAGE_TESTS).

2024-04-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Rename <state> to <share-state>.
	* dzn/code/shared.scm (<state>): Rename to...
	(<share-state>): ...this.
	* dzn/code/language/makreel.scm (makreel:add-state-placeholder): Update user.
	* dzn/code/scmackerel/makreel.scm (ast->process): Update user.

	code: Split (dzn code goops) into (dzn code ast) and (dzn code shared).
	* dzn/code/goops.scm: Split into...
	* dzn/code/shared.scm: ...this, and, ...
	* dzn/code/ast.scm: ...this.
	* dzn: Update module includes accordingly.

2024-04-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Refactor location-prefix.
	* dzn/vm/report.scm (location-prefix): Refactor into...
	(location-prefix <boolean>, location-prefix <statement>, location-prefix
	<model>): ...method with these specializations to compensate for having
	a model as #:statement.

2024-04-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Make <on> observable instead of <initial-compound>.
	* dzn/vm/util.scm (make-implicit-illegal): Rewrite to make an <on> with
	a <declarative-illegal> statement.
	* dzn/vm/step.scm (step <initial-compound>): Update accordingly.
	(step <program-counter> <declarative-illegal>): Handle it in new
	specialization.
	* dzn/vm/compliance.scm (zip, check-provides-compliance,
	check-provides-compliance+, update-shared-state): Use <on>
	instead of <initial-compound>.
	* dzn/vm/report.scm (pc-event? <initial-compound>): Change to...
	(pc-event? <on>): ...this.
	(pc->event <initial-compound>): Change to...
	(pc-event <on>): ...this.
	(pc-component? <initial-compound>): Change to...
	(pc-component? <on>): ...this.
	(pc->component <initial-compound>): Change to...
	(pc-component <on>): ...this.
	(pc-arrow? <initial-compound>): Change to...
	(pc-arrow? <on>): ...this.
	(pc->arrow <initial-compound>): Change to...
	(pc-arrow <on>): ...this.
	(complete-split-arrows-pcs): : Use <on> instead of <initial-compound>.

	code: Remove stray debugging pke's.
	* dzn/code/scmackerel/code.scm (declarative-compound->code): Remove pke's.

2024-03-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_blocking_double_release: Skip verify.
	* test/all/compliance_blocking_double_release/META: Add skip verify.

2022-02-10  Paul Hoogendijk  <paul@dezyne.org>

	test: compliance_blocking_double_release2: Rename from blocking_double_release.
	* test/all/blocking_double_release2: Rename to...
	* test/all/compliance_blocking_double_release: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2024-03-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_multiple_provides0: Skip verify.
	* test/all/blocking_multiple_provides0/META: Add skip verify.

2024-03-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	runtime: Cleanup interface.
	* dzn/vm/runtime.scm (runtime:instance->path): Refactor.
	(runtime:kind): Use ast:requires? instead of runtime:requires-instance?
	(runtime:other-port-unmemoized): Use is-a? instead of
	runtime:component-instance?, runtime:foreign-instance? runtime:system-instance?.
	runtime:component-instance?,
	runtime:foreign-instance?,
	runtime:foreign-instance?,
	runtime:port-instance?,
	runtime:provides-instance?,
	runtime:runtime-provides-port*,
	runtime:runtime-requires-port*,
	runtime:system-instance?,
	runtime:system-port?): Remove.

	 and an empty message aborts the commit.

2024-03-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	graph: Show sut and instances when debugging.
	* dzn/explore.scm (lts): When %debug?, show sut and instances.

	simulate: Show sut and instances when debugging.
	* dzn/simulate.scm (simulate**): When %debug?, show sut and instances.

2024-03-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_header.
	* test/all/hello_header: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2024-03-18  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: runtime: Remove runtime:%sut-port?.
	* dzn/vm/runtime.scm (runtime:%sut-port?): Remove.

2024-03-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Cleanup run-requires-flush.
	* dzn/vm/run.scm (run-requires-flush): Use trigger->component-trigger.

	vm: Cleanup run-external-modeling.
	* dzn/vm/run.scm (run-external-modeling): Use
	trigger->component-trigger.

	vm: Cleanup run-silent.
	* dzn/vm/run.scm (run-silent): Use trigger->component-trigger.

	vm: Cleanup run-requires.
	* dzn/vm/run.scm (run-requires): Use trigger->component-trigger.

2024-03-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Nitpick run-requires.
	* dzn/vm/run.scm (run-requires): Use r:port instead of port-instance.

	vm: Cleanup assign.

	vm: Refactor variables-prefixed-with-name.
	* dzn/vm/util.scm (merge-port-state): Use let, drop cons.

2023-08-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: normalize: Nitpick.
	* test/dzn/normalize.scm: Move (test-end) into same scope as test-begin
	"simplify".

	test: Add implicit_temporary3.
	* test/all/implicit_temporary3/implicit_temporary3.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add implicit_temporary2.
	* test/all/implicit_temporary2/implicit_temporary2.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add implicit_temporary1.
	* test/all/implicit_temporary1/implicit_temporary1.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-08-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add implicit_temporary0.
	* test/all/implicit_temporary0/implicit_temporary0.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2025-08-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: Rename (dzn ast goops) to (dzn ast ast).
	* dzn/ast/goops.scm: Rename to...
	* dzn/ast/ast.scm: ...this.
	* dzn/ast/local.mk (dist_%C%_scm_DATA): Update accessor.

2023-07-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Cater for <skip>.
	* dzn/code/scmackerel/code.scm (ast->code <object>, ast->code <skip>):
	New specializations.

2023-07-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Add ast:add-statement*.
	* dzn/ast.scm (ast:add-statement*): New method, factored-out from...
	* dzn/ast/normalize.scm (add-defer-end): ...here.

2023-08-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Move blocking-into-binding until after triplets.
	* dzn/ast/normalize.scm (binding-into-blocking): Cater for
	<declarative-illegal>.
	* dzn/code.scm (code:normalize-): Move blocking-into-binding up.

2023-07-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Add ast:add-statement.
	* dzn/ast.scm (ast:add-statement): New method.

2024-10-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	peg: Whitespace.
	* dzn/peg/codegen.scm (wrap-parser-for-users): Wrap lines.

2024-03-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Throw error when event not found in constraining LTS.
	* dzn/code.scm (code:shared): Change debugging hack into programming error.

2024-03-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	verify: Deprecate -a,--all for new -k,--keep-going.
	Also refactor implementation.

	* dzn/commands/verify.scm (parse-opts): Add -k,--keep-going.  Mention
	deprecation of -a,--all.
	(main): Issue a deprecation warning when using -a,--all.  Pass
	new #:keep-going parameter to...
	* dzn/verify/pipeline.scm (verification:verify): ...here.  Add
	new #:keep-going? parameter.  Refactor to use that instead of
	command-line:get.  Pass it to...
	(mcrl2:verify): ...here.  Likewise.  Pass it to...
	(mcrl2:verify-component): ...here, and...
	(mcrl2:verify-interface): ...here, and...
	(mcrl2:verify-component-asserts): ...here, and...
	(mcrl2:verify-interface-asserts): ...here, and...
	(reduce-or): ...here.
	* test/dzn/dzn.scm (run-verify): Use --keep-going.
	* test/bin/update.sh: Likewise.
	* doc/dezyne.texi (Invoking dzn verify): Document it.

2024-03-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	graph: Consider foreign stubs at boundary.
	This fixes LTS for foreign_import.

	* dzn/vm/util.scm (labels): Also return labels for foreign stubs at
	boundary.

2023-09-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	traces: Cleanups.
	* dzn/commands/traces.scm (model->lts): Remove unused file-name
	parameter.  Fix constant error message.
	(main): Update caller.

2023-08-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid `possibly wrong number of arguments' warning.
	* dzn/simulate.scm (end-report): Use cute instead of cut with keyword
	arguments.

	parse: Respect COLUMNS when pretty-printing parse-tree or ast.
	* dzn/commands/parse.scm (main): Set width from COLUMNS environment
	variable.

	ast: Add #:width parameter to ast:pretty-print.
	* dzn/ast/display.scm (ast:pretty-print): Add new #:width parameter.

	test: parse_locations: Use COLUMNS=79.
	* test/all/parse_locations/run: Set COLUMNS to 79.

	build: Avoid direnv errors in pre-inst-env.
	* build-aux/pre-inst-env.in: Redirect grep LC errors to /dev/null.
	Only exec when when arguments given to exec.

2023-08-01  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Remove usused value from let.
	* dzn/code/scmackerel/c++.scm (component-model->sm:statements-unmemoized):
	Remove this-out-binding.

2023-07-25  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Split-off list-models.
	* dzn/commands/parse.scm: Remove (dzn parse tree) dependency leading to
	.parent conflict.
	(list-models): Rename to...
	(display-models): ...this, ...
	(main): ...update caller, and factor-out creation of ((name . type) ...)
	alist to...
	* dzn/parse/util.scm: ...this new file.
	* dzn/parse/local.mk (dist_%C%_scm_DATA): Add it.

2023-08-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	tree: Move (dzn parse util) to (dzn parse location).
	* dzn/parse/util.scm: Rename to...
	* dzn/parse/location.scm: ...this.
	* dzn/parse/local.mk (dist_%C%_scm_DATA): Update accordingly.
	* dzn/commands/language.scm,
	dzn/parse/lookup.scm,
	dzn/trace.scm,
	test/dzn/language.scm: Update module uses.

2023-07-31  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Remove dead code.
	This is a follow-up to commit
	    5aa518003a150f843a643ed0f5ed8244b5c2e582
	    verify: Fix non-determinstic constraint deadlock.

	* dzn/code.scm: (code:shared)[trigger?]: Restore check for string?.

2023-07-27  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Remove useless code.
	This is a follow-up to commit
	    270c9d9255e3ded24de65c08bee2ac3fe5f287a8
	    makreel: Strict state synchronization at port run to completion.

	* dzn/code/scmackerel/makreel.scm (ast->process <component>
	<action-reply>): Refactor remove redundant string-append.

2023-08-02  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: parse-flags: Remove PWD hack.
	* test/all/parse-flags/parse.sh: Remove SED'ing away working-directory.

2023-07-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse; Remove working-directory.
	This effectively reverts commit
	    5d81a1335b1494a5978a4d564e6e6635cd076f5b
	    parse: Add working-directory to preprocess output and ast.

	Before 2.19, the working-directory--an exclusive requirement for
	Verum-Dezyne's graphical views--was passed through the DZN client code,
	including the processor stream, the AST, system, state, and trace
	output.  In 2.19, Verum-Dezyne handles working-directory administration
	locally.

	* dzn/parse.scm (parse:file->content-alist): Remove working-directory
	return value.
	(parse:content-alist->tree-alist): Likewewise, update caller.
	(parse:file->tree-alist+content-alist): Likewise.
	(parse:annotate-ast): Likewise.
	(parse:file->stream): Do not prepend #dir to stream.
	(parse:file-match): New procedure, factored-out from...
	(parse:stream->content-alist): ...here.  Remove "#dir" stripping.
	* test/all/hello_imported/hello_imported.dzn: Update accordingly.

2023-07-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	graph: Remove working-directory.
	This effectively reverts commit
	    2e3b001522b6b74b402b6220a07594d74f00cd2c
	    explore: Add working-directory to json output.

	* dzn/ast/goops.scm (<root>)[working-directory]: Remove field.
	* dzn/ast/parse.scm (parse:tree->ast): Remove #:working-directory parameter.
	* dzn/parse.scm (parse:tree-alist->ast): Update caller.
	* dzn/explore.scm (state-diagram->json): Remove working-directory
	parameter.
	(state-diagram): Update caller.
	* test/all/parse-flags/baseline/parse.out,
	test/all/parse_locations/baseline/parse.out: Update baseline.

2023-07-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Refactor preprocessor.
	* dzn/parse.scm (parse:string->content-alist): Rename to...
	(parse:stream->content-alist): ...this.  Do not cater for any string,
	expect preprocessed stream, and refactor.
	(parse:preprocessed?): New procedure.
	(parse:file->content-alist): Use it to dispatch to...
	(parse:stream->content-alist): ...this.  Remove special handling for stdin.
	(parse:string->tree-alist+content-alist): Remove.
	(parse:file->tree-alist+content-alist): Remove special handling for
	stdin.
	(parse:file->tree-alist): Likewise.
	(parse:string->ast): Remove dependency on pacse:string->content-alist.

2023-07-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Allow parsing without locations.
	This is a follow-up to commit
	    977ec01b18375cf62f9f1a11106096596cc8882c
	    ast: Cleanup parse-tree->ast, preserve some comments.

	* dzn/parse.scm (parse:string->tree): Add #:locations? parameter.
	* dzn/ast/parse.scm (strip): Cater for empty arguments,
	types-and-events, formals.

2023-07-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Refactor and cleanup exception handling.
	This is a second follow-up to commit
	    4e019304f5c10a8b182a4dcbc5304639d9d6851d
	    parse: Add and evaluate fall-back parse return code.

	This removes the all-over-the-place exception handling and
	multiple-values parse-failed? return and #:debug? parameter handling,
	using exeption handling at toplevel exclusively.

	* dzn/parse.scm (parse:call-with-handle-exceptions): Return #f instead
	of multiple values (unless #:exit?).
	(parse:string->fall-back-tree): Remove wrapper only setting
	paramaterize--which belongs in client code, while also lying about it in
	its docstring.
	(parse:string->tree): Remove #:fall-back? parameter and factor
	gratuitous `parse without fall-back when in fall-back mode' out to...
	(parse:string->tree*): ..this new procedure.
	(parse:file->tree parse:content-alist->tree-alist,
	parse:file->tree-alist+content-alist, parse:file->tree-alist,
	parse:string->ast, parse:file->ast): Remove #:debug? parameter,
	parse-failed? return value, and move exception handling out to...
	* dzn/commands/parse.scm (parse-tree): ...here, and...
	(parse): ...here.  Update accordingly and refactor to use only one
	toplevel exception handler.
	(main): Update accordingly.  Also respect -o,--output for parse tree.

2023-07-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Refactor to use consistent naming and separate stages.
	Use consistent naming: parse:<from>-><to>, categorize into sections:
	content-alist, parse tree and tree-alist, and ast.

	* dzn/parse.scm (peg:line-number, peg:column-number, peg:line,
	peg:message, peg:imported-from->message, peg:error-message,
	peg:syntax-error->message, peg:handle-syntax-error, peg:flatten-tree,
	format-capture-syntax-error, format-display-syntax-error): Move to...
	* dzn/peg/util.scm: ...this new file.
	* dzn/peg/local.mk (dist_%C%_scm_DATA): Add it.

	* dzn/parse.scm (file->string): Factor-out from...
	(file->stream): ...here.  Rename to...
	(parse:file->stream): ...this.
	(call-with-handle-exceptions): Rename to...
	(parse:call-with-handle-exceptions): ...this.  Add #:exit parameter.

	(file+import-content-alist): Rename to...
	(parse:file->content-alist): ...this
	(string->file+import-content-alist): Rename to...
	(parse:string->content-alist): ...this.

	(string->parse-tree): Rename to...
	(parse:string->tree): ...this.
	(parse:file->tree): New procedure.
	(string->fall-back-parse-tree): Rename to...
	(parse:string->fall-back-tree): ...this.  Add comment about lying
	docstring.
	(parse:string->tree-alist+content-alist): New procedure.
	(parse-file+import-content-alist): Rename to...
	(parse:content-alist->tree-alist): ...this.

	* dzn/parse.scm (string->transformation): Move to...
	* dzn/commands/parse.scm (string->transformation): ...here.
	(parse:file->tree-alist+content-alist, parse:file->tree-alist,
	parse:annotate-ast): New procedures.  Factored-out from...
	(file->ast): ...this, renamed to...
	(parse:file->ast): ..this, and out from...
	(string->ast): ...this, renamed to...
	(parse:string->ast): ...this.  Also, move well-formedness checking,
	and transformations to...

	* dzn/commands/parse.scm (parse): ...here.  Update callers.  Move
	parse-tree and fall-back cases to...
	(parse-tree): this new procedure.
	(preprocess): Update callers.  Move handling aof exit to...
	(main): ...here.  Omit useless '[no ]errors found' in fall-back parsing.

	* dzn/commands/graph.scm,
	dzn/commands/language.scm,
	dzn/commands/verify.scm,
	dzn/parse/stress.scm,
	dzn/simulate.scm,
	dzn/trace.scm: Update callers.

	* dzn/script.scm (%time %measure): Update for new parse names.

	* test/all/parse_fall_back_import_path/baseline/verify.out,
	test/all/parse_fall_back_import_self/baseline/verify.out,
	test/all/parse_fall_back_non_existent_import/baseline/verify.out,
	test/all/parse_fall_back_out_binding_argument/baseline/verify.out,
	test/all/parse_fall_back_preprocessed_foo/baseline/verify.out,
	test/all/parse_fall_back_preprocessed_imported_bar/baseline/verify.out,
	test/all/parse_fall_back_preprocessed_imported_baz/baseline/verify.out,
	test/all/parse_fall_back_syntax/baseline/verify.out: Remove.
	* test/all/parse_fall_back_import_path/baseline/verify.err,
	test/all/parse_fall_back_out_binding_argument/baseline/verify.err:
	Update accordingly.
	* test/all/parse_peg_locations/baseline/verify.out: New file.

2023-07-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Change code:add-calling-context into a regular normalization.
	* dzn/code.scm (code:formal*, code:argument*): Remove.
	(code:add-calling-context-formal <formals>,
	code:add-calling-context-argument <arguments>,
	code:add-calling-context <root>): Merge methods into...
	(code:add-calling-context):  ...this new procedure.
	* dzn/transform.scm: Re-export it.
	* dzn/code/legacy/code.scm,
	dzn/code/scmackerel/c++.scm,
	dzn/code/scmackerel/c.scm,
	dzn/code/scmackerel/code.scm,
	dzn/code/scmackerel/cs.scm,
	dzn/templates/code.scm: Update callers.

	code: Change code:annotate-shells into regular normalization.
	* dzn/code.scm (code:annotate-shells): Refactor into full normalization.
	(code:normalize-): Use it.
	(code:model*): Remove on-the-fly normalization.
	* dzn/code/language/cs.scm (cs:normalize): Use it.

2023-09-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Keep <defer> event on input/output trail for c++.
	* test/dzn/dzn.scm (run-execute): Only remove <defer> for languages
	other than c++.

	c++: Log <defer> meta-event.
	* runtime/c++/dzn/runtime.hh (defer): Print <defer> before executing
	deferred event.

2025-06-10  Rutger van Beusekom  <rutger@dezyne.org>

	lts: Reformat label parsing.
	* dzn/lts.scm (parse-label): Introduce event-argument, modeling and EOF;
	reorder and format.

2024-11-05  Rutger van Beusekom  <rutger@dezyne.org>

	normalize: Eradicate noisy and refactor.
	* dzn/ast/goops.scm (.arguments, <function>): Remove noisy.
	* dzn/ast/local.mk (dist_%C%_scm_DATA): Replace silence.scm with recursive.scm
	* dzn/ast/normalize.scm (dzn): Remove add-determinism-temporaries,
	%noisy-ordering?: Remove parameter.
	(temporaries): Document, rename internal add-temporary? to temporary?.
	(temporaries*): Rename from noisy-temporaries.
	(add-temporary?): Split into add-temporary? and add-temporary*?.
	(split-complex?, split-complex-expressions, add-temporary,
	split+add-temporaries, add-explicit-temporaries): Refactor: curry to
	reduce size of add-explicit-temporaries and allow unit-testing of former
	inner functions.
	* dzn/ast/recursive.scm: Extract determining and setting function #:recursive? from silence.
	* dzn/code.scm (dzn): Remove code:normalize+determinism and replace with add-explicit-temporaries.
	* dzn/code/language/c++.scm (ast->),
	* dzn/code/language/c.scm (ast->): Replace code:normalize+determinism with code:normalize.
	* dzn/code/language/makreel.scm: Update add-explicit-temporaries accordingly.
	* dzn/parse.scm (dzn): Replace silence with recursive,
	(file->ast): Replace silence:annotate-functions with annotate-recursion.
	* dzn/script.scm (%time): Remove code:normalize+determinism.
	* dzn/transform.scm (dzn): Remove add-determinism-temporaries,
	code:normalize+determinism, split-complex-expressions.
	* dzn/vm/normalize.scm (vm:normalize): Update add-explicit-temporaries accordingly.
	* test/all/code-json/baseline/parse.out: Update baseline without noisy.
	* test/dzn/local.mk (UNIT_TESTS): Remove silence.scm.
	* dzn/ast/silence.scm: Delete

2025-01-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.20.2.22): Bump to 2.21..2.23.
	(Release 2.19): Add data return, invariants, global functions, dzn
	hash/build.  Move everything except node/parent, serialization to...
	(Release 2.20): ...this new section.  Add parallel operator task for
	scmackerel.
	(Release 2.21..Release 2.15): New sections.
	(Release 2.21, Release 2.22, Release 2.23): Bump to...
	(Release 2.26, Release 2.27, Release 2.28): ...this.

2025-09-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Whitespace.
	* doc/dezyne.texi: Use two spaces at end of sentence.

2025-09-02  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_defer_expression.
	* test/all/parse_defer_expression: New test.
	* test/all/local.mk (PARSER_TESTS): Register it.

2025-09-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	peg: Add defer-argument that is a reference.
	* dzn/parse/peg.scm: (peg:parse)[defer-arguments, defer-argument]: New
	nonterminals.
	[defer]: Use them.
	* dzn/ast/parse.scm (parse-tree->ast): Cater for them.

	wfc: Remove defer argument check for <expression>.
	* dzn/ast/wfc.scm (wfc-defer-argument <expression>): Remove.

	Revert "test: parse_defer: Add expression as defer parameter."
	This reverts commit 807866dd8dc7aedb8e376fa2801551584e9c8c78.

2025-09-02  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: parse_defer: Add expression as defer parameter.
	* test/all/parse_defer/ihello_world.dzn: New symlink.
	* test/all/parse_defer/parse_defer.dzn: Import it.
	(ihello):: Remove.
	(parse_defer): Use it.  Add defer (true);
	* test/all/parse_defer/baseline/verify.err: Update baseline.

	wfc: Check defer arguments for bare expressions.
	* dzn/ast/wfc.scm (wfc-defer-argument): Split procedure into...
	(wfc-defer-argument <var>,
	wfc-defer-argument <shared-var>,
	wfc-defer-argument <undefined>>): These new methods.
	(wfc-defer-argument <expression>): New specialization.

2025-09-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add circular_import_directory.
	* test/all/circular_import_directory: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	test: Add hello_circular_import.
	* test/all/hello_cirular_import: New test.
	* test/all/local.mk (FEATURE_TESTS): Register it.

2025-09-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Update copyright headers.
	Run build-aux/copyright-header.scm.

	build-aux/copyright-header.scm: Cater for ranges.
	* build-aux/copyright-header.scm (file-authors): Cater ranges.
	(range-expand): New procedure.
	(file-author-copyright-years): Use it, and cater for ranges.
	(year/range->string): New procedure.
	(create-ranges): Use it in new procedure.
	(flatten-years): New procedure.
	(author-copyright-line): Use it, and cater for ranges.

	doc: `README': Mention the use of ranges in copyright notices.
	* README (Copyright Notices): New section.
	* runtime/c++/dzn/coroutine.hh,
	runtime/c++/dzn/runtime.hh: Typo.

2025-09-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c: Cater for gcc-14's strictness.
	* dzn/code/language/c.scm (c:formal-type-name): New method.
	* dzn/code/scmackerel/c.scm (c:log-event-type-cast): Use it.

2025-08-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.18.4.
	* guix/pack/dezyne.scm (dezyne): Update to 2.18.4.

2024-11-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update NEWS.
	* NEWS (Changes in 2.18.4 since 2.18.3): New section.

2025-08-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Fix some email addresses.
	* test/all/blocking_defer/blocking_defer.dzn,
	test/all/shadow_shared_enum/shadow_shared_enum.dzn,
	test/all/shared_enum/shared_enum.dzn: Fix email address.

2025-08-26  Rutger van Beusekom  <rutger@dezyne.org>

	test: Fix starving_philosophers cs compilation.
	* test/all/starving_philosophers/starving_philosophers.dzn (Test): Add
	test muxer.
	(starving_philosophers): Use it.
	* test/all/starving_philosophers/main.cc (main): Update to use Test
	muxer.
	* test/all/starving_philosophers/main.cs: Replace symlink with new file.

	test: Fix dining_philosophers cs compilation.
	* test/all/dining_philosophers/Timer.cs (t_deferred, t_set): Rename
	output to out_port.
	* test/all/dining_philosophers/main.cs (Main): Add missing name
	argument, update for Test muxer component.

2025-08-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: Remove mono.
	* guix/mono-mdoc-timestamping.patch,
	guix/pack/mono.scm: Remove.

2025-07-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Eradicate behaviour, again.
	* test/all/defer_after_call/defer_after_call.dzn,
	test/all/hello_constraint/hello_constraint.dzn,
	test/all/hello_hello_block/hello_hello_block.dzn,
	test/all/no_unreachable/no_unreachable.dzn,
	test/all/simplify_guards/simplify_guards.dzn,
	test/all/unreachable_defer/unreachable_defer.dzn,
	test/all/unreachable_determinism/unreachable_determinism.dzn,
	test/all/unreachable_function/unreachable_function.dzn,
	test/all/unreachable_if/unreachable_if.dzn,
	test/all/unreachable_return/unreachable_return.dzn: Use behavior.

2025-08-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: Bump to a440ce45676eb96b3cfbcc01a498345e3905b769.
	This provides a bootstrapped mono-6.12 from upstream.

	* guix.scm: Update to a440ce45676eb96b3cfbcc01a498345e3905b769.

2025-08-08  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Synchronize queue-empty between component and semantics.
	* dzn/code/scmackerel/makreel.scm (ast->process <the-end>)
	(ast->process <if>): Add queue_empty choice here.
	(component-defer-processes): Allow queue_empty here.
	(component-semantics-processes): Comm queue_emtpy here.

2025-08-06  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Synchronize provides flush with semantics.
	* dzn/code/scmackerel/makreel.scm (component-semantics-processes): Add
	flush to mCRL2 comm, do not hide flush and state.
	* dzn/verify/pipeline.scm (compliance-taus): Add flush to --tau.

	makreel: Move state communication after behavior'end.
	* dzn/code/scmackerel/makreel.scm (ast->process <behavior>): Move state
	communication.
	(ast->variable-process <the-end>, ast->process <the-end>,
	semantics-async): Here.

2025-08-09  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Remove redundant state communication: semantics_main.
	* dzn/code/scmackerel/makreel.scm (semantics-main): Remove state
	communication for silent modeling event.

2025-08-08  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Refactor sum-state-action.
	* dzn/code/scmackerel/makreel.scm (sum-state-action continuation):
	Remove by inlining the addition of sm:sequence*
	* dzn/code/scmackerel/makreel.scm (ast->process, %blocked-formals)
	(semantics-async): Here.

2025-08-06  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Refactor shared state variables.
	* dzn/code/scmackerel/makreel.scm (ast->process): Avoid filtering shared
	variables for specific port by mapping over shared variables and using
	their ports.

2025-08-10  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Refactor remove code duplication.
	* dzn/code/scmackerel/makreel.scm (ast->variable-process): Rename from
	ast->process.
	(ast->process <assign>): Implement in terms of ast->variable-process.
	(ast->process <variable>): Implement in terms of ast->variable-process.

2025-08-12  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_choice_defer.
	* test/all/hello_choice_defer: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-08-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Avoid changing instance on error PCs, fixes choice labels.
	* dzn/vm/run.scm (run-flush <program-counter> <runtime:component>): Do
	not flush an PC with status set.

2025-08-12  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_choice_async.
	* test/all/hello_choice_async: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2025-08-06  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_no_function.

	test: Add shared_function.

2025-08-07  Rutger van Beusekom  <rutger@dezyne.org>

	test: shared_choice2: Complete redundant shared state.
	* test/all/shared_choice2/shared_choice2.dzn (shared_choice2): Complete
	redundant shared state.

2025-08-06  Rutger van Beusekom  <rutger@dezyne.org>

	test: shared_requires_guard: Add provides port shared state.
	* test/all/shared_requires_guard/shared_requires_guard.dzn
	(shared_requires_guard): Add provides port shared state.

2025-08-08  Rutger van Beusekom  <rutger@dezyne.org>

	test: hello_blocking_asynchronous_sync_out: Remove trailing assign.
	* test/all/hello_blocking_asynchronous_sync_out/hello_blocking_asynchronous_sync_out.dzn:
	(iworlda): Remove trailing assign.
	(hello_blocking_asynchronous_sync_out): Update accordingly.

	test: shared_choice2: Remove trailing assign.
	* test/all/shared_choice2/shared_choice2.dzn: Remove trailing assign.

2025-07-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_shell: Cater for gcc-14 / c++20.
	In c++20, the default for gcc-14, "requires" has become a keyword.

	* test/all/blocking_shell/c++/main.cc (main): Use provide/require
	instead of provides/requires.

2025-07-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: Indentation fixes.
	Run:

	    build-aux/indent.scm $(find . -name '*.scm')

2025-07-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build-auix/indent.scm: Fixes for Emacs 30.

2025-06-17  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Fix deadlock for state change in if-statement in interface.
	Add if statement state communication normalization.

	* dzn/code/language/makreel.scm: (makreel:add-state-placeholder): Handle
	if statement.
	* test/all/hello_guard_if/hello_guard_if.dzn: Add if statements with and
	without compound to the interface.
	* test/all/determinism_interface/baseline/verify.out: Update baseline.

2025-05-27  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Selectively block state communication.
	* dzn/code/scmackerel/makreel.scm: Define %shared parameter,
	(root->scmackerel): Initialize here,
	(makreel:shared-process-arguments, ast->process, assign->sum,
	ast->process, semantics-unblocked, semantics-blocking,
	semantics-skip-blocking, semantics-blocked, semantics-reply,
	semantics-blocked-main, semantics-async, component-semantics-processes):
	Replace ast:shared* with %shared parameter,
	(provides-processes, component-no-q-processes): Block %state-action.

	makreel: synchronize queue_empty in component_compliant constraint.
	* dzn/code/scmackerel/makreel.scm (component-assembly-processes): Add
	%queue-empty-action and %defer-qout-action communication.

2025-06-10  Rutger van Beusekom  <rutger@dezyne.org>

	lts: Use vanilla PEG
	* dzn/lts.scm (dzn): Replace (dzn peg) with (ice-9 peg)
	(parse-label): Remove parameterize %peg:debug?

2025-05-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: Fix printing of <shared-field-test>.
	* dzn/code/language/dzn.scm (print-ast <shared-field-test>): Print
	PORT.NAME.FIELD instead of ast:full-name.

	dzn: Fix printing of <shared-var>.
	* dzn/code/language/dzn.scm (print-ast <shared-var>): Print PORT.NAME
	instead of ast:full-name.

	dzn: Fix printing of void <return>.
	* dzn/code/language/dzn.scm (print-ast <return>): Omit <void>.

	test: Add nested.space.interface_function.
	* test/all/nested.space.interface_function: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	test: Add space.interface_function.
	* test/all/space.interface_function: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	dzn: Fix printing of nested namespace.
	* dzn/code/language/dzn.scm (print-ast <namespace>): Use ast:name
	instead of ast:dotted-name.

2025-05-12  Rutger van Beusekom  <rutger@dezyne.org>

	c: Add '\n' to dollar statements.
	* dzn/code/scmackerel/c.scm (root->header-statements): Here.

2025-05-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: mcrl2-next, mcrl2-next-minimal: Update to 202407.1
	* guix/pack/mcrl2.scm (mcrl2-next): Update to 202407.1.

2023-08-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: mcrl2-next, mcrl2-next-minimal: Update to 202307.1.
	* guix/pack/mcrl2.scm (mcrl2-next): Update to 202307.1.

2023-08-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Use mcrl2-next-minimal.
	* guix/pack/dezyne.scm (dezyne)[inputs]: Replace mcrl2-minimal with
	mcrl2-next-minimal.

2020-05-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: Add mcrl2-next, mcrl2-next-minimal.
	* guix/pack/mcrl2.scm: New file.

2025-05-08  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Initialize dzn_state explicitly to the first node number.
	* dzn/code.scm (code:shared-state): Return multiple values, the second
	being the initial state number.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized):
	Initialize dzn_state witht the first state number instead of 0.

2025-04-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add Camera.
	* test/all/local.mk (REGRESSION_TESTS): Add Camera.
	* test/all/Camera/META: Skip all languages except for c++.

2025-05-08  Rutger van Beusekom  <rutger@dezyne.org>

	test: Camera: Update foreign for new enum usage.
	* test/all/Camera/c++/Contrast.hh (struct Contrast): Remove old style
	::type.

2025-03-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add nested.space.system_hello.
	* test/all/nested.space.system_hello: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	javascript: Support nested namespaces.
	* dzn/code/language/javascript.scm: (javascript:module-name): Recurse to
	use deepest namespace's full name.

	scheme: Support nested namespaces.
	* dzn/code/language/scheme.scm: (scheme:module-name): Recurse to use
	deepest namespace's full name.
	* test/all/compound.space/compound.space.dzn,
	test/all/inner.space/inner.space.dzn: Make sure the module target's
	namespace is declared as the first namespace.

2025-03-25  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_nested.

2025-03-26  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: compliance: Fix shared_nested.
	* dzn/vm/compliance.scm (internal-check-compliance): Use the initial pc
	to prevent check-provides-compliance from executing an update on a pc
	with updated state.

2024-09-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_cruelworld.

2021-11-16  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add starving_philosophers.
	XXX splits?

	test: Add dining_philosophers.
	XXX splits?

2022-03-17  Paul Hoogendijk  <paul@dezyne.org>

	test: Add collateral_blocking_backdoor_bypass.
	* test/all/collateral_blocking_backdoor_bypass: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-03-18  Paul Hoogendijk  <paul@dezyne.org>

	test: Add collateral_blocking_out2.
	* test/all/collateral_blocking_out2: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2024-03-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add empty_system.
	* test/all/empty_system: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-08-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add blocking_local_state.
	* test/all/blocking_local_state: New test, copied from...
	* test/all/blocking-local-state-diagram/blocking-local-state-diagram.dzn:
	...here.  Change to symlink.
	* test/all/blocking-local-state-diagram/baseline/default.dot: Update
	accordingly.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-08-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Also read features from META.
	* test/dzn/dzn.scm (file-name->features): Factor-out from...
	(features): ...here.  Include features from META.

2024-07-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Revert "hello_injected: Remove handwritten c++ main."
	hello_injected runs check_bindings and dump_tree.

	This reverts commit 0d78e20f3356f32dfb3ec78b4e8f69dea5b4d421.

2024-03-18  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: hello_injected: Canonicalize.
	* test/all/hello_injected/hello_injected.dzn: Canonicalize.
	* test/all/hello_injected/main.c,
	test/all/hello_injected/main.cs,
	test/all/hello_injected/main.js,
	test/all/hello_injected/main.scm,
	* test/all/hello_injected/trace: Update accordingly.

2024-06-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: system_shared_choice2: Rename from system_shared.
	* test/all/system_shared: Rename to...
	* test/all/system_shared_choice2: ...this.
	* test/all/shared_choice2/shared.dzn: New symlink.
	* test/all/system_shared_choice2/baseline: Update accordingly.

	test: Add shared_choice2.
	* test/all/shared_choice2: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add system_hellocruelworld.
	* test/all/system_hellocruelworld: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add hellocruelworld_requires.
	* test/all/hellocruelworld_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add hellocruelworld.
	* test/all/hellocruelworld: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: queuefull_component1: Use ihello, ihellocruelworld.
	* test/all/queuefull_component1/ihello.dzn,
	test/all/queuefull_component1/ihellocruelworld.dzn: New symlinks.
	* test/all/queuefull_component1/queuefull_component1.dzn: Import them.
	(ihello, iworld): Remove.
	(queuefull_component1): Update accordingly.
	* test/all/queuefull_component1/baseline/simulate.err,
	test/all/queuefull_component1/baseline/simulate.out,
	test/all/queuefull_component1/baseline/verify.err,
	test/all/queuefull_component1/baseline/verify.out: Update baseline.

	test: Add ihellocruelworld.
	* test/all/ihellocruelworld: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-06-18  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_return_implicit: Rename from compliance_implicit_illegal.
	* test/all/compliance_implicit_illegal: Rename to...
	* test/all/compliance_return_implicit: ...this.
	(REGRESSION_TESTS): Remove compliance_implicit_illegal.
	* test/all/local.mk (SEMANTIC_ERROR_TESTS): Add compliance_return_implicit.

	test: compliance_return: Rename from compliance0.
	* test/all/compliance0: Rename to...
	* test/all/compliance_return: ..this; Canonicalize.
	* test/all/local.mk (FEATURE_TESTS): Remove compliance0.
	(SEMANTIC_ERROR_TESTS): Add compliance_return.

2024-05-29  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add if_return_arrow.
	The return arrow was missing when using a single if-statement.

	* test/all/if_return_arrow: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-05-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_nonstrict.
	* test/all/hello_nonstrict: New test.
	* test/all/local.mk (FEATURE_TESTS): Add it.

	test: Add ihello_nonstrict.
	* test/all/ihello_nonstrict: New test.
	* test/all/local.mk (FEATURE_TESTS): Add it.

2024-06-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: deadlock_defer_calls: Rename from defer_calls.
	* test/all/defer_calls: Rename to...
	* test/all/deadlock_defer_calls: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: queuefull_defer: Rename from defer_queuefull.
	* test/all/defer_queuefull: Rename to...
	* test/all/queuefull_defer: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: queuefull_collateral_reply: Rename from collateral_queuefull_reply.
	* test/all/collateral_queuefull_reply: Rename to...
	* test/all/queuefull_collateral_reply: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: queuefull_collateral: Rename from collateral_queuefull.
	* test/all/collateral_queuefull: Rename to...
	* test/all/queuefull_collateral: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2024-05-31  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: end_of_trail_int: Use ihello_reply_int.
	* test/all/ihello_reply_int/ihello_reply_int.dzn: New symlink.
	* test/all/end_of_trail_int/end_of_trail_int.dzn: Use it.
	(ihello_reply_int): Remove.

	test: Add ihello_reply_int.
	* test/all/ihello_reply_int: New test.  Extracted from end_of_trail_int.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-04-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add blocking_external2.

2024-04-04  Rutger van Beusekom  <rutger@dezyne.org>

	test: collateral_blocking_shell2: Adapt external behavior.
	This avoids the meaningless requires external blocking.

	* test/all/collateral_blocking_shell2/collateral_blocking_shell2.dzn
	(Adapter): New component ...
	* test/all/collateral_blocking_shell2/collateral_blocking_shell2.dzn
	(collateral_blocking_shell2): ... use here.

2024-04-04  Rutger van Beusekom  <rutger@dezyne.org>

	test: collateral_blocking_backdoor: Adapt external behavior.
	This avoids the meaningless requires external blocking.

	* test/all/collateral_blocking_backdoor/collateral_blocking_backdoor.dzn
	(adapter): New component ...
	* test/all/collateral_blocking_backdoor/collateral_blocking_backdoor.dzn
	(collateral_blocking_backdoor): .. use here.

2024-04-03  Rutger van Beusekom  <rutger@dezyne.org>

	test: Refactor collateral_blocking_shell.
	*
	test/all/collateral_blocking_shell/collateral_blocking_shell.dzn (Blocked):
	Remove redundant states and conditionals.

2024-05-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add ihello_int_1_1_reply_0.
	* test/all/ihello_int_1_1_reply_0: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-05-29  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_inevitable_choice.
	* test/all/hello_inevitable_choice: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-05-29  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add compliance_livelock_refusal.
	This is another variation on compliance_livelock; a tau loop hiding a
	compliance error.

	* test/all/compliance_refusal4: New test.
	* test/all/local.mk (SEMANTIC_ERROR_TESTS): Add it.
	(XFAIL_VERIFY): Add it.

2024-05-29  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add compliance_refusal_cruel__world.
	* test/all/compliance_refusal_cruel__world: New test.
	* test/all/local.mk (SEMANTIC_ERROR_TESTS): Add it.

	test: Add compliance_refusal_cruel_world.
	* test/all/compliance_refusal_cruel_world: New test.
	* test/all/local.mk (SEMANTIC_ERROR_TESTS): Add it.

	test: Add ihello_cruel_world.
	* test/all/ihello_cruel_world: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add compliance_refusal_world.
	* test/all/compliance_refusal_world: New test.
	* test/all/local.mk (SEMANTIC_ERROR_TESTS): Add it.

	test: Add ihello__world.
	* test/all/ihello__world: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-05-16  Rutger van Beusekom  <rutger@dezyne.org>

	test: update.sh: Ignore trailing /.

2024-05-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: hello_inevitable_illegal: Canonicalize.
	* test/all/hello_inevitable_illegal: Canonicalize.

2024-05-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_queuefull_reply: Rename from blocking_queuefull_reply; Canonicalize.
	* test/all/blocking_queuefull_reply: Rename to...
	* test/all/collateral_queuefull_reply: ...this; Canonicalize.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: collateral_queuefull: Rename from blocking_queuefull; Canonicalize.
	* test/all/blocking_queuefull: Rename to...
	* test/all/collateral_queuefull: ...this; Canonicalize.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: shell_injected_foreign: Rename from shell_injected.
	* test/all/shell_injected: Rename to...
	* test/all/shell_injected_foreign: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: compliance_single_to_multiple: Use i_world.
	* test/all/i_world/i_world.dzn: New symlink.
	* test/all/compliance_single_to_multiple/compliance_single_to_multiple.dzn:
	Import it.
	(ihello): Remove.
	(compliance_single_to_multiple): Update accordingly.
	* test/all/compliance_single_to_multiple/baseline/simulate.err,
	test/all/compliance_single_to_multiple/baseline/simulate.out,
	test/all/compliance_single_to_multiple/baseline/verify.err: Update baseline.

2024-05-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Also use quotes when string contains "<".
	* test/dzn/dzn.scm (observe): Also quote string with #\<.

	test: compliance_fork_blocking_bypass: Canonicalize.
	* test/all/compliance_fork_blocking_bypass/ihello.dzn,
	test/all/compliance_fork_blocking_bypass/ihello_i_world.dzn,
	test/all/compliance_fork_blocking_bypass/ihello_world.dzn: New symlinks.
	* test/all/compliance_fork_blocking_bypass/compliance_fork_blocking_bypass.dzn:
	Use them.
	(ihello, iworld, ibypass): Remove.
	* test/all/compliance_fork_blocking_bypass/trace: Update accordingly.

2024-05-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add ihello_i_world.
	* test/all/ihello_i_world: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-05-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Use numerical sort for traces.
	* test/dzn/dzn.scm (trace->base+number, trace<): New procedures.
	(run-code, run-simulate): Use them.

2024-05-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: hello_flush: Use i_world.
	* test/all/hello_flush/i_world.dzn: New symlink.
	* test/all/hello_flush/hello_flush.dzn: Use it.

2024-05-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: call_before_variable: Rename from parse_call_before_var.
	* test/all/parse_call_before_var: Rename to...
	* test/all/call_before_variable: ..this.
	* test/all/local.mk (PARSER_TESTS): Move from here...
	(REGRESSION_TESTS): ...to here, and update accordingly.

	test: queuefull_external: Canonicalize.
	* test/all/queuefull_external/i_world.dzn: Split off.
	* test/all/queuefull_external/queuefull_external.dzn: Import it,
	(queuefull_external): and use it.

2024-04-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	lts: Resurrect --illegals actually including <illegal>.
	This is a follow-up to commit
	    8616fcc622e781fe777c90eb4c4e09941e276b9c
	    lts: Remove duplicate <lts> data structure.

	* dzn/lts.scm (lts->traces)[illegal-node?, illegal-node->deadlock,
	illegal-livelock->deadlock]: New inner defines.
	Use them in order to enable...
	* dzn/lts.scm (generate-traces): ...this to output <illegal>s.  Adapt
	to cater for non-existing deadlock node.

2024-05-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: deadlock_state: Rename from state_deadlock.

	test: deadlock_inner_guard_shared_state: Rename from inner_guard_shared_state_deadlock.
	* test/all/inner_guard_shared_state_deadlock: Rename to...
	* test/all/deadlock_inner_guard_shared_state: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2024-05-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: range_action: Canonicalize.

	test: Add ihello_reply_0.
	* test/all/ihello_reply_0: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: defer_empty_selection: Use ihello_world.
	* test/all/defer_empty_selection/defer_empty_selection.dzn: Use
	ihello_world.dzn and format.

	test: Add illegal_garbage.

	test: implicit_illegal_garbage: Rename from illegal_garbage.
	* test/all/illegal_garbage: Rename to...
	* test/all/implicit_illegal_garbage: ...this.

	test: second_reply_blocking: Canonicalize.
	* test/all/second_reply_blocking: Canonicalize.

2024-03-11  Paul Hoogendijk  <paul@dezyne.org>

	test: Add collateral_blocking.
	* test/all/collateral_blocking/collateral_blocking.dzn,
	* test/all/collateral_blocking/META: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-05-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_system4: Canonicalize.
	* test/all/blocking_system4/hello_block_reply_bool_requires.dzn,
	test/all/blocking_system4/hello_block_reply_bool_requires2.dzn,
	test/all/blocking_system4/ihello.dzn,
	test/all/blocking_system4/ihello_reply_bool.dzn,
	test/all/blocking_system4/ihello_world.dzn: New symlinks.
	test/all/hello_block_reply_bool_requires2/hello_block_reply_bool_requires.dzn:
	New symlinks.
	* test/all/blocking_system4/blocking_system4.dzn: Use them; Canonicalize.
	* test/all/blocking_system4/trace: Update accordingly.

	test: Add hello_block_reply_bool_requires2.
	* test/all/hello_block_reply_bool_requires2: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add hello_block_reply_bool_requires.
	* test/all/hello_block_reply_bool_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: blocking_system3: Canonicalize.
	* test/all/blocking_system3/hello_block_requires.dzn,
	test/all/blocking_system3/ihello.dzn,
	test/all/blocking_system3/ihello_world.dzn: New symlinks.
	* test/all/blocking_system3/blocking_system3.dzn: Use them; Canonicalize.
	* test/all/blocking_system3/trace: Update accordingly.

2024-05-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: system_hello_choice_reply: Rename from system_nondet_reply.
	* test/all/system_nondet_reply: Rename to...
	* test/all/system_hello_choice_reply: ...this.  Use
	hello_choice_reply.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: system_hello_choice_requires: Rename from system_nondet_out.
	* test/all/system_nondet_out: Rename to...
	* test/all/system_hello_choice_requires: ...this.  Use
	hello_choice_requires.
	* test/all/local.mk (REGRESSION_TESTS): Move to...
	(SEMANTIC_TESTS): ...here, and rename.

	test: Add hello_choice_requires.
	* test/all/hello_choice_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: hello_choice3: Rename from interface_nondet2.
	* test/all/interface_nondet2: Rename to...
	* test/all/hello_choice3: ..this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: updates.sh: Cater fon non-strict? #t in META.
	* test/bin/update.sh: Only use --strict if there's no non-strict? #t in
	META.

	test: hello_choice_reply: Use ihello_reply_bool.
	* test/all/ihello_reply_bool/ihello_reply_bool.dzn: New symlink.
	* test/all/hello_choice_reply/hello_choice_reply.dzn: Use it.
	(ihello): Remove.

2024-05-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Remove hello_nondet_reply.
	This is a copy of hello_choice_reply.

	* test/all/hello_nondet_reply: Remove test.
	* test/all/local.mk (FEATURE_TESTS): Remove it.

2024-05-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: constraint_choice2: Rename from constraint_nondet2.
	* test/all/constraint_nondet2: Rename to...
	* test/all/constraint_choice2: ..this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2024-05-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_system2: Canonicalize.
	* test/all/hello_block_requires/hello_block_requires.dzn,
	test/all/hello/ihello.dzn,
	test/all/blocking_system/ihello_world.dzn: New symlinks.
	* test/all/blocking_system2/blocking_system2.dzn: Use them; Canonicalize.
	* test/all/blocking_system2/trace: Update accordingly.
	* test/all/blocking_system2/baseline/simulate.out: Update accordingly.

2024-05-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: shared_choice: Rename from shared_nondet.
	* test/all/shared_nondet: Rename to...
	* test/all/shared_choice: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: livelock_choice: Rename from livelock_nondet.
	* test/all/livelock_nondet: Rename to...
	* test/all/livelock_choice: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: ihello_optional_choice2: Rename from hello_optional_nondet.
	* test/all/hello_optional_nondet: Rename to...
	* test/all/ihello_optional_choice2: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: hello_multiple_choice: Rename from hello_multiple_nondet.
	* test/all/hello_multiple_nondet: Rename to...
	* test/all/hello_multiple_choice: ...this.

	test: Add hello_choice.
	* test/all/hello_choice/hello_choice.dzn: New file.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: ihello_optional_choice: Rename from hello_modeling_nondet.
	* test/all/hello_modeling_nondet: Rename to...
	* test/all/ihello_optional_choice: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Move it to...
	(SEMANTIC_TESTS): ...here.

	test: constraint_choice: Rename from constraint_nondet.

	test: constraint_modeling_choice: Rename from constraint_modeling_nondet.
	* test/all/constraint_modeling_nondet: Rename to...
	* test/all/constraint_modeling_choice: ..this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: blocking_choice: Rename from blocking_nondet.

	test: hello_choice2: Rename from hello_nondet.
	* test/all/hello_nondet: Rename to...
	* test/all/hello_choice2: ...this.

	test: ihello_choice: Rename from interface_nondet.
	* test/all/interface_nondet: Rename to...
	* test/all/ihello_choice: ...this.
	* test/all/local.mk (FEATURE_TESTS): Move it to...
	(SEMANTIC_TESTS): ...here.

2024-05-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_system: Canonicalize.
	* test/all/blocking_system/i_world.dzn,
	test/all/blocking_system/ihello.dzn
	test/all/blocking_system/ihello_world.dzn: New symlinks.
	* test/all/blocking_system/blocking_system.dzn: Use them; Canonicalize.
	* test/all/local.mk (REGRESSION_TESTS): Move to...
	(SEMANTIC_TESTS): ...here.

2024-05-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add i_world.
	* test/all/i_world: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-05-01  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_block_requires.
	* test/all/hello_block_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add hello_block.
	* test/all/hello_block: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: hello_cruel_block: Rename from hello_block.
	* test/all/hello_block: Rename to...
	* test/all/hello_cruel_block: ...this.

2024-04-30  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: livelock_hello: Rename from livelock_component.
	* test/all/livelock_component: Rename to...
	* test/all/livelock_hello: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Move it to...
	(SEMANTIC_ERROR_TESTS): ...here.

	test: livelock_ihello: Rename from livelock_interface0.
	* test/all/livelock_interface0: Rename to...
	* test/all/livelock_ihello: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Move it to..
	(SEMANTIC_ERROR_TESTS): ...here.

2024-04-29  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add determinism_hello_world_external.
	* test/all/determinism_hello_world_external: New test.
	* test/all/local.mk (SEMANTIC_ERROR_TESTS): Add it.

2024-04-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: hello_locations: Use --strict and --trail=TRAIL.
	* test/all/hello_locations/run: Use --strict and --trail=TRAIL.
	* test/all/hello_locations/trace: Add missing events.

	test: deadlock_hellohello: Rename from deadlock_component1.
	* test/all/deadlock_component1: Rename to...
	* test/all/deadlock_hellohello: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Move it to...
	(SEMANTIC_ERROR_TESTS): ...here.

	test: deadlock_ihellohello: Rename from deadlock_interface1.
	* test/all/deadlock_interface1: Rename to...
	* test/all/deadlock_ihellohello: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Move it to...
	(SEMANTIC_ERROR_TESTS): ...here.

	test: deadlock_hello: Rename from deadlock_component0.
	* test/all/deadlock_component0: Rename to...
	* test/all/deadlock_hello: ...this.
	* test/all/local.mk (FEATURE_TESTS): Move it to...
	(SEMANTIC_ERROR_TESTS): ...here.

	test: deadlock_ihello: Rename from deadlock_interface0.
	* test/all/deadlock_interface0: Rename to...
	* test/all/deadlock_ihello: ...this.
	* test/all/local.mk (HELLO_TESTS): Move it to...
	(SEMANTIC_ERROR_TESTS): ...here.

	test: system_helloworld_reply_true: Rename from hello_system_reply.
	* test/all/hello_system_reply: Rename to...
	* test/all/system_helloworld_reply_true: ...this.
	* test/all/local.mk (FEATURE_TESTS): Move it to...
	(SEMANTIC_TESTS): ...here.

	test: Add helloworld_reply_true_requires.
	* test/all/helloworld_reply_true_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add helloworld_reply_true.
	* test/all/helloworld_reply_true: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add ihelloworld_reply_true.
	* test/all/ihelloworld_reply_true: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add system_hello_cruelworld_requires.
	* test/all/system_hello_cruelworld_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-04-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_cruelworld_requires.
	* test/all/hello_cruelworld_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add ihello_cruelworld.
	* test/all/ihello_cruelworld: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-05-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add system_hello_world_requires.
	* test/all/system_hello_world_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add system_helloworld_requires.
	* test/all/system_helloworld_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-05-08  Rutger van Beusekom  <rutger@dezyne.org>

	test: Remove system_hello_world.
	This is (now) a duplicate of system_helloworld_requires.

	* test/all/system_hello_world: Remove.
	* test/all/local.mk (REGRESSION_TESTS): Remove it.

2024-05-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_world_external2.
	* test/all/hello_world_external2/hello_world_external2.dzn: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add illegal_external.
	* test/all/illegal_external: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-04-17  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add helloworld_external2.
	* test/all/helloworld_external2: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-04-12  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add system_hello_requires.
	* test/all/system_hello_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add hello_world_external.
	* test/all/hello_world_external: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-05-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add helloworld_external.
	* test/all/helloworld_external: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-05-08  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add compliance_hello_world.
	* test/all/compliance_hello_world: New test.
	* test/all/local.mk (SEMANTIC_ERROR_TESTS): Add it.

	test: Add ihello_cruel__world.
	* test/all/ihello_cruel__world: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add compliance_helloworld.
	* test/all/compliance_helloworld: New test.
	* test/all/local.mk (SEMANTIC_ERROR_TESTS): Add it to new variable.
	(FULL_TESTS): Add it.

	test: Add ihellocruel__world.
	* test/all/ihellocruel__world: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add compliance_reply_false.
	* test/all/compliance_reply_false: New test.
	* test/all/local.mk (SMOKE_TESTS): Add it.  Move
	compliance_provides_bool to...
	(REGRESSION_TESTS): ...here.

	test: Add ihello_reply_true.
	* test/all/ihello_reply_true: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-05-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_reply_bool_requires.
	* test/all/hello_reply_bool_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add hello_reply_bool.
	* test/all/hello_reply_bool: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add ihello_reply_bool.
	* test/all/ihello_reply_bool: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-04-09  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_world_requires.
	* test/all/hello_world_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-04-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_world.
	* test/all/hello_world: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add ihello_world.
	* test/all/ihello_world: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

2024-04-08  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add helloworld_requires.
	* test/all/helloworld_requires: New test.
	* test/all/local.mk (SEMANTIC_TESTS): Add it.

	test: Add hello_requires.

	test: Add ihello.
	* test/all/hello/ihello.dzn: New file.
	* test/all/hello/ihello.dzn: New symlink.
	* test/all/hello/hello.dzn: Import it.

	test: helloworld: Reuse ihelloworld.dzn.
	* test/all/helloworld/ihelloworld.dzn: New symlink.
	* test/all/helloworld/helloworld.dzn: Import it.
	(ihello): Remove.
	(helloworld): Update accordingly.
	* test/all/local.mk (HELLO_TESTS): Move it to ...
	(SEMANTIC_TESTS): ...here.

	test: ihelloworld: Rename from hello_interface.
	* test/all/hello_interface: Rename to...
	* test/all/ihelloworld: ...this.
	* test/all/parse-flags: Update accordingly.
	* test/all/local.mk (HELLO_TESTS): Move from here...
	(SEMANTIC_TESTS): ...to this new variable.
	(FULL_TESTS): Add it.
	(SEMANTICS_TESTS): Rename to...
	(DOC_SEMANTICS_TESTS): ...this.
	(HELLO_TESTS): Rename to...
	(FEATURE_TESTS): ...this.
	(HELLO_TESTS): New variable.

2024-03-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: bin/update.sh: Respect model for simulate.
	* test/bin/update.sh: Also use --model=model for simulate if set in
	META.

2024-03-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Remove --model from verify by default.
	* test/dzn/dzn.scm (component?): Do not use use model? fall-back when
	component is explicitly unset.
	(run-verify): Only add --model when component or model is set (and
	component is not explicitly unset).
	* test/bin/update.sh: Update accordingly.
	* test/all/parse_import_self/META: New file.
	* test/all/parse_import_both/baseline/verify.err: Remove baseline.
	test/all/parse_import_twice/baseline/verify.err: Update baseline.

2024-03-26  Paul Hoogendijk  <paul@dezyne.org>

	test: inevitable_performance: Timeout on cpu time.
	Having 'inevitable_performance' timeout on wall clock time fails under
	heavy load.

	* test/all/inevitable_performance/run: Use cpu-timeout.

2024-03-26  Paul Hoogendijk  <paul@dezyne.org>

	test: add cpu-timeout.
	Using CPU time avoids timeout problems under heavy load.

	* test/bin/cpu-timeout: New file.
	* Makefile.am (EXTRA_DIST): Register it.

2024-03-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Use long options.
	* test/dzn/dzn.scm: Use long options throughout.

2025-01-13  Paul Hoogendijk  <paul@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	test: Make test pipeline more robust.
	* test/dzn/dzn.scm (observe): Ignore exceptions on closing stdin-output
	port.

2025-02-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	wfc: Fix defer/blocking typo.
	This is a follow-up to commit
	    fd6d85c257a1f7f517fdb8eab159a2c484b50188
	    wfc: Check for language features block, defer, shared.

2025-02-18  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add function_shadow_event.
	* test/all/function_shadow_event: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	doc: Update savannah git URLs.
	* doc/dezyne.texi (Getting Started): Fix/update URL.
	(A Camera Example): Likewise.
	(The Lego Ball Sorter): Liwewise.

2025-02-13  Rutger van Beusekom  <rutger@dezyne.org>

	test: parse_import_both: Add comment after import.
	* test/all/parse_import_both/parse_import_both.dzn: Add comments.

2025-02-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: parse_import_both: Avoid 'No such model'.
	* test/all/parse_import_both/META: New file.
	* test/all/parse_import_both/baseline/verify.err: Update baseline.

2025-01-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	makreel: Fix indentation.
	* dzn/code/scmackerel/makreel.scm (ast->process): Fix indentation.

2025-01-06  Rutger van Beusekom  <rutger@dezyne.org>

	cs: Add '\n' to dollar statements.
	* dzn/code/scmackerel/cs.scm (root->statements): Here.

	test: LegoBallSorter: Verification fixes.
	* test/all/LegoBallSorter/ITransfer.dzn (ITransfer): Move assignments
	after communication to fix non-determinism.
	* test/all/LegoBallSorter/Brick3.dzn: Add missing include.
	* test/all/LegoBallSorter/Conveyor.dzn (Conveyor): Remove
	sensor.released trigger to fix unreachable code error.

2024-12-16  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add dollar_import.
	* test/all/dollar_import: Noew test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	peg: Ignore anything between dollars.
	* dzn/parse/peg.scm (peg:imports): Comment, add dollars parsing and
	refactor.

2024-12-09  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_data_no_state.
	* test/all/defer_data_no_state/defer_data_no_state.dzn,
	* test/all/local.mk: Add it.

	code: Fix defer_data_no_state.
	* dzn/code.scm (code:defer-condition): Filter out data members.

2024-11-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add complex_arguments6.
	* test/all/complex_arguments6: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

	normalize: Handle calls with more than two arguments.
	* dzn/ast/normalize.scm: (add-temporary?): Select the first expression
	argument to be replaced.

2024-11-05  Rutger van Beusekom  <rutger@dezyne.org>

	test: unreachable_multiple_triggers: Add in-event.
	* test/all/unreachable_multiple_triggers/unreachable_multiple_triggers.dzn (ihello):
	Add bye to report unreachable, add never to remove unreachable
	distraction from interface.
	* test/all/unreachable_multiple_triggers/baseline/verify.err: Update accordingly.

	makreel: Support list of on triggers in unreachable check.
	* dzn/code/language/makreel.scm: Add tags after splitting triggers.
	* dzn/ast/normalize.scm (tag-imperative-blocks): Make
	<declarative-compound> aware.

2024-10-30  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_function_shared.
	* test/all/hello_function_shared: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

	makreel: Fix shared state deadlock using interface function.
	* dzn/code/language/makreel.scm (makreel:add-state-placeholder): Add
	<state> placeholder normalization for out events in functions.

2022-03-07  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add collateral_cancel_guarantee.
	* test/all/collateral_cancel_guarantee: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2022-02-15  Paul Hoogendijk  <paul@dezyne.org>

	test: Add collateral_blocking_out.
	* test/all/collateral_blocking_out: New test.
	* test/all/local.mk (REGRESSION_TESTS): Register it.

2024-10-14  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Check for collateral blocking to update port with <flush>.
	*
	dzn/code/scmackerel/c++.scm (component-model->sm:statements-unmemoized):
	Symmetrically initialize port meta pointers by default to the port being
	instantiated; this removes the nullptr convention in the generated main.
	* runtime/c++/dzn/pump.hh (struct pump): Rename blocked_p to
	port_blocked_p; add blocked_p to check pending collateral blocking.
	* runtime/c++/dzn/runtime.hh (=): Extend port_update condition to
	incorporate broken_cancel_guarantee.
	* runtime/c++/pump.cc (blocked_p): Forward new function ...
	(pump::blocked_p): ... implement in pump.

	test: blocking_system_diamond: Remove redundant blocking.
	* test/all/blocking_system_diamond/blocking_system_diamond.dzn (block):
	Replace with...
	(proxy): ...this new component.
	(resource, blocking_system_diamond): Update accordingly.

2024-10-11  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Exchange port_update in both directions.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized):
	Initialize provides other_port_update with requires port_update and vice
	versa.

2025-08-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: parse_void_variable: Register.
	This is a follow-up to commit
	    b007c8a35dfdbbb59b3f138363ff976d3676183f
	    test: Add parse_void_variable.

	* test/all/local.mk (PARSER_TESTS): Register parse_void_variable.

2025-08-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: parse_void_parameter: Register.
	This is a follow-up to commit
	    beef59ba7eeaa8d4af24986988a8d0138bfaedd8
	    test: Add parse_void_parameter.

	* test/all/local.mk (PARSER_TESTS): Register parse_void_parameter.

2024-09-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Whitespace fixes.
	* doc/dezyne.texi (Integrating C++ Code): Align braces, Use space before
	paretheses.
	(Thread-safe Shell): Likewise.

2024-09-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: Bump to f977cb2b609f7122db2cf026cac5ab9d6d44a206.
	* guix.scm: Update to f977cb2b609f7122db2cf026cac5ab9d6d44a206.
	* guix/pack/dezyne.scm (dezyne)[arguments]: Use
	%default-gnu-imported-modules instead of %gnu-build-system-modules.

2024-09-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: Remove patch clutter.
	This is a follow-up to commit
	    41bb92634e1404172dbeac34f3800af04963cc9d
	    guix: Cater for rc tarballs.

	* guix/pack/dezyne.scm.orig: Remove.

2024-09-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Resurrect build.
	This avoids test failures:
	     +guile: warning: failed to install locale

	* gnu/packages/dezyne.scm (dezyne)[inputs]: Add libc-utf8-locales-for-target.

	Change-Id: I2da63e128e8f990a409b36ffaa38e56029740292

2025-07-16  Ludovic Courtès  <ludo@gnu.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>.

	doc: Describe policies.
	Sane policies formalized, and kindly taken from GNU Guix.

	* doc/dezyne.texi: (Making Decisions, Commit Access, Managing Patches
	and Branches, Reviewing the Work of Others): New sections.

2025-07-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Add MAINTAINERS.
	* MAINTAINERS: New file.

2024-09-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.18.3.
	* guix/pack/dezyne.scm (dezyne): Update to 2.18.3.

2024-05-31  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.18.3 since 2.18.2): New section.

2024-09-03  Rutger van Beusekom  <rutger@dezyne.org>

	test: collateral_blocking_bridges: Simplify.
	* test/all/collateral_blocking_bridges/collateral_blocking_bridges.dzn
	(blocking_top,blocking_middle,blocking_bottom): Remove redundant
	blocking port annotation.
	(top_proxy): Remove redundant component.
	(blocker): Remove redundant blocking and defer.
	* test/all/collateral_blocking_bridges/main.cc: (main): Replace initial
	sleep with a barrier like promise/future.  Remove <defer>s and sleeps.
	* test/all/collateral_blocking_bridges/main.cs (Main): Likewise.
	* test/all/collateral_blocking_bridges/trace,
	test/all/collateral_blocking_bridges/trace.1,
	test/all/collateral_blocking_bridges/trace.2: Remove <defer>s.

2024-09-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Wait longer in C# hanwritten mains.
	This gives better chances (yuck) of passing under load.

	* test/all/collateral_blocking_reorder_parallel/main.cs (Main): Double
	wait times.
	* test/all/collateral_blocking_bridges/main.cs (class main): Likewise.
	* test/all/collateral_blocking_bridges/META (timeout): New field,
	doubling the timeout.
	* test/all/collateral_blocking_reorder_parallel/META (timeout): Likewise.

2024-08-29  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Fix assert for certain compilers.
	Reported by Perry van Wesel <perry.van.wesel@thermofisher.com>.

	* runtime/c++/thread-pool.cc (pool): Replace == nullptr with false &&;

2024-08-21  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_defer2.
	* test/all/shared_defer2: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-08-20  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Fix shared variable scoping for defer.
	* dzn/code/scmackerel/makreel.scm (ast->process): Decouple communication
	of shared state, defer and flush.

2024-08-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_defer: Disable C, C++, C#, and Scheme.
	blocking_defer fails verification and is set to XFAIL_VERIFY and used
	pass in C, C++, and Scheme.  Traces have changed and now C, C++ and
	Scheme also fail.

	* test/all/blocking_defer/META: New file.

2024-08-20  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Replace foreign by not native.
	* dzn/code/scmackerel/c++.scm (component-model->sm:statements-unmemoized):
	Make generated components be native leading to everything else becoming not
	native.
	* runtime/c++/dzn/runtime.hh (struct state, struct runtime, =),
	* runtime/c++/runtime.cc (runtime::native): Rename foreign to native.

2024-08-16  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Support typed (out) parameters for valued events.

2024-08-14  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add foreign_trivial_proxied.
	* test/all/foreign_trivial_proxied: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	runtime: c++: Fix foreign_trivial_{integration,proxied}.
	* runtime/c++/dzn/runtime.hh (struct event::operator =): Move flush
	condition...
	* runtime/c++/runtime.cc (runtime::flush): ...here.

2024-08-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: foreign_optional: Disable C++.
	This tests now falls outside of the new shared state semantics.

	* test/all/foreign_optional/META: Add "c++" to skip.

2024-08-15  Rutger van Beusekom  <rutger@dezyne.org>

	test: [system_]foreign_only_flush: Prepare for proxied fix.
	* test/all/foreign_only_flush/foreign.hh (foreign::port_hello): Cater
	for proxied fix.
	* test/all/foreign_only_flush/main.cc (event_map): Set require.component
	to nullptr.
	* test/all/foreign_only_flush/trace: Update accordingly.
	* test/all/system_foreign_only_flush/trace: Remove.
	* test/all/foreign_only_flush/trace: New symlink.

2024-08-13  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add foreign_trivial_integration.
	* test/all/foreign_trivial_integration: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	runtime: c++: Fix trivial foreign integration.
	* runtime/c++/dzn/runtime.hh (struct event::operator =): Make trigger
	flush conditional on the originating activity or defer.

	test: Add compliance_fork_lookup.
	* test/all/compliance_fork_lookup: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	ast: Make ast:modeling? robust against name lookup failure.
	* dzn/ast.scm (ast:modeling?): Handle .event returning #f.

2024-08-12  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_foreign.
	* test/all/defer_foreign: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	runtime: c++: Fix foreign defer.
	* runtime/c++/dzn/runtime.hh (struct event::=): Strengthen foreign flush
	condition with not handling.

2023-11-15  Rutger van Beusekom  <rutger@dezyne.org>

	test: hello_constraint: Extend with an out event.
	* test/all/hello_constraint/hello_constraint.dzn (ihello,
	hello_constraint): Add world.

2024-08-07  Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Avoid extra state printing for <defer> with --state.
	* dzn/vm/report.scm (display-trace): Ignore defer as arrow for reporting
	state.

2024-08-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add determinism_deadlock.
	* test/all/determinism_deadlock: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: deadlock_interface_determinism: Rename from determinism_deadlock.
	* test/all/determinism_deadlock: Rename to...
	* test/all/deadlock_interface_determinism: ..this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2024-08-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update SCMackerel requirement.
	* README (Requirements): Bump scmackerel to 0.5.3.
	* doc/dezyne.texi (Requirements): Likewise.

	guix: dezyne: Move propagated packages to inputs.
	* guix/pack/dezyne.scm (dezyne)[propagated]: Move into...
	[inputs]: ...this.

	guix: scmackerel: Use version from upstream.
	* guix/pack/scmackerel.scm (scmackerel): Remove; export (gnu packages
	scmackerel) instead.

	guix: Bump to 918b7d102c2051c3d6c6ba54c8d265affec5282c.
	* guix.scm: Bump to 918b7d102c2051c3d6c6ba54c8d265affec5282c.

2024-07-31  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: huge_constraint: Set timeout=600.
	* test/all/huge_constraint/META: New file.

	test: Support overriding --timeout in META.
	* test/bin/run.in (meta-timeout): New procedure.
	(main): Use it to override timeout from META.

	test: Refactor get-meta.
	* test/dzn/dzn.scm (get-meta-option): New procedure.
	(get-meta-flag, queue-size queue-size-defer, queue-size-external,
	code-options, component?, model?, trace-format,
	non-strict?, simulate-flags): Use it.
	(get-meta-entry): New procedure.
	(component-unset?): Use it.

2024-07-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add ihello_optional_choice4.
	Suggested by logocp via IRC Joran Jessurun <joran@ajmail.nl>.

	* test/all/ihello_optional_choice4: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-07-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid interface non-determinism when trails differ.
	* dzn/vm/run.scm (run-to-completion-unmemoized): Filter traces by trail
	while cdr'ing through all traces.

2024-06-28  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_requires_guard.
	* test/all/shared_requires_guard: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-06-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add determinism_shared2.
	* test/all/determinism_shared2: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-06-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Find interface non-determinism short of choice point.
	This also fixes the case where the first two clauses/traces are
	deterministic.

	* dzn/vm/run.scm (run-to-completion-unmemoized)
	[interface-non-deterministic?]: Check all traces and split-off
	posponed-match variant to...  [interface-postponed-non-deterministic?]:
	...this new inner define.  Use them to also check non-determinism in
	the absence of postponed-match?
	* dzn/vm/run.scm (run-interface): Do not prune <determinism-error>s.
	* dzn/simulate.scm (end-report): Run deadlock check when
	<determinism-error>, to let <deadlock> error prevail.
	(check-deadlock): Overwrite AST for
	<determinism-error>.
	* test/all/determinism_interface/baseline/simulate.err,
	test/all/determinism_interface/baseline/simulate.out,
	test/all/determinism_shared/baseline/simulate.err,
	test/all/determinism_shared/baseline/simulate.out: Update baselines.

2024-05-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: determinism_shared: Rename from shared_determinism.
	* test/all/shared_determinism: Rename to...
	* test/all/determinism_shared: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2024-06-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add ihello_optional_choice3.
	Suggested by logocp via IRC Joran Jessurun <joran@ajmail.nl>.

	* test/all/ihello_optional_choice3: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-06-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid interface non-determinism when trails differ.
	* dzn/vm/run.scm (run-to-completion-unmemoized): Fix typo/thinko:
	Restrict to matching set of trails.  This will miss non-determinism with
	more than two traces, though.

2024-07-05  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_guarded_trailing_assign.
	* test/all/shared_guarded_trailing_assign: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-06-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_defer_trailing_assign.
	* test/all/shared_defer_trailing_assign: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add shared_trailing_assign.
	* test/all/shared_trailing_assign: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-06-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Cater for multiple provides out events with state updates.
	* dzn/vm/compliance.scm (update-shared-state): Use RTC-PC for
	port-trace; when defer use TRACE's initial PC.

	vm: Fix rtc-pc.
	* dzn/vm/util.scm (rtc-pc): Fix typo in apparently unused procedure.

2024-08-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c++: runtime: Use scoped_handling.
	* runtime/c++/dzn/runtime.hh (scoped_handling): New struct.
	(struct event::=): Use it.

2024-08-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add system_foreign_only.
	* test/all/system_foreign_only: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-08-02  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add foreign_only.
	* test/all/foreign_only: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: [system_]foreign_only_flush: Rename from [system_]foreign_only.
	* test/all/foreign_only: Rename to...
	* test/all/foreign_only_flush: ..this.
	* test/all/system_foreign_only: Rename to ...
	* test/all/system_foreign_only_flush: ..this.
	* test/all/system_foreign_only_flush/META,
	* test/all/system_foreign_only_flush/foreign.hh,
	test/all/system_foreign_only_flush/trace: Update symlink.
	* test/all/system_foreign_only_flush/foreign_only.dzn: Remove.  Replace by
	* test/all/system_foreign_only_flush/foreign_only_flush.dzn: ...this new
	symlink.

2024-07-25  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	Support shared state trailing assign on flush.
	* dzn/verify/pipeline.scm (in-out:aut->aut-weak-trace,
	in-out:lts-hide-internal-labels): Remove redundant flush hiding.
	* dzn/verify/constraint.scm (lts->makreel): Ignore flush as compliant
	event in constraint LTS.
	* dzn/code/scmackerel/makreel.scm (ast->process <bevahior>): Pass
	interface state to behavior process after defer_qout.
	(interface-reorder-processes): Remove flush hiding.
	(semantics-async): Communicate trailing assignment after flush.
	(provides-constraint-processes, constraint-processes): Comm, allow,
	rename flush between component process and provides contraint process.
	* dzn/code/language/makreel.scm (makreel:add-state-placeholder): Remove
	modelling trigger exception.
	* dzn/code.scm (flush-regexp, code:shared): Recognize flush labels when
	communicating shared state.

	* dzn/ast/equal.scm (ast:port-eq?): New method.
	* dzn/code/goops.scm (ast:equal?): New method.
	* dzn/code.scm (trigger->port-pairs): New method, factor-out from...
	(code:return-values): ...here.
	(code:blocking-return-values),
	code:requires-in-void-returns): New methods.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized):
	Exchange port update functors.
	(component-model->sm:statements-unmemoized): Remove setting
	performs_flush in component constructor (also see runtime.hh performs_flush
	declaration).

	* runtime/c++/dzn/runtime.hh (struct runtime)[defer, port_update,
	coroutine_id2activity]: New members.
	(runtime::activity, runtime::deferred_flush): New method.
	(runtime::flush): Add sync_p parameter.
	(runtime::queue_p, runtime::enqueue): Move to operator =.
	(struct scoped_activity): New struct.
	(defer, operator =): Use it; coordinate execution, queueing,
	flushing and updating ports using <flush> label (formerly queue_p and
	enqueue).
	* runtime/c++/dzn/container.hh (container): Update accordingly.
	* runtime/c++/runtime.cc (runtime::performs_flush): Remove.
	(runtime::queue_p): Update accordingly.
	* runtime/c++/pump.cc (pump::block): Add sync_p value to flush.

	* test/all/foreign_only/foreign.hh (foreign::foreign): Set runtime.flush.
	* test/all/foreign_only/main.cc (event_map): Add flush parameter.  Use
	it to set runtime.flush for container and nullptr.
	(main): Update accordingly.
	* test/all/compliance_fork_blocking_bypass/META,
	test/all/compliance_fork_provides/META,
	test/all/compliance_fork_requires/META: Skip lts (postpone simulator to
	2.19).
	* test/all/constraint_modeling_nondet/META,
	test/all/external_multiple_out2/META,
	test/all/external_multiple_out2/trace,
	test/all/external_multiple_out3/META,
	test/all/external_multiple_out3/trace:
	test/all/foreign_only/META,
	test/all/foreign_only/foreign.hh,
	test/all/foreign_only/main.cc: Add flush external.

2024-08-02  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: templates: Cleanup unused macros.
	* dzn/templates/code.scm (main-event-map-out,
	main-event-map-void-provides-in, main-event-map-typed-provides-in,
	main-event-map-void-requires-in, main-event-map-typed-in,
	main-event-map-match-return): Remove.

2024-08-01  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Refactor and format.
	* runtime/c++/dzn/runtime.hh (component_to_string): Format to 80
	columns.
	(hash): Rename parameters meaningfully; Add debug trace.
	(event::operator =): Format.

2024-07-25  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Redesign container without blocking.
	Remove the use of port_block from the generated main actions, except for
	"blocking" ports.  Instead interleave action call [, callback] and
	return by reading from STDIN and executing each label.

	* runtime/c++/dzn/container.hh (container): Remove thread primitives;
	formatting,
	(perform): Move reading from STDIN ...
	(operator ()): ... to here and make asynchronous by pushing it onto the
	pump,
	(trail_expect): Remove redundant method,
	(match): Handle additional error case.
	* dzn/code/scmackerel/c++.scm (main-event-map): Remove port_block and
	port_release ...
	(main-connect-ports): ... replace with synchronous perform invocations
	to meet match expectation.
	* test/all/foreign_only/main.cc (connect_ports): Add perform to
	"handwritten" main.

2024-06-21  Rutger van Beusekom  <rutger@dezyne.org>

	test: multiple_provides: Refactor.
	* test/all/multiple_provides/multiple_provides.dzn
	(multiple_provides): Remove redundant direction, use guards instead of
	`if'.

2024-06-20  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Document the thread pool destructor pre-condition.
	* runtime/c++/thread-pool.cc (pool): Add an assert with explanation.

2024-06-24  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add cxx_enum_to_string.
	* test/all/cxx_enum_to_string: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	c++: Generate to_string and to_enum for component private enums.
	* dzn/code/scmackerel/c++.scm (model->header-statements,
	model->statements): Add c++:enum->statements for enums from the
	component behavior.

2024-06-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	makreel: Sort lists of events.
	This is a follow-up to commit
	    ec6c94b92192863319cedbc2ebf747f499a37c54
	    verify: Replace constraint_any with non_compliance action.

	* dzn/code/scmackerel/makreel.scm (component-assembly-processes): Sort
	events lists.

2024-06-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add defer_poll.
	* test/all/defer_poll: New test.

	ast: Disregard function <call>s in <defer> for recursion.
	* dzn/ast.scm (ast:function* <function>): Only include calls that are
	not deferred.

2024-06-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_void_variable.
	* test/all/parse_void_variable: New test.

	test: Add parse_void_parameter.
	* test/all/parse_void_parameter: New test.

2024-06-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	wfc: Add check for parameter and variable to be of non-<void> type.
	* dzn/ast/wfc.scm (wfc <variable>): Remove dead, outdated copy.
	(check-non-void): New procedure.
	(wfc <formal>, wfc <variable>): Use it.

	ast: Handle default-vailue for <void> type.
	* dzn/ast.scm (ast:values <variable>): Change to...
	* dzn/ast.scm (ast:values <variable> <top>): ...this.
	(ast:values <variable>): New specialization.
	(ast:default-value): Use it to support <void>.
	* dzn/code/scmackerel/makreel.scm (makreel:type->string): Handle <void>.

2024-05-31  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add end_of_trail_int.
	* test/all/end_of_trail_int: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-05-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Cater for integer choice labels.

2024-05-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_return_void_expression.
	Suggested by Michaël van de Ven <michael.van.de.ven@thermofisher.com>
	via IRC.

	* test/all/parse_return_void_expression: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2024-05-30  Janneke Nieuwenhuizen  <janneke@gnu.org>

	wfc: Add check for return void-expressions to be literal.
	* dzn/ast/wfc.scm (wfc <return>): Check that a void return expression is
	a literal.

2024-05-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Use only positive matching in .gitignore.
	* .gitignore: Remove /build-aux/* rule; add specific file-names to
	ignore.  Use ** matching for some test log output.

2024-05-07  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add parse_reply_void_expression.
	* test/all/parse_reply_void_expression: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

	wfc: Add check for reply void-expressions to be literal.
	* dzn/ast/wfc.scm (wfc <reply>): Check that a void reply expression is
	a literal.

2024-05-21  Rutger van Beusekom  <rutger@dezyne.org>

	misc: Add (bi-)conditional statement = (bi-)implication.
	* dzn/misc.scm (->): Add implication.
	(<->): Add bi-implication.

2024-08-02  Janneke Nieuwenhuizen  <janneke@gnu.org>

	cs: Resurrect defer.
	This is a follow-up to commit
	    2dfe3025b0ecd0abe18a2cc007d19b717ad83390
	    c++: Avoid shadowing in nested defer c++11 capture workaround.

	* dzn/code.scm (code:capture-name): Restore interface.
	* dzn/code/language/c++.scm (c++:capture-name): New method; use it for
	enhanced name.
	* dzn/code/scmackerel/c++.scm (ast->code <defer>): Update accordingly.

2024-07-23  Paul Hoogendijk  <paul@dezyne.org>

	test: system_bool_enum: Avoid shared state.
	* test/all/system_bool_enum/system_bool_enum.dzn: Use local enum.
	* test/all/semantics/baseline/semantics.org: Update baseline.

2024-05-31  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: hello_void: Comment-out unspported non-literal void reply expressions.
	This is a follow-up to commit
	    8af19ccd478dc32de95444172b3046c59f695c5c
	    test: Add hello_void.

	* test/all/hello_void/hello_void.dzn (ihello)[hello4, hello5]:
	Comment-out.
	* test/all/hello_void/hello_void.dzn (hello_void)[h.hello4, h.hello5]:
	Likewise.

2024-05-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Fix tree-find.
	This is a follow-up to commit
	    5ae1aa4295c9844a95b98b38e370c0149f565a10
	    Change shared-state semantics to update after provides out event.

	* dzn/ast/util.scm (tree-find): Search all children, instead of only
	<string>, <number>, and <boolean>.

2024-09-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: shell_injected: Skip c.
	This is a follow-up to commit
	    49cd4ada05f8eb43b51992a4f84d9ada004c67ab
	    test: shell_injected: Fix verification.

	which was an incomplete rewrite, breaking support for other languages.

	* test/all/shell_injected/META (skip): Add "c" to "skip".

2024-07-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: ihello_mock: Skip non-c++ languages.
	This is a follow-up to commit
	    280f58dd4e6c3d7adab43fbc49f21e63d3656b4a
	    test: Add ihello_mock.

	* test/all/ihello_mock/META: Skip c, cs, javascript, scheme.

2024-07-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: code-json: Require bash.
	This is a follow-up to commit
	    1662803a0434e98ff751af52e85f0c344e1f8569
	    test: Add code-json.

	* test/all/code-json/run: Change shebang to use bash.

2024-05-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Complete .mailmap.
	* .mailmap: Add duplicate adresses for Rutger, Paul, Johri, Henk, and Maarten.

2024-04-30  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.18.2.
	* guix/pack/dezyne.scm (dezyne): Update to 2.18.2.

2024-03-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.18.2 since 2.18.1): New section.

2024-03-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `HACKING'.
	* HACKING (Regression test): Add meme to check all external tests.

2024-03-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	(Release 2.19): Mention wip-sequential, wip-serialize, wip-return, and
	sm:tag problem.

2024-04-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Revert "Generate 'version.texi' reproducibly."
	Using `build-aux/mdate-from-git.scm' makes this no longer necessary.

	This reverts commit 7d875813fffe1da9226c2cdb0dfc96a1ce81a5ac.

2024-04-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Update reproducible tarball with insights from Guix.
	* Makefile.am (auto-clean): Also remove INSTALL and '.am*'.
	(GZIP_ENV): Add --best and use `override.'
	(am__tar): Use `override'.
	(DIST_CONFIGURE_FLAGS): New variable.
	auto-clean: Use it on ./configure.
	Add a toplevel check to ensure that Autotools cache is up to date.

2024-04-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Support running `make dist' from tarball.
	* configure.ac (AM_INIT_AUTOMAKE): Avoid some portability warnings.
	(in_git_p): New conditional.
	* Makefile.am (dist): Only depend on auto-clean when true.
	(dist-hook): Use it to only depend on gen-ChangeLog,
	gen-tarball-manifest when true.
	(gen-tarball-version, gen-tarball-manifest): Split-off
	from...
	(gen-ChangeLog): ...this.

2024-04-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Generate doc/version.texi using `mdate-from-git.scm'.
	This replaces Automake's `build-aux/mdate-sh' with our own
	`build-aux/mdate-from-git.scm' to use reproducible timestamps from Git
	instead.

	* build-aux/mdate-from-git.scm: New script.
	* autogen.sh: Use it to replace build-aux/mdate-sh.

2024-04-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Remove gnulib-generated `INSTALL' from Git.
	Note: This requires running

	    ./autogen.sh

	* INSTALL: Remove.
	* .gitignore: Add it.
	* Makefile.am (auto-clean): Remove it.

2024-04-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Remove needless override warnings.
	* Makefile.am ($(srcdir)/doc/version.texi, $(srcdir)/doc/stamp-vti):
	Remove override target, `override' only works with variables.

2024-04-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add code-json.
	* test/all/code-json: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2024-04-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	wfc: Allow json for all language features.
	* dzn/ast/wfc.scm (feature-supported?): Never generate an error for
	JSON.

2024-04-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Fix memoization bug in run-to-completion.

2024-04-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	explore: Enable blocked compliance check for systems too.
	* dzn/explore.scm (pc->rtc-lts): Remove system-exception for blocked
	compliance check.

2024-03-14  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add collateral_blocking_shared_reply.
	* test/all/collateral_blocking_shared_reply/collateral_blocking_shared_reply.dzn:
	New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-03-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_determinism_optional: Rename from determinism_optional.
	* test/all/determinism_optional: Rename to...
	* test/all/compliance_determinism_optional: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2024-03-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Revert "graph: Implicit interface constraints."
	With the dropping of constraint_any there's no use for this anymore.

	This reverts commit 5508158e963d5cb4a6c1d717f096462d74dba404.

2024-03-15  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>.

	verify: Replace constraint_any with non_compliance action.
	The introduction of constraint_any to support behavior out side of its
	provides interface(s) compliance has lead to adverse verification
	performance for certain models.

	* dzn/explore.scm (lts): Remove disabling of %compliance-check?.

	* dzn/code/scmackerel/makreel.scm (%compliant-action): Add compliance
	event with port parameter.
	(component-processes): New processes:
	component-compliant, component-compliant-parallel,
	component-compliant-comm, component-compliant-allow,
	component-compliant-rename to constrain undesirable interleaving
	with the compliance and non_compliance actions.
	(interface-constraint-processes):
	Remove constraint_any process ...
	* dzn/verify/constraint.scm (lts->makreel): ... and replace with
	Non_Compliance to preserve the ltsconvert compliance check,
	(print-tree): Add parameter trigger-p?
	(lts->makreel): Use parameter to conditionally add compliance
	synchronization.

	* test/all/compliance_blocking_out/baseline/verify.err,
	test/all/compliance_reply_illegal/baseline/verify.err,
	test/all/compliance_reply_illegal/baseline/verify.out,
	test/all/deadlock_blocking_compliance/baseline/verify.err,
	test/all/deadlock_blocking_compliance/baseline/verify.out,
	test/all/determinism_optional/baseline/verify.err,
	test/all/determinism_optional/baseline/verify.out: Update baselines
	correspondingly.
	* test/all/local.mk (XFAIL_LTS): New variable.
	(XFAIL_TESTS): Add it.

2024-04-11  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Rename component-* processes by adding "assembly".
	* dzn/code/scmackerel/makreel.scm (component-processes): Rename to
	component-assembly-processes.

2024-03-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Remove -D,--no-non-compliance option.
	This option becomes obsolete with the constraint_any rewrite.

	* dzn/commands/code.scm (parse-opts): Remove -D,--no-non-compliance.
	* dzn/commands/traces.scm (parse-opts): Likewise.
	* dzn/commands/verify.scm (parse-opts): Likewise.
	* dzn/verify/constraint.scm (lts->makreel): Remove it.
	* doc/dezyne.texi (Invoking dzn code): Remove it.
	(Invoking dzn traces): Likewise.
	(Invoking dzn verify): Likewise.

2024-03-27  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Omit fork compliance for explore.
	* dzn/vm/compliance.scm (check-provides-compliance)
	[check-provides-fork-and-zip]: Add not %explorinng? guards.

2024-04-02  Janneke Nieuwenhuizen  <janneke@gnu.org>

	explore: Add memoizing to follow-blocked.
	* dzn/explore.scm (pc->rtc-lts)[follow-blocked-unmemoized]: Factored-out
	from...
	[blocked-prefix]: ...here.
	[follow-blocked]: New memoizing variant.

2024-03-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	explore: Use compliance result trace for blocking.
	* dzn/explore.scm (pc->rtc-lts)[blocked-prefix]: Rewrite to follow trace
	from the LTS.
	[check-compliance-blocked]: Instead of adding a new PC on top of a
	compliance trace, drop blocking prefix from the compliance trace.
	[run-label]: Also use blocked compliance check when original pc is
	blocked.

2024-03-31  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Do not update port state after trigger-only trace.
	* test/all/illegal_blocking_race/baseline/simulate.out,
	test/all/match_blocking_race/baseline/simulate.out: Update baseline.

2024-04-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	explore: Cleanups.
	* dzn/explore.scm (pc->rtc-lts)[run-label]: Use explicit names.

2024-03-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Show full port trails with their state with --debug.
	* dzn/vm/compliance.scm (check-provides-compliance): Update port trail
	debugging.

	vm: Add marker for ext-q in pc->string.
	* dzn/vm/util.scm (pc->string): Add "ext-q" prefix.

2024-04-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	explore: Use "<defer>" rather than 'defer in trail.
	* dzn/explore.scm (run-to-completion**): Run "<defer>" intead of 'defer
	event.

	vm: Fix typos.
	* dzn/vm/run.scm (block-on-port): Fix typos.

	vm: Remove code duplication in rtc?
	* dzn/vm/goops.scm (rtc? <list>): Use rtc? on <program-counter> instead
	of duplicating the implementation.

	makreel: Remove redundant optargs.
	* dzn/code/language/makreel.scm (makreel:add-action-reply): Remove `*'.
	[add-action-reply]: Likewise on inner define.

	code: Remove duplication from <action-reply>.
	* dzn/code/goops.scm (<action-reply>)[port.name,event.name]: Remove
	fields.
	(.port <action-reply>, .event <action-reply>): Update accordingly.
	(.port.name <action-reply>, (.event.name <action-reply>): New
	specializations.

2024-03-31  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Display command-line usable commands for ltscompare.
	* test/dzn/dzn.scm (run-lts): Upon failure, give a somewhat helpful
	instruction.

2024-03-30  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Remove compliance_system_hello_world.
	The trace was wrong, but this is a compliant model.

	* test/all/compliance_system_hello_world: Remove test.
	* test/all/local.mk (REGRESSION_TESTS): Remove it.

2024-03-30  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Truncate blocked port-traces for state update.

2024-03-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	explore: Avoid running defer, external unnecessarily.
	* dzn/explore.scm (pc->rtc-lts): Only add synthetic events `defer' and
	`external' when the feature is present in the model.

2024-03-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	explore: Introduce synthesic flush event.
	This fixes the blocking_annotation_defer LTS.

	* dzn/explore.scm (pc->rtc-lts): Add `flush' event
	(run-to-completion**): Handle it.
	* test/all/blocking-local-state-diagram/baseline/default.dot,
	test/all/state-diagram/baseline/default.dot: Update baseline.

2024-03-27  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add compliance_fork_requires2.
	* test/all/compliance_fork_requires2: New test
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-03-28  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Fix non-compliance case for multiple provides.
	* dzn/code/scmackerel/makreel.scm (constraint-processes): Allow the
	non-compliance action to the parallel composition of the provides ports
	constraining processes.

2024-03-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Truncate non-compliant trace at offending event.
	* dzn/vm/compliance.scm (check-provides-compliance)
	[truncate-to-observable]: New inner define.  Use it to truncate the sut trail.
	* test/all/compliance_blocking_function/baseline/simulate.out,
	test/all/compliance_failures_blocking_race/baseline/simulate.out,
	test/all/compliance_nonsynchronous_sync/baseline/simulate.out,
	test/all/compliance_provides_out/baseline/simulate.out,
	test/all/compliance_single_to_multiple/baseline/simulate.out,
	test/all/compliance_sync_action/baseline/simulate.out: Update baselines;
	remove component return.

2024-03-27  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Prioritize illegal over non-compliance.

2024-03-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add unstable tests to TESTS, and skip executing them.
	Adding, but skipping, unstable tests makes the clumsy

	    grep -Ev 'illegal_external_nonsynchronous|livelock_synchronous_illegal|queuefull_external_sync'

	meme redundant.

	* test/all/illegal_external_nonsynchronous/run,
	test/all/livelock_synchronous_illegal/run,
	test/all/queuefull_external_sync/run: New trivial script to skip the
	test.
	* test/all/local.mk (FULL_TESTS): Add $(UNSTABLE_TESTS).

2024-03-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: run: Allow skipping tests by returning actual exit code.
	* test/bin/run.in (main): Return status / 256 instead of "not zero".

2024-03-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Avoid update-state crash.
	* dzn/vm/run.scm (extend-trace): Do not run update-state when %sut is a
	port.

2024-03-27  Rutger van Beusekom  <rutger@dezyne.org>

	vm/util: Prioritize q-trigger over other triggers.

2024-03-25  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Avoid crash in completely handwritten components.
	* runtime/c++/runtime.cc (runtime::skip_block,
	runtime::reset_skip_block): Replace .at with operator [].

2024-03-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Allow `;' as event separator.
	The mCRL2 tools use `;' to separate events, so accepting that is convenient.

	* dzn/vm/util.scm (string->trail): Also cater for `;'-separated trail.

2024-03-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Run ltscompare from toplevel.
	Now that -eweak-trace does not produce a CounterExample.txt anymore in
	the CWD, we can run ltscompare at toplevel so that the command by run
	is easier to cut and paste.

	* test/dzn/dzn.scm (run-lts): Remove with-directory-excursion.

2024-03-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: report: Do not modify ASTs.
	* dzn/vm/report.scm (pc->event <trigger-return>): Do not modify ast.
	(pc->component-event <trigger-return>): Likewise.
	(pc->arrow <trigger-return>): Likewise.

2024-03-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: c++: Use -Wshadow for code.
	* test/lib/build.c++.make (WARN_FLAGS): Add -Wshadow.

2024-03-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: hello_namespace_foreign: Avoid shadowing in handwritten code.
	* test/all/hello_namespace_foreign/c++/library_foreign.cc (foreign::foreign):
	Rename parameter `dzn_locator' to `locator'.

	test: foreign_handwritten: Avoid shadowing in handwritten code.
	* test/all/foreign_handwritten/c++/Foreign.cc (Foreign::Foreign): Rename
	parameter `dzn_locator' to `locator'.

	test: blocking_shell: Avoid shadowing in handwritten code.
	* test/all/blocking_shell/c++/main.cc (main): Remove obsolete lock.

2024-03-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: Remove -Wshadow from c++ build for alpha and shadow.
	* test/dzn/dzn.scm (run-build): New shadow? condition to override
	WARN_FLAGS for c++ when building models named *alpha* or *shadow*.

	test: resolve_formal_shadow: Rename from resolve_formal.
	* test/all/resolve_formal: Rename to...
	* test/all/resolve_formal_shadow: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.
	resolve_formal_shadow.

	c++: Avoid shadowing in nested defer c++11 capture workaround.
	* dzn/code.scm (code:capture-name): Add defer object to and use its
	location offset to make temporary variable name unique.
	* dzn/code/scmackerel/c++.scm (ast->code <defer>): Pass defer object to
	code:member-name along with variable.

	test: blocking_shell: Fix shadow warning.
	* test/all/blocking_shell/blocking_shell.dzn: Rename Int i to Int i_.

2024-03-20  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Move declarations, some renames to avoid shadowing.
	Although shadowing (lexical scoping) is a useful language feature,
	e.g. to avoid unreadably or unnecessarily long names, it is preferrable
	to avoid any possible shadowing warning in header files, so that a user
	can use any shadowing warning flag they like for their own code.

	* runtime/c++/dzn/coroutine.hh (coroutine::coroutine,
	coroutine::yield_to, coroutine::call, coroutine::release): Move
	definitions...
	* runtime/c++/coroutine.cc: ...to this new file.
	* runtime/local.mk (dist_runtime_cxx_DATA): Add it.
	(%C%_libdzn_c___la_SOURCES): Add it.
	* runtime/c++/dzn/pump.hh (pump::deadline::t): Rename to...
	(pump::deadline::time): ...this.  Update methods.
	pump::deadline::deadline): Move definition...
	* runtime/c++/pump.cc (pump::deadline::deadline):
	(pump::operator ()): Update
	* runtime/c++/dzn/runtime.hh (event<R (Args...)> e): Rename to `f' to
	avoid shadowing.  Update users throughout.

2024-03-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: json: Fix crash on behavior with function.
	* dzn/code/language/json.scm (json:value): Use simple-format.  Support
	booleans, export *unspecified* as `null' (was "undefined").

	test: Add undefined/interface/call_in_function.
	* test/all/undefined/interface/call_in_function: New test.

	ast: Fix crash in ast:recursive for non well-formed AST.
	* dzn/ast.scm (ast:recursive?)[clean-function*]: New inner define.  Use
	it to avoid calling ast:function* on an <event> and crashing.

2024-03-15  Paul Hoogendijk  <paul@dezyne.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	test: Add collateral_illegal.
	* test/all/collateral_illegal: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-03-18  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Add semantics_blocking_switch_context.
	* dzn/code/scmackerel/makreel.scm (semantics-unblocked): Rename
	switch-context-actions+switch=p to
	unblocked-switch-context-actions+switch=p.
	(unblocked-semantics-modeling+switch-context): Rename
	semantics-modeling+switch-context to
	unblocked-semantics-modeling+switch-context.
	(blocking-semantics-modeling+switch-context): Add
	blocking-semantics-modeling+switch-context.
	(semantics-blocking): Add blocking-switch-context-actions+switch=p add
	to semantics_blocking to cater for switch_context.

2024-03-14  Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Refactor.
	* dzn/vm/compliance.scm (check-provides-compliance): Maintain original
	list of port-traces instead of recreating it with append.

2024-03-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Skip compliance check for return-triggers unless defer.
	* dzn/vm/compliance.scm (check-provides-compliance+): Unless there's a
	defer-q, skip compliance for return-triggers.

	vm: compliance: Remove dead code.
	* dzn/vm/compliance.scm (zip): Remove port-start.

	test: Add blocking_shared_reply.
	* test/all/blocking_shared_reply/blocking_shared_reply.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	(XFAIL_SIMULATE): Add it.

	test: Add shared_reply.

2024-03-13  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add blocking_optional.
	* test/all/blocking_optional/blocking_optional.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-03-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Skip compliance check for requires-trigger while blocked.
	* dzn/vm/compliance.scm (check-provides-compliance+): Also skip
	compliance check for requires-trigger in blocking context.

2023-11-16  Paul Hoogendijk  <paul@dezyne.org>

	command-line: Fix dzn:verbosity.
	* dzn/command-line.scm (dzn:verbosity): Re-implement.

2024-03-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: compliance: Avoid instance cross-talk.
	* dzn/vm/compliance.scm (run-provides-port): Reset instance on ipc.

2024-03-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: system_foreign_only: Add to REGRESSION_TESTS.
	This is a follow-up to commit
	    f72c256a4f2ac5afc5bc7fd05fa05d6a17060a67
	    test: Add system_foreign_only.

	* test/all/local.mk (REGRESSION_TESTS): Add system_foreign_only.

2024-03-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: illegal_optional: Re-add to REGRESSION_TESTS.
	This is a follow-up to commit
	    3312f6178a647422ef9d282fa64d847504a12317
	    Remove silence feature.

	* test/all/local.mk (REGRESSION_TESTS): Add illegal_optional.
	* test/all/illegal_optional/baseline/simulate.err,
	test/all/illegal_optional/baseline/simulate.out,
	test/all/illegal_optional/baseline/verify.err: Update baseline.

2024-03-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_defer: Add to REGRESSION_TESTS.
	This is a follow-up to commit
	    53b6d98f60de66570a936169acc6e632d4e046de
	    test: Add blocking_defer.

	* test/all/local.mk (REGRESSION_TESTS): Add blocking_defer.

2024-03-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Print deferred and handling for PC's instance state.
	* dzn/vm/goops.scm (write <state>): Print deferred and handling.

	explore: Fix collateral release.
	* dzn/explore.scm (pc->rtc-lts): Consider
	blocked-on-boundary-collateral-release.

2024-03-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Fix LTS of collateral_blocking.
	This fixes the LTS of

	    test/all/collateral_blocking
	    test/all/collateral_blocking_multiple_provides2

	* dzn/vm/util.scm (state->string <state>): Also consider handling.

2024-03-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	graph: Remove magic constants from help.
	* dzn/commands/graph.scm (parse-opts): Use %queue-size,
	%queue-size-defer, %queue-size-external.

2024-04-12  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Refactor debugging.

2024-03-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: More verbose assign debugging.
	* dzn/vm/step.scm (step <assign>): Also print variable and expression.

2024-03-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Add programming-error for step with port-trigger on component.
	* dzn/vm/step.scm (begin-step <runtime:component>): Throw
	programming-error for a trigger without a port.

2024-04-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Throw programming-error when statement lacks an implementation.
	* dzn/vm/step.scm (step <statement>): Throw 'programming-error instead
	of returning nil.

2024-03-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	verify: Also produce --queue-size options in debug output.
	* dzn/config.scm.in (%default-queue-size, %default-queue-size-defer,
	%default-queue-size-external): New variables.
	* dzn/verify/pipeline.scm (pretty-verify-pipeline): Use them to produce
	--queue-size flags for debug output.

2024-03-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Respect --queue-size-external option.
	This helps debuging using dzn -d verify ...

	* dzn/commands/code.scm (main): Fix typo.

2024-03-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	step: Cleanup.
	* dzn/vm/step.scm (step): Use if instead of trivial cond.

2024-03-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	makreel: Add dummy %tag-action process to compensate for sm:tag.
	This is a follow-up to commit
	    6567623f8c704c3ec4199495b72517290b4a2323
	    verify: Improve performance of unreachable code check.

	The sm:tag has no semantics and "just prints" tag (x,y) a stealth
	action; that doesn't (always) work with mCRL2, as every action needs to
	be declared.

	Code that generates such a stealth tag (x, y) and also uses %tag-action
	"happens" to work; code that only generates a stealth tag (x, y) and
	doesn't use %tag-action anywhere, breaks.

	* dzn/code/scmackerel/makreel.scm (dummy-tag-process): New variable.
	(root->scmackerel): Use it.

2024-03-07  Rutger van Beusekom  <rutger@dezyne.org>

	pipe: Kill pipeline processes on SIGINT, SIGALRM.
	* dzn/pipe.scm (pipeline->string, pipeline->port): Install SIGINT and
	SIGALRM (if available) signal handler that calls kill <SIGNAL> on all
	pipeline pids.

2024-03-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	verify: Refactor --no-interfaces.
	* dzn/verify/pipeline.scm (mcrl2:verify-interface-asserts): Remove skip
	by looking at command-line hackery.
	(verification:verify): Add #:no-interfaces? parameter.  Use it to remove
	interfaces from models to verify.
	* dzn/commands/verify.scm (main): Pass it.
	* doc/dezyne.texi (Invoking dzn verify): Fix documentiation.

2024-03-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.18.1.
	* guix/pack/dezyne.scm (dezyne): Update to 2.18.1.

2024-01-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.18.1 since 2.18.0): New section.

2024-03-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add blocking_nondet.
	* test/all/blocking_nondet/blocking_nondet.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-03-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Oops, do not drop alternative port states.
	Reported by logocp via IRC.

	* dzn/vm/compliance.scm (check-provides-compliance): Do not include
	`traces' in map; it's always a singleton list and would thus drop port
	alternative states.

2024-02-16  Rutger van Beusekom  <rutger@dezyne.org>

	code: c++: Refactor/optimize.
	* dzn/code/goops.scm (<shared-transition>): Remove redundant rtc?.
	* dzn/code.scm (code:shared): Rename event-regexp to enum-regexp.
	Rename markeel->event to markeel->enum. Remove redundant string?
	application. Remove redundant <shared-transition> and <shared-value>,
	use <edge> instead.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized):
	Update for <edge> instead of <shared-transition> and <shared-value>.

2024-02-18  Rutger van Beusekom  <rutger@dezyne.org>

	timing: Export *let*.

2024-02-16  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Reduce dzn_update_state code generation overhead.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized):
	Replace delete-duplicates with sort and delete-adjacent-duplicates.

	misc: Add delete-adjacent-duplicates.
	* dzn/misc.scm (delete-adjacent-duplicates): New procedure.

	code: Use precompiled regexp to reduce overhead.
	* dzn/code.scm (code:shared): Replace string-match with regexp-exec and
	inline regex literals with define'd compiled regexes.

2024-02-13  Rutger van Beusekom  <rutger@dezyne.org>

	c++ pump: Remove infinite 0 delay timout loops.
	Service all timeouts that have expired at a single point in time instead
	of moving the point in time forward after executing the timeout side
	effect.

	* runtime/c++/dzn/pump.hh (deadline::expired, pump::timer_expired): Add
	now parameter.
	* runtime/c++/pump.cc (pump::operator ()): Determine now before entering
	the loop.
	* runtime/c++/pump.cc (pump::create_context): Update call location.

2024-02-13  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_async.
	* test/all/defer_async/defer_async.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2024-01-30  Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Merge state and hide redundant port instances.
	* dzn/vm/util.scm (serialize-header): Remove internal port instances.
	(serialize): Merge port state into corresponding component state, using
	a .name + "." prefix for the variables.
	(merge-port-state): New procedure.
	* test/all/blocking_system2/baseline/simulate.out,
	test/all/compliance_system_hello_world/baseline/simulate.out,
	test/all/compliance_system_provides_bool/baseline/simulate.out,
	test/all/hello_system_reply/baseline/simulate.out,
	test/all/illegal_system_requires/baseline/simulate.out,
	test/all/semantics/baseline/semantics.org,
	test/all/state_deadlock/baseline/simulate.out,
	test/all/system_shared/baseline/simulate.out: Update baselines.

2024-01-09  Rutger van Beusekom  <rutger@dezyne.org>

	pipeline: Verify each (interface) model only once.
	* dzn/verify/pipeline.scm (mcrl2:verify-component): Remove implicit
	interface verification.
	(verification:verify): Verify interfaces explicitly.

	* test/all/compliance_failures_blocking_race/baseline/verify.err,
	test/all/compliance_failures_multiple_provides/baseline/verify.err,
	test/all/compliance_fork_blocking_bypass/baseline/verify.err,
	test/all/deadlock_asynchronous_sync_reply/baseline/verify.err,
	test/all/hello_two/baseline/verify.err,
	test/all/match_blocking_race/baseline/verify.err: Update baseline.

	* test/all/blocking_double_release/baseline/verify.err,
	test/all/blocking_double_release/baseline/verify.out,
	test/all/blocking_multiple_provides0/baseline/verify.err,
	test/all/blocking_multiple_provides0/baseline/verify.out,
	test/all/compliance_system_provides_bool/baseline/verify.err,
	test/all/compliance_system_provides_bool/baseline/verify.out,
	test/all/illegal_system_requires/baseline/verify.err,
	test/all/illegal_system_requires/baseline/verify.out: Add baseline.

2024-02-10  Rutger van Beusekom  <rutger@dezyne.org>

	test: Fix models that are not currently verified.
	* test/all/foreign_import_system/hello_foreign.dzn,
	test/all/foreign_import_system/iworld.dzn,
	test/all/system_bool_enum/system_bool_enum.dzn,
	test/all/system_shared/system_shared.dzn,

2024-02-09  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add compliance_reply_illegal.
	* test/all/compliance_reply_illegal/compliance_reply_illegal.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* test/all/compliance_reply_illegal/trace: Add error trace.
	* test/all/compliance_reply_illegal/baseline/simulate.err,
	test/all/compliance_reply_illegal/baseline/simulate.out,
	test/all/compliance_reply_illegal/baseline/verify.err,
	test/all/compliance_reply_illegal/baseline/verify.out: Add corresponding
	baselines.

	verify: Also mark non-compliant replies as <non-compliance>.
	* dzn/verify/constraint.scm (lts->makreel): Split action+replies and map
	replies filtered  to Non_Compliance instead of constraint_any.
	* dzn/code/scmackerel/makreel.scm (%non-compliant-action): Add
	"non_compliance" action.
	(illegal-processes): Add Non_Compliant process.
	(component-processes, constraint-processes): Allow non_compliance action.
	* dzn/lts.scm (parse-label): Add non_compliance action to illegal rule.
	* test/all/deadlock_blocking_compliance/baseline/verify.out: Update
	baseline.

2024-02-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	pipeline: Use cute instead of cut.
	* dzn/verify/pipeline.scm: Throughout.

2024-02-10  Janneke Nieuwenhuizen  <janneke@gnu.org>

	makreel: Cleanup.
	* dzn/code/language/makreel.scm (makreel:add-state-placeholder): Break
	long lines.

	normalize: Cleanup.
	* dzn/ast/normalize.scm (triples:mark-the-end): Use ast:modeling?
	primitive, fix line break.

2024-02-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Fix all-go target after clean.
	* Makefile.am (%.go): Depend on .scm built sources.

	parse: Remove quadratic line offsets calculation.
	* dzn/ast/parse.scm (parse-tree->ast)[text->lines-offsets]: New inner
	define.  Use it to set `newlines'.:

2024-01-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_space_duplicate_definition.
	Reported via IRC by logocp52.

	* test/all/parse_space_duplicate_definition: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2024-02-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	wfc: Also check for toplevel definitions in namespace.
	* dzn/ast/wfc.scm (previous-definition-unshadowed): Also consider scope
	when looking-up previous definition.
	(re-definition-error): Use full name in report.

	doc: Clarify licensing of generated code.
	* doc/dezyne.texi (Conditions for Using Dezyne): Make explicit to which
	"its" refers in line three.

2024-01-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	script: Typo.
	* dzn/script.scm (parse-opts): Add space.

2024-01-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Silence warnings when git is missing.
	* Makefile.am: Send git errors to /dev/null.

2024-01-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Support release-git.
	* Makefile.am (update-git-hash, (release-git): New targets.

2024-01-09  Rutger van Beusekom  <rutger@dezyne.org>

	pipeline: Refactor.
	* dzn/verify/pipeline.scm (mcrl2:verify-interface-asserts): Move procedure.

	makreel: Refactor.
	* dzn/code/scmackerel/makreel.scm (assign->sum): Use sum-state-action.

2023-12-21  Rutger van Beusekom  <rutger@dezyne.org>

	code: Instantly assert illegal on triggers.
	* dzn/code.scm (code:shared): Remove the trigger return edges to an
	illegal node from the constraining LTS used for code generation.

	c++: Add dzn::check_bindings to handwritten main.
	* test/all/blocking_binding/main.cc,
	test/all/blocking_double_release/main.cc,
	test/all/blocking_multiple_provides2/main.cc,
	test/all/blocking_multiple_provides3/main.cc,
	test/all/blocking_release/main.cc,
	test/all/blocking_shell/c++/main.cc,
	test/all/blocking_system_diamond/main.cc,
	test/all/calling_context/main.cc,
	test/all/collateral_blocking_backdoor/main.cc,
	test/all/collateral_blocking_bridges/main.cc,
	test/all/collateral_blocking_double_release/main.cc,
	test/all/collateral_blocking_multiple_provides/main.cc,
	test/all/collateral_blocking_multiple_provides0/main.cc,
	test/all/collateral_blocking_release/main.cc,
	test/all/collateral_blocking_reorder/main.cc,
	test/all/collateral_blocking_reorder_parallel/main.cc,
	test/all/collateral_blocking_shell/main.cc,
	test/all/collateral_blocking_shell2/main.cc,
	test/all/collateral_double_blocked/main.cc,
	test/all/defer_data/main.cc,
	test/all/double_collateral_blocking_shell/main.cc,
	test/all/foreign_only/main.cc,
	test/all/foreign_optional/c++/main.cc,
	test/all/foreign_requires/c++/main.cc,
	test/all/hello_mock/main.cc,
	test/all/ihello_mock/main.cc,
	test/all/pump_twice/main.cc,
	test/all/shared_glue/main.cc,
	test/all/shell_injected/c++/main.cc,
	test/all/sync_out_reply_binding/main.cc: Add call to
	dzn::check_bindings (sut).

	c++: Fix dzn::check_bindings for foreign components.
	* runtime/c++/dzn/runtime.hh (check_bindings <Foreign>): Add
	specialization.

2024-01-09  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add inner_guard_shared_state_deadlock.
	* test/all/inner_guard_shared_state_deadlock: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	makreel: Prevent deadlock caused by inner guards.
	* dzn/code/language/makreel.scm (makreel:normalize): Move application of
	makreel:add-state-placeholder after normalize:state+illegals.

2024-01-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add defer_local_field_test.
	* test/all/defer_local_field_test/defer_local_field_test.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	code: Also find local for defer when used in a field test.
	* dzn/code.scm (code:capture-local): Also consider <field-test>.

2023-12-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Also append version to properly installed headers.
	This is a follow-up to commit
	    4de2a4b88f8decb43f9f7bff667b1c0548c374f1
	    build: Build and install C and C++ headers and libraries.

	* Makefile.am (install-data-hook): Also append version comment to
	headers in $(includedir).

2023-12-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add interface_nondet2.
	Suggested by logocp vi IRC.

	* test/all/interface_nondet2/interface_nondet2.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-12-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Allow non-deterministism in interfaces.
	This is a follow-up to commit
	    8c0a037f41531a960716a1024f1698db9e742cd8
	    simulate: Fix determinism_optional.

	* dzn/vm/run.scm (non-deterministic?): Filter-out interface-nondeterminism.

2023-12-13  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Set shared state strictness via event::set.
	* runtime/c++/dzn/runtime.hh (in::event<R (Args...)>,
	in::event<void (Args...)>, out::event<void (Args...)>): Rename
	dzn_shell_p to dzn_strict_p,
	(out::event::operator = (event const&): Add asserts.
	* dzn/code/scmackerel/c++.scm (shell-system->sm:statements-unmemoized):
	Remove explicit dzn_shell_p assignment and rely on relaxed default
	setting of dzn_strict_p.

2024-02-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	runtime: c++: Use left-associative const.
	* runtime/c++/dzn/pump.hh,
	runtime/c++/pump.cc: Use left-associative const.

2023-12-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	runtime: c++: Use GNU-style function type/name layout.
	This is a follow-up to commit
	    697cbab3fb7a1e49c62d920a101072328b56d8a3
	    Use GNU style indentation for C++.

	* runtime/c++/dzn/runtime.hh,
	runtime/c++/pump.cc,
	runtime/c++/runtime.cc,
	runtime/c++/std-async.cc,
	runtime/c++/thread-pool.cc: Place return type on its own line so that
	git grep ^<function-name> and tags find their definition.

2023-12-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Post-release update.
	* doc/announce/ANNOUNCE-2.18.0: Update checksums.

	guix: dezyne: Update to 2.18.0.
	* guix/pack/dezyne.scm (dezyne): Update to 2.18.0.

2023-09-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ANNOUNCE-2.18.0'.
	* doc/announce/ANNOUNCE-2.18.0 (NEWS): Update from NEWS.

2023-09-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.18.0 since 2.17.3): Mention tail-recursive
	false-positives, well-formedness check for thread-safe shell systems'
	outer requires ports to have the external qualificier, the -o,--output
	option for json and makreel, multiple usage of -s,--shell, removal of
	the -j,-jitty option.

2023-12-12  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add stateful_injected.
	* test/all/stateful_injected: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

	c++: Prevent resetting injected port state.
	* dzn/code/scmackerel/c++.scm (port->injected-require-override):
	Only overwrite dzn_meta, not port state.

2023-12-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Compile c++ runtime with WARN_FLAGS too.
	* runtime/local.mk (WARN_FLAGS): New variable.
	(%C%_libdzn_c___la_CPPFLAGS): Use it.

2023-12-11  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Avoid some shadowing.
	This apparently works around two bugs in the MicroSoft C++ compiler.

	* runtime/c++/dzn/runtime.hh: Use this-> throughout.

2023-12-11  Rutger van Beusekom  <rutger@dezyne.org>

	test: Fix foreign_optional for dzn::in|out::event use.
	* test/all/foreign_optional/c++/main.cc (main): Call foreign
	implementation including runtime.

2023-12-08  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add ihello_mock.
	* test/all/ihello_mock: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2023-12-11  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Add interface template constructor to initialize events.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized:
	constructor): Here,
	(provides->member, requires->member): Use here,
	(event-set): Remove.

2023-12-08  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_mock.
	* test/all/hello_mock/hello_mock.dzn,
	test/all/hello_mock/main.cc: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

	c++: Cater for not flushing boundary synchronous out events.
	* runtime/c++/dzn/runtime.hh (operator =): Replace skip_queue with
	!dzn_port_meta->require.component.
	* dzn/code/scmackerel/c++.scm (main-connect-ports),
	runtime/c++/dzn/runtime.hh (event<void (Args...)>),
	(event): Remove skip_queue.
	* dzn/code/scmackerel/c++.scm (main-event-map): Initialize
	require.component to a nullptr.

2023-12-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add shared_determinism.
	* test/all/shared_determinism/shared_determinism.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-12-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Report new unobservably non-deterministic variant.
	* dzn/vm/run.scm (run-to-completion-unmemoized)
	[interface-non-deterministic, interface-mark-determinism-error]: New
	inner defines.  Use them to report the new unobservably
	non-deterministic variant.

2023-12-07  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Remove dead code.
	* runtime/c++/dzn/runtime.hh (dzn_share_p): Remove.
	(in::event<R (Args...)>, in::event<void (Args...)>,
	out::event<void (Args...)>): Remove in favor of interface dzn_share_p
	encapsulated by port_update.

2023-12-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c++: Remove experimental exception wrappers.
	* configure.ac: Remove check for --enable-c++-exception-wrappers.
	* runtime/examples/exception_context.hh: Remove.
	* Makefile.am (install-data-hook)[have_cxx_exception_wrappers]: Do not
	package it.
	* dzn/code/language/c++-exception-wrappers.scm: Remove.
	* dzn/code/language/local.mk (dist_%C%_scm_DATA): Remove it.
	* dzn/templates/README: Remove reference to c++-exception-wrappers.
	* dzn/templates/c++-exception-wrappers.scm: Remove.
	* dzn/templates/c++-exception-wrappers/: Remove.
	* test/all/exception_wrappers: Remove.
	* dzn/templates/local.mk (dist_nocompile_%C%_scm_DATA, EXTRA_DIST):
	Remove them.
	* test/all/local.mk (REGRESSION_TESTS, EXTRA_DIST): Remove it.

2023-12-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Honor configure --without-boost.
	* configure.ac: Make $want_boost a prerequisite for
	have_boost_coroutine.

2023-12-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	json: Do not implicitly remove behavior.
	To get the old result, without behavior, use the generic
	"--transform=remove-behavior" on dzn.

	* dzn/code/language/json.scm (system-diagram): Remove remove-behavior.

2023-12-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Remove obsolete -B,--no-blocking from help.
	This is a follow-up to commit
	    a4fc3937f98a90ac790d89dbd591afc900775a79
	    code: Remove -B,--no-blocking option.

	* dzn/commands/code.scm (parse-opts): Remove -B,--no-blocking.

2023-12-05  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	Change shared-state semantics to update after provides out event.
	This enables trivial integration in C++ using operator = ().

	* runtime/c++/dzn/runtime.hh (in::event, out::event): New structs
	replacing std::function in interfaces, encapsulating all other runtime
	interaction.
	(connect): Replace by generated version.
	(queue_p): Rename from async.
	(handle): Remove.
	(share_trace_wrapper,runtime_wrapper, call_in, call_out): Remove.
	(hash): Replace list of char const* with char const*.
	* runtime/c++/pump.cc (port_block, port_release, collateral_block): Add
	debug tracing.
	* runtime/c++/runtime.cc (trace_in): Rename from trace.
	(runtime::queue_p): Rename from async ...
	(runtime::enqueue): ... update usage here.
	* dzn/code.scm (code:shared-lts-unmemoized): Replace the rtc-lts with a
	regular lts.
	(code:shared, code:shared-state): Cater for state (Void) in regexp.
	(code:shared-state): Use `from' instead of `to' to include assignments
	in dzn_update_state case block.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized):
	Replace dzn_prefix with dzn_label.
	(ast->code): Remove call_in and call_out
	(synchronize->member, non-rtc-transitions): Remove.
	(event-set): New procedure.
	* dzn/code/scmackerel/makreel.scm (ast->process): Communicate state
	after provides out events.
	* dzn/lts.scm (display-lts): Display a single label string.
	* dzn/vm/compliance.scm (run-provides-modeling, run-provides-port,
	port-acceptance-equal?, compliance-first-non-match,
	update-shared-state): New procedures to support updating state after
	provides out actions during compliance.
	* dzn/vm/run.scm (extend-trace): Update shared state.
	* dzn/vm/evaluate.scm (eval-expression): Cater for void action.
	(step): Allow explicit void reply.
	* dzn/vm/util.scm (instance-rtc-trigger): New procedure.
	* test/all/hello_multiple_nondet/hello_multiple_nondet.dzn: Remove
	interface non-determinism.
	* test/all/foreign_handwritten/c++/Foreign.cc,
	test/all/foreign_handwritten/c++/Foreign.hh,
	test/all/hello_namespace_foreign/c++/library_foreign.cc,
	test/all/hello_namespace_foreign/c++/library_foreign.hh: Apply trivial
	integration.
	* test/all/deadlock_reply/baseline/simulate.out: Update baseline.
	* dzn/ast/util.scm (tree-find): New procedure.
	* dzn/code/goops.scm (<state>): New ast type.
	* dzn/code/language/makreel.scm (makreel:add-state-placeholder): New
	procedure ...
	* dzn/code/scmackerel/makreel.scm (ast->process): Extract from here ...
	(makreel:normalize): Use here.
	* test/all/shared_async_provides/shared_async_provides.dzn,
	test/all/shared_out_sync_provides/shared_out_sync_provides.dzn: Cater
	for state communication with the occurrence of out events.

2023-12-05  Rutger van Beusekom  <rutger@dezyne.org>

	test: second_reply_sync: Fix non compliance.
	* test/all/second_reply_sync/second_reply_sync.dzn: Add h.world () on
	w.world ().
	* test/all/second_reply_sync/baseline/verify.out,
	test/all/second_reply_sync/baseline/simulate.err,
	* test/all/second_reply_sync/baseline/simulate.out: Update baseline.

	test: blocking_shell: Refactor main.
	* test/all/blocking_shell/c++/main.cc (main): Refactor.

	peg: Expect instance name and not a keyword for instance.
	* dzn/parse/peg.scm (peg:parse): Add a `#' to instance <-- ... name and
	reverse binding and instance order.

2023-11-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add determinism_optional.
	* test/all/determinism_optional/determinism_optional.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	simulate: Fix determinism_optional.
	* dzn/vm/run.scm (non-deterministic?): Catch determinism errors also for
	<postponed-match> where there is no choice point.
	(run-to-completion-unmemoized): Call it early.

2023-11-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	json: Honor -o,--output directory.
	* dzn/code/language/json.scm (ast->): Use code:dump to write to file
	by default.
	* dzn/commands/graph.scm (main): Call code with #:dir "-" to compensate
	for that.

	makreel: Honor -o,--output directory.
	* dzn/code/language/makreel.scm (ast->): Use code:dump to write to file
	by default.
	* dzn/verify/pipeline.scm (pretty-verify-pipeline): Add `-o-' to debug
	command output.

	code: Remove unused parameter from  code:dump.
	* dzn/code/util.scm (code:dump): Remove root parameter.
	* dzn/code/language/c++-exception-wrappers.scm (ast->): Update caller.
	* dzn/code/language/c++.scm (ast->): Likewise.
	* dzn/code/language/c.scm (ast->): Likewise.
	* dzn/code/language/cs.scm (ast->): Likewise.
	* dzn/code/language/dzn.scm (ast->): Likewise.
	* dzn/code/language/javascript.scm (ast->): Likewise.
	* dzn/code/language/scheme.scm (ast->): Likewise.

	code: Honor multiple uses of --shell.
	* dzn/commands/code.scm (main): Use multi-opt for shell, pass list for
	%shell.
	* dzn/ast/wfc.scm (wfc-external): Cater for %shell being a list.
	* dzn/code.scm (code:annotate-shells): Likewise.
	* doc/dezyne.texi (Invoking dzn code): Document it.

2023-11-13  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_void.
	* test/all/hello_void/hello_void.dzn: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2023-11-10  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Rename dzn::async to dzn::std_async.
	* runtime/c++/std-async.cc (dzn::async): Rename to...
	(dzn::std_async): ...this.
	* runtime/c++/dzn/async.hh: Rename to...
	* runtime/c++/dzn/std-async.hh): ...this, and update accordingly.
	* runtime/c++/thread-pool.cc (dzn::async): Rename to...
	(dzn::std_async): ...this.
	* runtime/c++/dzn/context.hh (context): Update caller.
	* runtime/c++/pump.cc (pump::pump): Update caller.

2023-11-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	json: Support output without any model.
	Reported by MikeFTR via IRC.

	* dzn/code/language/json.scm (system-diagram): Only filter-model when
	there's a model.

2023-11-10  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: scmackerel: Uptate to 0.5.3.
	* guix/pack/scmackerel.scm (scmackerel): Update to 0.5.3.

2023-08-15  Paul Hoogendijk  <paul@dezyne.org>

	verify: Improve performance of unreachable code check.
	Improve performance of unreachable code check by modelling tags
	as normale transitions and remove tags from the makreel source code
	of interfaces when they are included for makreel code of component.

	* dzn/ast/normalize.scm (tag-imperative-blocks): Simplify and unify
	with e.g. add-defer-end.
	* dzn/lts.scm (remove-tag-loops): Remove...
	(assert-livelock): ...remove call to it.
	(deadlock-nodes): ...remove call to it.
	* dzn/code.scm (%no-tags-interface?): Add new parameter.
	* dzn/code/scmackerel/makreel.scm <sm:tag>: New sm:node for tagging
	statements.
	(print-sm:tag): New function for displaying sm:tag node, don't
	display tag if tag is part of an interface and in the context of a
	component.
	(ast->process <model>): Use sm:tag for tagging.
	(port-processes): Remove blocking of tags.
	* dzn/code/language/makreel.scm (root-> o): Set parameter
	%no-tags-interface? to true when top model is a component.

	* test/all/*: Change error traces to current reported error traces.

2023-11-09  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hash_collision2.
	* test/all/hash_collision2/trace: Add a trivial trace to reduce the
	running time.
	* test/all/hash_collision2/hash_collision.dzn2: New test.
	* test/all/local.mk: Add it.

	c++: Prevent further hash collision.
	* runtime/c++/dzn/runtime.hh (hash): Prevent further hash collision by
	using the string representation of node index for the hash calculation.
	* dzn/code/scmackerel/c++.scm (dzn:hash): Likewise.

	test: Add hash_collision.
	* test/all/hash_collision/hash_collision.dzn: New test.
	* test/all/local.mk: Add it.

	c++: Update pow after initial use to prevent hash collision.
	* runtime/c++/dzn/runtime.hh (hash): Move updating pow before next use.
	dzn/code/scmackerel/c++.scm (dzn:hash): Likewise.

2023-11-07  Rutger van Beusekom  <rutger@dezyne.org>

	test: foreign_only: Extend for multiple out events.
	* test/all/foreign_only/foreign_only.dzn (foreign_only.cruel): Change to
	out-event.  Use it to output multiple events.
	* test/all/foreign_only/foreign.hh (struct foreign),
	* test/all/foreign_only/main.cc (connect_ports),
	test/all/system_foreign_only/system_foreign_only.dzn (proxy),
	accordingly.
	test/all/foreign_only/trace: Update accordingly.

2023-11-02  Paul Hoogendijk  <paul@dezyne.org>

	wfc: Add check for statement after return.
	* dzn/ast/wfc.scm (wfc <return>): Check that return is last statement of
	block.
	* test/all/unreachable_return: Add tests for it.
	* test/all/wf_functionReturnValue,
	test/all/wf_functionTailRecursion,
	test/all/wf_functionTailRecursion: Update baselines.

2023-11-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add space.foreign.
	* test/all/space.foreign: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-11-06  Rutger van Beusekom  <rutger@dezyne.org>

	test: foreign_only: Add asynchronous out event.
	* test/all/foreign_only/foreign_only.dzn (foreign_only.cruel): Add
	event.  Also use inevitable.
	* test/all/foreign_only/foreign.hh,
	test/all/foreign_only/main.cc,
	test/all/foreign_only/trace: Update accordingly.

	c++: Fix foreign_only asynchronous out event.
	* dzn/code/scmackerel/c++.scm
	(component-model->sm:statements-unmemoized): Add dzn_update to call_out.

2023-11-04  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add parse_imperative_guard.
	* test/all/parse_imperative_guard/parse_imperative_guard.dzn,
	* test/all/parse_imperative_guard/baseline/verify.err,
	* test/all/local.mk (PARSER_TESTS): Add it.

	wfc: Add check for guards within imperative contexts.
	* dzn/ast/wfc.scm (wfc <guard>): Check for non-imperative parent.

2023-11-02  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Support c++20, removal of std::result_of<Callable>.
	* runtime/c++/dzn/pump.hh (shell)[__cplusplus > 201402L],
	runtime/c++/dzn/runtime.hh (struct runtime)[__cplusplus > 201402L]:
	Replace std::result_of with std::invoke_result.

2023-10-30  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add blocking_defer.

2023-10-12  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Fix typo.

2023-10-08  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: thread-pool: Reorder pool members.
	* runtime/c++/thread-pool.cc (class pool): Initialize task vector last,
	to destroy it first and before other resources like the mutex.

2023-10-03  Rutger van Beusekom  <rutger@dezyne.org>

	test: LegoBallSorter black box pattern.
	Avoid redundant imports and as result wellformedness checking time.

	* test/all/LegoBallSorter/LegoBallSorter.dzn: Move Brick* ...
	test/all/LegoBallSorter/Brick1.dzn,
	test/all/LegoBallSorter/Brick2.dzn,
	test/all/LegoBallSorter/Brick3.dzn,
	test/all/LegoBallSorter/Brick4.dzn: ... here.
	test/all/LegoBallSorter/blackboxBallSorter.dzn,
	test/all/LegoBallSorter/blackboxBrick1.dzn,
	test/all/LegoBallSorter/blackboxBrick2.dzn,
	test/all/LegoBallSorter/blackboxBrick3.dzn,
	test/all/LegoBallSorter/blackboxBrick4.dzn: Create black box (foreign)
	versions.
	* test/all/LegoBallSorter/blackboxLegoBallSorter.dzn: Copy from
	LegoBallSorter importing black box (foreign) version.
	* test/all/LegoBallSorter/MaterialHandler.dzn: Move IHandleRobust ...
	* test/all/LegoBallSorter/IHandle.dzn: ... here.
	* test/all/LegoBallSorter/LightSensor.dzn: Move ILightSense ...
	* test/all/LegoBallSorter/ILightSense.dzn: ... here.
	* test/all/LegoBallSorter/Motor.dzn: Move IMove ...
	* test/all/LegoBallSorter/IMove.dzn: ... here.
	* test/all/LegoBallSorter/TouchSensor.dzn: Move ITouchSense ...
	* test/all/LegoBallSorter/ITouchSense.dzn: ... here.

2023-10-05  Paul Hoogendijk  <paul@dezyne.org>

	test: Add no_unreachable:
	* test/dzn/dzn.scm (no-unreachable?): New procedure.
	(run-verify): Use it to switch --no-unreachable.
	* test/all/no_unreachable: Test it in new test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-10-05  Paul Hoogendijk  <paul@dezyne.org>

	verify: fix option --no-unreachable.
	Reported by MikeFTR via IRC.

	* dzn/verify/pipeline.scm (get-tags): Cater for --no-unreachable; Instead
	of throwing, return #false when no tags are available.

2023-10-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: interface_nondet: Remove --no-interface-determinism.
	* test/all/interface_nondet/META: Remove --no-interface-determinism.

2023-09-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	verify: Remove hardcoded --tags from pipeline.
	This is a follow-up to commit
	    5604cccf8044515e713a9defadec3024cb0826f5
	    verify: Move unreachable tags from command-line to pipeline.

	* dzn/verify/pipeline.scm (in-out:aut->verify-interface,
	in-out:aut->verify-component): Remove hardcoded tags.

2023-10-30  Rutger van Beusekom  <rutger@dezyne.org>

	shell_injected: Remove shared state.
	* test/all/shell_injected/META (skip): Re-enable cs.
	* test/all/shell_injected/cs/main.cs (class main): Add handwritten main.
	* test/all/shell_injected/cs/Watchdog.cs: Implement Watchdog.
	* test/all/shell_injected/shell_injected.dzn: Replace w.idle with
	boolean watchdog.

2023-09-28  Rutger van Beusekom  <rutger@dezyne.org>

	test: shell_injected: Fix verification.
	* test/all/shell_injected/META: Enable verification; disable cs,
	scheme, lts.
	* test/all/shell_injected/shell_injected.dzn: Add a watchdog to armor
	against delayed refusal.
	* test/all/shell_injected/trace: Add watchdog events.
	* test/all/shell_injected/c++/Watchdog.hh,
	test/all/shell_injected/c++/main.cc: New files.

2023-09-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	runtime: scheme: Remove ranking for async.
	This is a follow-up to commit
	    b6cfb5af76aab7764b0a069c6c4e450e5f059090
	    scheme: Remove async feature.

	* runtime/scheme/dzn/pump.scm (dzn:handle): Remove rank parameter.

2023-09-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	runtime: cs: Remove ranking for async.
	This is a follow-up to commit
	    595533e53ca2cef6d511b9b1aeced37e578d812e
	    cs: Remove async.

	* runtime/cs/dzn/pump.cs (Deadline.rank): Remove.
	(Deadline.Deadline): Remove rank parameter.
	(Deadline.CompareTo, pump.handle): Update accordingly.

2023-09-28  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Clone the correct locator object.

2023-09-28  Rutger van Beusekom  <rutger@dezyne.org>

	c++: runtime: Remove ranking for async.
	This is a follow-up to commit
	    31de4b3cc81375370dd7749f38cd470ac8cae6bf
	    c++: Remove async.

	* runtime/c++/dzn/pump.hh (pump::rank_less, pump::time_less): Remove.
	(pump::deadline, pump::handle): Remove rank parameter.
	* runtime/c++/pump.cc (pump::handle): Likewise.

2023-09-21  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Require shell requires ports to be declared external.
	* dzn/ast/wfc.scm (wfc-external): New method,
	(wfc-skeleton): Used it to check that requires ports for shells are
	external.
	* test/all/double_hello_block/META: Remove META with unused tss option.
	* test/all/shell_injected/shell_injected.dzn,
	test/all/blocking_multiple_provides2/blocking_multiple_provides2.dzn,
	test/all/blocking_multiple_provides3/blocking_multiple_provides3.dzn,
	test/all/blocking_shell/blocking_shell.dzn,
	test/all/blocking_system_diamond/blocking_system_diamond.dzn,
	test/all/collateral_blocking_backdoor/collateral_blocking_backdoor.dzn,
	test/all/collateral_blocking_multiple_provides/collateral_blocking_multiple_provides.dzn,
	test/all/collateral_blocking_multiple_provides0/collateral_blocking_multiple_provides0.dzn,
	test/all/collateral_blocking_shell/collateral_blocking_shell.dzn,
	test/all/collateral_blocking_shell2/collateral_blocking_shell2.dzn:
	Declare outer shell requires port as external; update models to deal
	with this change.
	* test/all/blocking_shell/blocking_shell.dzn: Make requires outer shell
	ports external.
	* test/all/double_collateral_blocking_shell/double_collateral_blocking_shell.dzn:
	Make requires outer shell ports external; canonicalize.
	* test/all/double_collateral_blocking_shell/main.cc,
	test/all/double_collateral_blocking_shell/main.cs,
	test/all/double_collateral_blocking_shell/trace: Canonicalize.
	* test/all/collateral_blocking_reorder/collateral_blocking_reorder.dzn:
	Make requires outer shell ports external; insert external adapters to
	maintain the collateral blocking notion.
	* test/all/collateral_blocking_bridges/collateral_blocking_bridges.dzn:
	Make requires outer shell ports external; insert external adapters to
	maintain the collateral blocking notion.
	* test/all/collateral_blocking_bridges/main.cc,
	test/all/collateral_blocking_bridges/main.cs: Hmm, fudging the outcome
	using sleeps.
	* test/all/collateral_blocking_reorder_parallel/collateral_blocking_reorder_parallel.dzn:
	Make requires outer shell ports external; insert external adapters to
	maintain the collateral blocking notion.
	* test/all/collateral_blocking_reorder_parallel/main.cc,
	test/all/collateral_blocking_reorder_parallel/main.cs: Hmm, fudging
	the outcome using sleeps.
	* test/all/blocking_multiple_provides3/blocking_multiple_provides3.dzn:
	Make requires outer shell ports external; insert external adapters to
	maintain the collateral blocking notion.
	* test/all/collateral_blocking_reorder_parallel/main.cc,
	test/all/collateral_blocking_reorder_parallel/main.cs: Remove
	extraneous pump and replace sut.mp.r.out.world by sut.r.out.world.
	* test/all/blocking_multiple_provides3/trace: Change trace
	correspondingly.
	* test/all/blocking_multiple_provides2/main.cc,
	test/all/blocking_multiple_provides2/main.cs: Hmm, fudging the outcome
	using sleeps.

2023-09-22  Rutger van Beusekom  <rutger@dezyne.org>

	test: collateral_blocking_bridges: Reorder models.
	* test/all/collateral_blocking_bridges/collateral_blocking_bridges.dzn:
	Reorder the models in the call hierarchy.

2023-09-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Run external <q-out> events through component queue.
	This removes long standing shortcut for executing external events.

	* dzn/vm/util.scm (label->string): Handle <q-out>.
	(trigger-in-q?): New procedure.
	* dzn/vm/report.scm (pc-event? <runtime:port> <q-in>,
	pc-event? <runtime:component> <q-in>,
	pc->event <runtime:component> <q-in>,
	pc->arrow <runtime:port> <q-in>): New methods.
	(pc-event? <runtime:component> <q-out>): Make unobservable for external port .
	(pc-arrow? <runtime:component> <q-in>): Remove.
	(complete-split-arrows-pcs): Also complete q-in event.
	* dzn/vm/run.scm (run-external-modeling)[event-executed]: New inner
	function.  Use it to filter traces.
	(run-external-q): Instead of running <q-out> trigger from external-q
	directly on component, create <q-in> and enqueue it in component.
	(run-requires-flush): New method, factored-out from...
	(run-requires): ...here.
	(run-to-completion*): Use it to flush <q-in> in component queue.
	* dzn/vm/compliance.scm (check-provides-compliance): Cater for trigger
	in system.
	* dzn/vm/step.scm (begin-step): Cater for blocked rtc pc without instance.
	* dzn/explore.scm (process-external): Likewise.
	* test/all/compliance_external_inevitable/baseline/simulate.out:
	test/all/illegal_external_inevitable/baseline/simulate.out:
	test/all/illegal_external_requires_twice/baseline/simulate.out:
	test/all/illegal_external_requires_twice2/baseline/simulate.out:
	test/all/illegal_pessimism_external/baseline/simulate.out:
	test/all/semantics/baseline/semantics.org: Update baseline.

	Co-authored-byy: Rutger van Beusekom <rutger@dezyne.org>.

2023-09-27  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Whitespace fixes.
	* dzn/vm/run.scm (run-to-completion*): Add newline before straddling <>.
	Throughout, remove inline extra space.

2023-09-21  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Initialize meta name defaults for port and component.
	* dzn/code/scmackerel/c++.scm
	(component-model->sm:statements-unmemoized,
	system->sm:statements-unmemoized,
	shell-system->sm:statements-unmemoized): Replace "" with name.
	* test/all/LegoBallSorter/main.cc,
	test/all/blocking_binding/main.cc,
	test/all/blocking_double_release/main.cc,
	test/all/blocking_multiple_provides2/main.cc,
	test/all/blocking_multiple_provides3/main.cc,
	test/all/blocking_release/main.cc,
	test/all/blocking_shell/c++/main.cc,
	test/all/blocking_system_diamond/main.cc,
	test/all/calling_context/main.cc,
	test/all/collateral_blocking_backdoor/main.cc,
	test/all/collateral_blocking_bridges/main.cc,
	test/all/collateral_blocking_double_release/main.cc,
	test/all/collateral_blocking_multiple_provides/main.cc,
	test/all/collateral_blocking_multiple_provides0/main.cc,
	test/all/collateral_blocking_release/main.cc,
	test/all/collateral_blocking_reorder/main.cc,
	test/all/collateral_blocking_reorder_parallel/main.cc,
	test/all/collateral_blocking_shell/main.cc,
	test/all/collateral_blocking_shell2/main.cc,
	test/all/collateral_double_blocked/main.cc,
	test/all/data_full/main.cc,
	test/all/defer_data/main.cc,
	test/all/double_collateral_blocking_shell/main.cc,
	test/all/exception_wrappers/c++/main.cc,
	test/all/foreign_optional/c++/main.cc,
	test/all/foreign_requires/c++/main.cc,
	test/all/hello_check_bindings/main.cc,
	test/all/pump_twice/main.cc,
	test/all/shared_glue/main.cc,
	test/all/space.wostream/main.cc,
	test/all/sync_out_reply_binding/main.cc,
	test/all/system_check_bindings/main.cc,
	test/all/wostream/main.cc: Replace explicit meta names by default meta
	names.

2023-09-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add closed_system_foreigns.
	* test/all/closed_system_foreigns/closed_system_foreigns.dzn: New test.
	* test/all/closed_system_foreigns/world.hh,
	test/all/foreign_only/foreign.hh: Foreign implementations for C++.
	* test/all/closed_system_foreigns/META: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	c++: Cater for closed system with foreigns.
	* dzn/code/scmackerel/c++.scm (system->sm:statements-unmemoized): Skip
	generate instance assignments for instances only bound to an interal
	requires port.

2023-09-21  Rutger van Beusekom  <rutger@dezyne.org>

	test: Use name defaults for shared_glue system and ports.
	* test/all/shared_glue/main.cc (main): Remove explicit name string
	assignements.

	c++: Use component type as default for the instance name.
	* dzn/code/scmackerel/c++.scm
	(component-model->sm:statements-unmemoized,
	system->sm:statements-unmemoized,
	shell-system->sm:statements-unmemoized): Replace "" with name.

	c++: Remove overwriting event slots, fixes check_bindings.
	* dzn/code/scmackerel/c++.scm (system->sm:statements-unmemoized): Remove
	trigger->event-slot and its usage.

	test: Add queuefull_constraint_defer.
	* test/all/queuefull_constraint_defer: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	vm: Fix interface-constrained defer with queue-full.
	* dzn/vm/compliance.scm (zip): Prioritize constraining illegals over
	defer queue full.

2023-09-20  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Flush after defer.
	* dzn/vm/run.scm (run-defer-event): Run flush unless collateral'ly-blocked.

2023-09-18  Janneke Nieuwenhuizen  <janneke@gnu.org>

	verify: Switch to perfect-funcq for memoization.
	* dzn/verify/pipeline.scm (root+model->makreel): Use perfect-funcq
	instead of pure-funcq.
	(memoizing-verify-pipeline): Likewise.

2023-09-20  Paul Hoogendijk  <paul@dezyne.org>

	Switch to perfect-funcq for memoization.
	* dzn/ast/lookup.scm (ast:perfect-funcq): Bump hash table to 1024.
	Throughout, use ast:perfect-funcq.

	lookup: Cater for DAG instead of tree in variable lookup.
	* dzn/ast/lookup.scm: (ast:lookup-variable) Add local funcion path->key
	and replace root of node by its path.

2023-08-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	goops: Have clone always return a fresh object.
	* dzn/ast/util.scm (clone-base): Always return a fresh object.

2023-09-20  Paul Hoogendijk  <paul@dezyne.org>

	Add test reuse_body.
	* test/all/reuse_body/reuse_body.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-09-19  Rutger van Beusekom  <rutger@dezyne.org>

	test: blocking_shell: Fix instability.
	* test/all/blocking_shell/c++/main.cc (main): Add missing mutex, fixes
	error under load.

	test: Add shared_type_lookup.
	* test/all/shared_type_lookup/shared_type_lookup.dzn,
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	lookup: Fix .type lookup for <shared-field-test>.
	* dzn/ast/lookup.scm (.type): Remove searching for shared state variable
	type in the component behavior.

	test: Add shared_state_defer.
	* test/all/shared_state_defer/shared_state_defer.dzn,
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* test/all/shared_state_defer/trace: Add trace.

	test: Add shared_glue.
	* test/all/shared_glue/shared_glue.dzn,
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* test/all/shared_glue/trace: Add trace.
	* test/all/shared_glue/main.cc: Add handwritten main.

	test: Add system_shared_glue.
	* test/all/system_shared_defer/system_shared_defer.dzn,
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* test/all/system_shared_defer/trace: Add trace.

2023-09-18  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Fix updating unbound provides port.
	* runtime/c++/dzn/runtime.hh (wrap_out): Move component->dzn right after
	enqueued out event execution, instead of after enqueueing but before
	execution.

2023-09-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c++: Add another missing this->.
	This is a follow-up to commit
	    7eb00448d008be3766c4ba617c7b9fa79259cc67
	    c++: Introduce foreign skeleton helper method for out events.

	* dzn/code/scmackerel/c++.scm
	(component-model->sm:statements-unmemoized): Add
	missing (%member-prefix).  Also use code:event-name and
	code:event-slot-name instead of inline name assembly.

2023-09-15  Paul Hoogendijk  <paul@dezyne.org>

	test: wf_functionTailRecursion: Add check for non-tail recursive call.
	* test/all/wf_functionTailRecursion/wf_functionTailRecursion.dzn
	(Intf11): Check that non-recursive, non-tail call does not produce
	error.
	* test/all/wf_functionTailRecursion/baseline/verify.err: Update baseline
	because of extra copyright line in header.

	wfc: In recursive function, allow statement after non-recursive call.
	* dzn/ast/wfc.scm (tail-recursion): Also check that called function is
	recursive.

2023-09-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: wf_functionTailRecursion: Two more checks for statement after return.
	* test/all/wf_functionTailRecursion/wf_functionTailRecursion.dzn: Check
	for void return after tail recursive call, and for statement after that.
	* test/all/wf_functionTailRecursion/baseline/verify.err: Update baseline.

	wfc: Allow void return after retursive tail call.
	* dzn/ast/wfc.scm (tail-recursion): Do not warn if last continuation
	statement is a return, and has no continuation itself.

2023-09-15  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add parse_defer_shared.
	* test/all/parse_defer_shared/parse_defer_shared.dzn: Add model.
	* test/all/parse_defer_shared/baseline/verify.err: Add error baseline.
	* test/all/local.mk (PARSER_TESTS): Add test.

	wfc: Add well-formedness check for defer capture of shared state.
	* dzn/ast/wfc.scm (wfc-defer-argument): Add <shared> cond case.

2023-09-12  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add unreachable_multiple_provides.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* test/all/unreachable_multiple_provides/unreachable_multiple_provides.dzn:
	Add it.
	* test/all/unreachable_multiple_provides/baseline/verify.err,
	test/all/unreachable_multiple_provides/baseline/verify.out: Add baseline.

	verify: Do not skip compliance check if only unreachable error.
	* dzn/verify/pipeline.scm (report-fail): Let report-fail return #f if
	unreachable?

2023-09-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	runtime :c++: Whitespace fixes.
	* runtime/c++/dzn/runtime.hh (runtime_wrapper): Remove gratuitous braces.
	(call_out): Remove extra space.

2023-09-11  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Require all tasks to be idle at thread pool destruction.
	* runtime/c++/thread-pool.cc (pool::~pool): Add destructor; abort upon error.
	(task::tastk~): Once more, join instead of detach.

2023-09-09  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Help help2man generate reproducible man-pages.
	* Makefile.am (SOURCE_DATE_EPOCH): New variable.

2023-09-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.18.0.rc6.
	* guix/pack/dezyne.scm (dezyne): Update to 2.18.0.rc6.

2023-09-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ANNOUNCE-2.18.0'.
	* doc/announce/ANNOUNCE-2.18.0: Update from NEWS.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.18.0 since 2.17.3): Mention installation of headers
	and libdzn, libdnz-c++ libraries and std:async.cc, thread-pool.  Remove
	delayed parser refactoring.

2023-09-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Ensure generated file reproducibility for dist.
	* Makefile.am (override $(srcdir)/doc/stamp-vti): New target override.
	(man-clean): New target.
	(auto-clean): Depend on it in new target.
	(dist-hook): Depend on it.

2023-09-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: When uninstalled, use .scm from %load-path for languages list.
	This fixes source tarball reproducibility of doc/dzn-code.1.

	* dzn/commands/code.scm (list-languages): Look at .scm files instead of
	.go files when DZN_UNINSTALLED.

2023-09-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: When uninstalled, use .scm from %load-path for commands list.
	This fixes source tarball reproducibility of doc/dzn.1.

	* dzn/script.scm (parse-opts)[list-commands]: Look at .scm files instead
	of .go files when DZN_UNINSTALLED.

2023-09-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Update .mailmap
	* .mailmap: Add duplicated addresses.

2023-09-07  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Detach living threads at pool destruction.
	* runtime/c++/thread-pool.cc (pool::tasks_): Replace shared_ptr with
	unique_ptr.
	(pool::con_): Remove.
	(pool::~pool): Remove.
	(pool::async): Replace push_back with emplace_back.
	(pool::capacity): Rename to...
	(pool::size) ...this.
	(dzn::thread_pool_size): Use it in new function to retrieve the thread
	pool size.
	(pool::idle): Remove condition_variable notify.
	(task::~task): Detach instead of join.
	(task::self): Make private.
	(task::worker): Likewise.  Move lock.lock() before moving the task into #
	the idle queue and resolving the promise.
	(dzn::thread_pool): New function that extracts the creation and access
	to the singleton thread pool.
	(dzn::async): Use it in new function.

2023-09-06  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Make thread-pool usage link-time switchable.
	Move dzn::thread::defer definition into a source file.

	* build-aux/config.make.in (DZN_THREAD_POOL): Remove.
	* runtime/c++/dzn/config.hh.in: Likewise.
	* configure.ac: Do not substitute it.
	* runtime/c++/dzn/context.hh (dzn::thread::defer): Move to ...
	* runtime/c++/dzn/async.hh: ...this new file, and...
	* runtime/c++/std-async.cc: ...this new file.
	* runtime/c++/thread_pool.cc: Rename to...
	* runtime/c++/thread-pool.cc: ...this.
	* runtime/local.mk (dist_runtime_cxx_DATA): Update accordingly.
	(%C%_libdzn_c___la_SOURCES): Use either std-async.cc or thread-pool.cc,
	depending on dzn_thread_pool conditional.
	(dist_runtime_cxx_dzn_DATA): Add dzn/async.hh.

2023-09-06  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Use dzn::thread::defer in pump.
	It has been observed that std::async has arbitrary limits on some
	microsoft systems.  The dzn::thread::pool has no arbitrary limits,
	except for being limited by the available system resources.

	* runtime/c++/pump.cc (pump::pump): Replace std::async with
	dzn::thread::defer indirection that allows switching between std::async
	and the dzn::thread::pool.

2023-09-05  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add system_foreign_only.

	test: Add foreign_only.
	* test/all/foreign_only: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	c++: Introduce foreign skeleton helper method for out events.
	* dzn/code/scmackerel/c++.scm (component-model->sm:statements-unmemoized)
	[out->method]: New procedure to generate foreign skeleton helper
	methods.

2023-09-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Check for std::mutex.
	* configure.ac: Check for <mutex> and std::mutex.
	* runtime/local.mk: Only build library when we have mutex.

2023-09-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Do not remove meta-events from component ouput trail for C++.
	* dzn/commands/trace.scm (parse-opts): Add -m,--meta.
	(main): Pass it as #:meta? to...
	* dzn/trace.scm (trace:format-trace): ...here.  Add new keyword
	parameter #:meta? and pass it to...
	(steps->trail): ...here.  Likewise, add new keyword parameter #:meta?
	and keep any meta-event when set.
	* test/dzn/dzn.scm (run-execute): Use it to keep meta-events.  Do not
	remove flush from the input trail.
	* doc/dezyne.texi (Invoking dzn trace): Document it.

	c++: Reformat <illegal> handler message.
	* runtime/c++/dzn/locator.hh (illegal): Rename msg parameter to
	location.  Output location first.
	* runtime/c++/dzn/container.hh (container): Likewise, also add dummy
	zero column.

	build: Install `hello' and `cruise-control' as examples.
	* test/all/local.mk (dzn_exampledir, nodist_dzn_example_DATA): New
	variables.

	test: cruise-control: Rename from cruise_control.
	* test/all/cruise_control: Rename to...
	* test/all/cruise-control: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: Support using `-' in test name.
	* test/dzn/dzn.scm (file->model): New procedure to translate "-" to "_".
	(run-verify, run-code, run-traces, run-constrained-component,
	run-constrained-no-compliance, run-simulate-trace, run-lts): Use it.

2023-09-04  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: Relax the type strictness on dzn::connect.
	* runtime/c++/dzn/runtime.hh (connect): Rename template parameter Port
	to P for provides and add and use template parameter R for requires.

	c++: Move provides port update, fixes shared_async_provides.
	* runtime/c++/dzn/runtime.hh (call_out): Move port.dzn_update_state ...
	(wrap_out): ...to here as component->dzn_update ...
	* dzn/code/scmackerel/c++.scm (component-model->sm:statements-unmemoized):
	Add dzn_update to component.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized):
	Ignore dzn_state_update in port for empty prefixes.

2023-09-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Add --disable-c++-thread-pool to configure.
	* configure.ac: Add --disable-c++-thread-pool option.
	* build-aux/config.make.in (DZN_THREAD_POOL): New variable.
	runtime/c++/dzn/config.hh.in (DZN_THREAD_POOL): Substitute it.
	* doc/dezyne.texi (Hello World!): Remove -I runtime/c++, replace
	runtime/c++/pump.cc runtime/c++/runtime.cc with -ldzn-c++.

	guix: dezyne: Add boost.
	* guix/pack/dezyne.scm (dezyne)[inputs]: Add boost.

	doc: Mention boost as optional dependency.
	* README (Requirements): Mention boost.
	* doc/dezyne.texi (Requirements): Likewise.
	:

	build: Check for boost-coroutine.
	* build-aux/ax_pthread.m4: New file.
	* runtime/c++/dzn/config.hh.in: New file.
	* runtime/local.mk (dist_noinst_DATA): Add it.
	* configure.ac: Substitute it to config.hh.  Check for boost-coroutine
	and poix threads.
	* runtime/local.mk (dist_noinst_DATA): Add it.
	* runtime/c++/dzn/container.hh,
	runtime/c++/dzn/context.hh,
	runtime/c++/dzn/coroutine.hh,
	runtime/c++/dzn/meta.hh.in,
	runtime/c++/dzn/locator.hh,
	runtime/c++/dzn/meta.hh.in,
	runtime/c++/dzn/pump.hh,
	runtime/c++/dzn/runtime.hh: Include it.
	* build-aux/config.make.in (HAVE_BOOST_COROUTINE, LIBBOOST_COROUTINE,
	PTHREAD_CFLAGS): New variables.
	* test/lib/build.c++.make (LIBPTHREAD): Remove.
	(TEST_CXXFLAGS): Add $(PTHREAD_CFLAGS).
	(DEFINES): Remove.
	(LDFLAGS): Add $(LIBBOOST_COROUTINE).

2023-09-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Silence configure warnings from setting C*FLAGS defaults.
	* configure.ac: Prefix CFLAGS, CXXFLAGS default with `:'.

2023-09-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_system_diamond: Avoid conflict with standard library.
	* test/all/blocking_system_diamond/blocking_system_diamond.dzn (fork):
	Rename to ...
	(fork_event): ...this.

	doc: Mention libtool dependency.
	* README (Requirements): Mention libtool.
	* doc/dezyne.texi (Building from Git): Likewise.

	build: Build and install C and C++ headers and libraries.
	TODO
	  * pkg-config files for libdzn, libdzn-c++?
	  * remove installation in share/dezyne/runtime/?

2023-09-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	runtime: c++: Resurrect using boost-coroutine.
	This is a follow-up to commit
	    c++: pump: Add pause, resume and flush.
	    99040605bbc9ef97a928f9f37190c48758cf2b1a

	* runtime/c++/pump.cc: Include <thread>.

2023-09-02  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to using g-expressions.
	* gnu/packages/dezyne.scm (dezyne)[arguments]: Change assoc-ref memes to
	use gexps.

2023-09-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: scmackerel: Update synopsis, description and home-page.
	* guix/pack/scmackerel.scm (scmackerel)[synopsis, description,
	home-page]: Update.
	[arguments]: Change assoc-ref memes to use gexps.

2023-08-04  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Add cruise-control to shared state doc.
	* doc/examples/cruise-control-interfaces.dzn,
	doc/examples/cruise-control.dzn: New files.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Add them.
	* doc/dezyne.texi (Interface Contracts): Reword shared state, document
	user defined properties referring to the cruise_control example.

2023-09-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	scmackerel: Cleanups, remove dead code.
	* dzn/code/scmackerel/c++.scm
	(component-model->sm:statements-unmemoized): Rename sm:call-slot to
	call-slot.  Renmae sm:call-out to call-out.
	(system->sm:statements-unmemoized): Use let instead of let*.  Remove
	unused sm:call-action.
	(shell-system->sm:statements-unmemoized): Remove commented code.
	* dzn/code/scmackerel/c.scm (interface->sm:statements-unmemoized): Use
	let instead of let*.
	* dzn/code/scmackerel/cs.scm (component-model->statements): Rename
	sm:call-slot to call-slot.  Renmae call-in/out to call-in/out.
	(shell-system->statements): Rename sm:call-pump to call-pump.
	(main-connect-ports): Rename sm:call-out to call-out.

	c: Fix dzn_getopt signature.
	* dzn/templates/c/main.c (dzn_getopt): Use char const* argv[].

2023-09-01  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shadow_port2.

2023-09-01  Janneke Nieuwenhuizen  <janneke@gnu.org>

	cs: Add missing this..
	* dzn/code/language/makreel.scm (root->): Set %member-prefix.
	* dzn/code/scmackerel/cs.scm (ast->code <action>): Disambiguate
	port.name and action.name using (%member-prefix).
	* dzn/code/scmackerel/code.scm (ast->code <action>): Likewise.

2023-09-01  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Add missing this->.
	* dzn/code/scmackerel/c++.scm (ast->code <action>): Disambiguate
	port.name and action.name using (%member-prefix).

2023-08-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Update `INSTALL'.
	* INSTALL: New upstream copy.

	guix: Bump canonical commit to 10f3dd0e9e06d71d1bc1615c6a60cc3aa1ad1ff4.
	* guix.scm: Update to 10f3dd0e9e06d71d1bc1615c6a60cc3aa1ad1ff4.

2023-09-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Use guile-3.0 instead of guile-3.0-next.
	* guix/pack/dezyne.scm (dezyne)[inputs, native-inputs]: Use guile-3.0.
	(%source-dir, guile-3.0-latest): Remove.

	test: parse-flags: Cater for guile-3.0.9-0.c2cba86.
	* test/all/parse-flags/parse.sh (pretty2line): New function.  Use it
	throughout and squash pretty-printed s-expressions into single line
	to avoid exposing changes in 3.0.9-0.c2cba86's pretty-print.
	* test/all/parse-flags/baseline/parse.out,
	test/all/parse-flags/baseline/parse.err: Update baseline.

	test: parse_locations: Cater for guile-3.0.9-0.c2cba86.
	* test/all/parse_locations/run (base): Avoid using long file-name that
	exposes a change in 3.0.9-0.c2cba86's pretty-print.
	* test/all/parse_locations/baseline/parse.out: Update baseline.

2023-09-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	normalize: Remove guile-3.0.8-ism.
	This is a follow-up to commit
	    17e882959de01f637ad212a9a053b9d1071e7b40
	    normalize: Also tag statement after return.

	* dzn/ast/normalize.scm (tag-imperative-blocks): Add extra let to
	support building with earlier versions of guile.

2023-08-31  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.18.0.rc5.
	* guix/pack/dezyne.scm (dezyne): Update to 2.18.0.rc5.

2023-08-29  Rutger van Beusekom  <rutger@dezyne.org>

	dzn: Fix printing of type for <event>, <function>.
	* dzn/code/language/dzn.scm (print-ast <event>, print-ast <function>):
	Use print-type instead of print-ast for type.

	makreel: Remove conflicting print-ast.
	* dzn/code/language/makreel.scm (print-ast <shared-var>,
	print-ast <shared-field-test>): Remove.

2023-08-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c++: Rename <shared-transition>'s #:skip field to #:rtc? and flip.
	* dzn/code/goops.scm (<shared-transition>)[skip]: Rename to...
	[rtc?]: ...this, and change initial value.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized):
	Update accordingly.

2023-08-29  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Add missing makreel:shared-process-arguments specialization.
	* dzn/code/scmackerel/makreel.scm
	(makreel:shared-process-arguments <action-reply>): New specialization.

	test: Add shared_blocking_race.
	* test/all/shared_blocking_race/shared_blocking_race.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add shared_block.
	* test/all/shared_block/shared_block.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-08-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c++: Resurrect qout event trace.
	This is a follow-up to commit
	    12c9a33c6d34d8ed93e8e417406228e2d6b2d1f4
	    c++: Move tracing into runtime.

	* runtime/c++/dzn/runtime.hh (wrap_out): Add trace_qout.

2023-08-29  Rutger van Beusekom  <rutger@dezyne.org>

	test: constraint_modeling_nondet: Extend with additional action.
	* test/all/constraint_modeling_nondet/constraint_modeling_nondet.dzn:
	Add an additional action with an overlapping name.

	c++: Fix and refactor skipping non-rtc prefixes.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized):
	[remove-non-matching-node]: Rename inner define to...
	[non-rtc-transitions]: ...this; move and refactor the body of
	event->transitions into it; document it.

2023-08-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add shared_nondet.
	* test/all/shared_nondet/shared_nondet.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	c++: Use code:prefix-equal? for de-duplicating transitions.
	* dzn/code/goops.scm (code:prefix-equal?): New method.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized): Use
	it instead of inline lambda.  Use it in delete-duplicates to avoid
	duplicate case labels.

2023-08-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	makreel: Remove gratuitous sm: prefix.
	This is a follow-up to commit
	    3435238c1c9e0b2e3520eba971ba39189e6accb1
	    code: Update for scmackerel-0.4.

	* dzn/code/scmackerel/makreel.scm (%sm:internal-action): Rename to...
	(%internal-action): ...this.
	Update users.

2023-05-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid crash on truncated strict trail.
	* dzn/vm/run.scm (run-to-completion-unmemoized): Robustify against
	truncated trail.

2023-08-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Bump scmackerel requirement to 0.5.2.
	* README (Requirements): Bump to 0.5.2.
	* configure.ac: Likewise.
	* doc/dezyne.texi (Requirements): Likewise.

2023-08-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Revert "code: Avoid dangling guarded if."
	This is now handled by scmackerel-0.5.2.

	This reverts commit 659c18ff03f4e58d4bbd165d47555c5d8f548d4e.

2023-08-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: scmackerel: Update to 0.5.2.
	* guix/pack/scmackerel.scm (scmackerel): Update to 0.5.2.

2023-08-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	verify: Remove dead code.
	This is a follow-up to commit
	    5604cccf8044515e713a9defadec3024cb0826f5
	    verify: Move unreachable tags from command-line to pipeline.

	* dzn/verify/pipeline.scm (model-tags): Remove.

2023-08-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Use dzn_getopt to avoid clash with system getopt.
	* dzn/code/scmackerel/c++.scm (main-getopt): Use "dzn_getopt".
	* dzn/code/scmackerel/c++.scm (main): Update accordingly.
	* dzn/templates/c/main.c (getopt): Rename to...
	(dzn_getopt): ...this.
	* dzn/code/scmackerel/c.scm (main): Update accordingly.
	* dzn/code/scmackerel/cs.scm (main-getopt): Use "dzn_getopt".
	(main): Update accordingly.

2023-08-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: Cater for rc tarballs.
	* guix/pack/dezyne.scm (dezyne)[source]: Download "RC" tarballs from the
	kluit.

2023-08-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.18.0.rc4.
	* guix/pack/dezyne.scm (dezyne): Update to 2.18.0.rc4.

	test: Add hello_guard_if.
	* test/all/hello_guard_if: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

	code: Avoid dangling guarded if.
	* dzn/code/scmackerel/c++.scm (ast->code <guard>): Wrap <if> in compound.
	* dzn/code/scmackerel/c.scm (ast->code <guard>): Likewise
	* dzn/code/scmackerel/code.scm (ast->code <guard>): Likewise.

2023-08-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.18.0.rc3.
	* guix/pack/dezyne.scm (dezyne): Update to 2.18.0.rc3.

2023-08-17  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add system_import_foreign.
	* test/all/system_import_foreign/system_import_foreign.dzn,
	test/all/system_import_foreign/ihello.dzn,
	test/all/system_import_foreign/hello0.dzn,
	test/all/system_import_foreign/hello1.dzn,
	test/all/system_import_foreign/c++/Hello0.hh,
	test/all/system_import_foreign/c++/Hello1.hh
	test/all/system_import_foreign/META: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	c++: Fix missing to_string compilation error.
	* dzn/code/scmackerel/c++.scm (model->header-statements): Remove
	runtime.hh include dependency from foreign headers.

2023-08-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Move guile libraries to propagated-inputs.
	* guix/pack/dezyne.scm (dezyne)[inputs]: Move guile-json-4,
	guile-readline, and scmackerel to...
	[propagated-inputs]: ...this new field.

2023-08-15  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_calls.
	* test/all/defer_calls/defer_calls.dzn: Add it.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-08-16  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Fix incomplete makreel for defer in uncalled function.
	* dzn/code/language/makreel.scm (makreel:defer*-unmemoized): Require the
	parent function containing a defer to be called.

2023-08-15  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shadow_shared_enum.
	* test/all/shadow_shared_enum/shadow_shared_enum.dzn: Add it.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	ast: Fix <shared> equality.
	* dzn/ast/goops.scm (<shared-field-test>): Change base class order to
	prefer <shared> over <field-test>, thereby correcting the dispatch
	priority for ast:equal?
	(<field-test>)[variable.name]: Rename field to...
	[name]: ...this.
	(.variable.name <field-test>): Add a specialization for backwards
	compatibility.
	(dzn): Export it.
	* dzn/ast/parse.scm (parse:tree->ast): Construct <field-test> and
	<shared-field-test> using #:name instead of #:variable.name.
	* dzn/ast/equal.scm (ast:equal? <shared>): Replace <shared-reference>
	with <shared>,
	(ast:equal? <field-test>): Replace ast:equal? with equal?.

2023-08-11  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add enum_only.
	* test/all/enum_only/enum.dzn: Add it.
	* test/all/enum_only/enum_only.dzn: Add it.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-08-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c: Generate a source file for to and from enum string.
	* dzn/code/language/c.scm (c:generate-source?): Replace ast:model**
	with ast:top** and add (is? <enum>) to the disjoin to generate a
	corresponding souce file for a dzn file with only enum(s).

2023-08-11  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Generate a source file for to and from enum string.
	* dzn/code/language/c++.scm (c++:generate-source?): Replace ast:model**
	with ast:top** and add (is? <enum>) to the disjoin to generate a
	corresponding souce file for a dzn file with only enum(s).

2023-08-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Add ast:type** for <interface> too.
	* dzn/ast/accessor.scm (ast:type** <interface>): New specialization.
	* dzn/code/legacy/code.scm (code:enum-definer): Use it.
	* dzn/code/scmackerel/makreel.scm (interface-types->scmackerel,
	interface->scmackerel-unmemoized): Likewise.

	ast: Add recursive accessors ast:top**, ast:model**, ast:type**.
	* dzn/ast/accessor.scm (ast:top**): New recursive accessor.
	(ast:namespace-recursive*): Use it to refactor, and rename to...
	(ast:namespace**): ..this.
	(ast:model*): Likewise, rename to...
	(ast:model**): ...this.
	(ast:type*): Likewise, rename to...
	(ast:type**): ...this.
	(ast:model*, ast:type*): New, non-recursive accessors.
	Update users throughout.

2023-08-10  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.18.0.rc2.
	* guix/pack/dezyne.scm (dezyne): Update to 2.18.0.rc2.

2023-08-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ANNOUNCE-2.18.0'.
	* doc/announce/ANNOUNCE-2.18.0: Update NEWS section.

2023-07-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.18.0 since 2.17.3): Mention -T,--timings option,
	non-determinstic constraint deadlock fix, and --f,--fall-back parser,
	discontinued dotted inline namespace support, unreachable crosstalk fix,
	test runner --t,--timeout, the C++ dzn_share_p boolean, dzn::connect,
	pretty printing synthesized ASTs, defer-induced <queue-full>, C++20
	capture lists, quadratic lookup of unknown, and removal of verify tags
	from the lts command-line.

2023-08-10  Paul Hoogendijk  <paul@dezyne.org>

	verify: Move unreachable tags from command-line to pipeline.
	This makes hitting Microsoft's arbitrary command-line limit somewhat
	less likely, when using the unreachable code check, which is enable by
	default.

	* dzn/commands/lts.scm (parse-opts): Remove --unreachable, add --tags.
	(main): When --tags, show tags in LTS.
	[report-unreachable-check]: Remove inner define, move unreachable check
	to...
	* dzn/lts.scm (lts->tags): New procedure.
	* dzn/verify/pipeline.scm (model->tags,
	get-tags): New procedures.
	(assert-unreachable): Refactor.
	(report-fail): Update accordingly.
	(result-split): Un-nest two levels of splitting.
	(mcrl2:verify-interface-asserts): Add reporting of unreachable code.
	(mcrl2:verify-component-asserts): Likewise.

2023-07-29  Janneke Nieuwenhuizen  <janneke@gnu.org>

	makreel: Fix defer-induced <queue-full> for using defer after call.
	This fixes a defer-induced function stack unwinding bug.

	* dzn/code/scmackerel/makreel.scm (return-processes): Remove test for
	<defer>.

2023-07-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_cxx20.
	* test/all/hello_cxx20: New test.

	build: Make CFLAGS configurable, and overridable from environment.
	* configure.ac (CFLAGS): Add default.
	* build-aux/config.make.in (CFLAGS): New variable.
	* test/lib/build.c++.make (CFLAGS): Rename to ...
	(TEST_CFLAGS): ...this, and use it, also use,...
	(DEPEND_CFLAGS): this new new variable.
	($(OUT)/%.o): Add TEST_CFLAGS.
	($(OUT)/test): Likewise.

	build: Make CXXFLAGS configurable, and overridable from environment.
	* configure.ac (CXXFLAGS): Add default.
	* build-aux/config.make.in (CXXFLAGS): New variable.
	* test/lib/build.c++.make (CXXFLAGS): Rename to ...
	(TEST_CXXFLAGS): ...this, and use it, moving -pthread and dependency
	flags out to...
	(LIBPTHREAD): ...this new variable, and ...
	(DEPEND_CXXFLAGS): ..this new variable.
	($(OUT)/%.o): Add TEST_CXXFLAGS.
	($(OUT)/test): Likewise.

2023-07-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Support META `model' flag.
	The new `model' flag in META can be used to override the name of the
	test's model, whereas the old `model' flag--now `component'--is used
	for traces and verify system->component trickery in the absence of
	system traces.

	* test/dzn/dzn.scm (model?): New procedure.
	(compenent?): Use it as fall-back.
	(run-code, run-simulate-trace): Use it to solve long-standing FIXME.

2023-07-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Rename METAs `model' flag to `component'.
	The old `model' flag--now `component'--is used for traces and verify
	system->component trickery in the absence of system traces.

	* test/dzn/dzn.scm (model?): Rename to...
	(compenent?): ...this, and update flag to 'model.
	(component-unset?): Rename to ...
	(model-unset?): ...this, and update flag to 'model.
	(run-verify, run-code, run-traces, run-constrained-component,
	run-constrained-no-compliance, run-simulate-trace, run-lts): Update
	callers.

2023-07-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Pass arguments to custom run script.
	* test/bin/run.in (main): Pass bin/run args to custom `run' script.

	test: Whitespace.
	* test/dzn/dzn.scm (run-constrained-component,
	run-constrained-no-compliance): Break long lines.

	test: Cater for empty select.
	* test/dzn/dzn.scm (get-strings-all): Continue when nothing is ready.

2023-07-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Switch to SCMackerel's indent.
	* dzn/code/language/c++-exception-wrappers.scm,
	dzn/code/language/c++.scm,
	dzn/code/language/c.scm,
	dzn/code/language/cs.scm,
	dzn/code/language/dzn.scm,
	dzn/code/language/javascript.scm,
	dzn/code/language/scheme.scm,
	dzn/code/scmackerel/c.scm: Use sm:indenter instead of...
	* dzn/code/util.scm (code:indenter): this; remove now unused procedure.
	* dzn/indent.scm: Remove file.
	* dzn/local.mk (dist_%C%_scm_DATA): Unregister it.

	doc: Bump required SCMackerel version to 0.5.1.
	* README (Requirements): Bump to 0.5.1.
	* doc/dezyne.texi (Requirements): Likewise.

	build: Check for SCMackerel sm:indent.
	* configure.ac: Add check for sm:indent in (scmackerel indent).

2023-07-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: scmackerel: Update to 0.5.1.
	* guix/pack/scmackerel.scm (scmackerel): Update to 0.5.1.

2023-07-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: scmackerel: Update to 0.5.
	* guix/pack/scmackerel.scm (scmackerel): Update to 0.5.

2023-07-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	normalize: Remove obsolete transformations.
	* dzn/ast/normalize.scm (normalize:state, normalize:state+illegals): Remove
	call to triples:fix-empty-interface.
	(triples:fix-empty-interface, triples:on-compound, is-data?): Remove.

2023-07-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: parse_fall_*: Replace copied files with symlinks.
	The few fall_back tests that still remain use verbatim copies of
	previous parse tests, only rewriting them to claim exclusive copyright.

	* test/all/parse_fall_back_import_path/component.dzn,
	test/all/parse_fall_back_import_path/interface.dzn,
	test/all/parse_fall_back_import_path/parse_fall_back_import_path.dzn:
	Replace with symlinks to ../parse_import_path/.

	* test/all/parse_fall_back_import_self/parse_fall_back_import_self.dzn:
	Replace with symlink to ..parse_import_self/.

	* test/all/parse_fall_back_non_existent_import/parse_fall_back_non_existent_import.dzn:
	Replace with symlink to ../parse_non_existent_import/.

	test/all/parse_fall_back_out_binding_argument/parse_fall_back_out_binding_argument.dzn
	Replace with symlink to ../parse_out_binding_argument/.

	* test/all/parse_fall_back_preprocessed_foo/foo.dzn:
	Replace with symlink to ..parse_preprocessed_foo/.

	* test/all/parse_fall_back_preprocessed_imported_bar/bar.dzn,
	test/all/parse_fall_back_preprocessed_imported_bar/foo.dzn:
	Replace with symlinks to ..parse_preprocessed_imported_bar/.

	* test/all/parse_fall_back_preprocessed_imported_baz/bar.dzn,
	test/all/parse_fall_back_preprocessed_imported_baz/baz.dzn,
	test/all/parse_fall_back_preprocessed_imported_baz/foo.dzn:
	Replace with symlink to ..parse_preprocessed_imported_baz/.

	* test/all/parse_fall_back_syntax/parse_fall_back_syntax.dzn:
	Replace with symlink to ..parse_syntax/.

2023-07-26  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Move port connect function into dzn namespace.
	* dzn/code/scmackerel/code.scm (code:binding->connect): Add #:name
	parameter.
	* dzn/code/scmackerel/c++.scm (c++:binding->connect): Use it in new
	function to change connect call name to "dzn::connect".
	(system->sm:statements-unmemoized,
	shell-system->sm:statements-unmemoized): Update callers.
	(interface->sm:statements-unmemoized):
	Remove connect function declaration.
	* runtime/c++/dzn/runtime.hh (connect): Add template version of connect.

	Co-authored-by-by: Janneke Nieuwenhuizen <janneke@gnu.org>

2023-07-25  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Rename dzn_external to dzn_share_p and invert boolean.
	* dzn/code/scmackerel/c++.scm (interface->sm:statements-unmemoized,
	shell-system->sm:statements-unmemoized): Here and synchronize the
	conjuction of its value across binding endpoints to allow disabling it
	from foreign components, also see test/all/iteration.
	* test/all/iteration/list.hh: Update accordingly.

2023-07-24  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Use model-name or a default.
	This is a follow-up to commit
	    be2d880f0e3bf7fad61072e8c0d9d531dcf3244e
	    makreel: Skip unused interface generation.

	* dzn/code/scmackerel/makreel.scm (root->scmackerel): Use ast:get-model
	to get a default model-name if none specified.

2023-08-03  Rutger van Beusekom  <rutger@dezyne.org>

	scmackerel: Support using --T,--timings with shared state.
	This fixes missing "port_" prefix for <shared-var> when generating
	mCRL2 code with shared state.

	* dzn/code/scmackerel/code.scm: Document the root cause.
	* dzn/code/scmackerel/makreel.scm: Rename ast->expression to
	makreel:ast->expression.
	(makreel:ast->expression <top>): Forward to ast->expression (from code).
	(makreel:ast->expression): Specialize for <not>, <binary>, <group>,
	<shared-var>, <shared-variable>, <shared-field-test>.
	* dzn/code/scmackerel/c++.scm: Rename ast->expression to
	c++:ast->expression.
	* dzn/code/scmackerel/c++.scm (c++:ast->expression <top>): Forward to
	ast->expression (from code).
	(c++:ast->expression): Specialize for <not>, <binary>, <group>,
	<shared-var>, <shared-variable>, <shared-field-test>.

2023-07-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Whitespace fixes.
	* test/dzn/language.scm ("on->imported trigger-port"): Remove gratuitous space.

2023-07-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Check for SCMackerel sm:module->mcrl2.
	* configure.ac: Add check for sm:module->mcrl2 in (scmackerel
	processes).

2023-07-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Update for scmackerel-0.4.
	* .dir-locals.el (scheme-mode): Add sm: prefix.
	* dzn/code/scmackerel/c++.scm,
	dzn/code/scmackerel/c.scm,
	dzn/code/scmackerel/code.scm,
	dzn/code/scmackerel/cs.scm,
	dzn/code/scmackerel/makreel.scm: Add sm: prefix.
	* dzn/templates/c++-exception-wrappers.scm (check-bindings-list): Use
	sm:code->string.

2023-07-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: scmackerel: Update to 0.4.
	* guix/pack/scmackerel.scm (scmackerel): Update to 0.4.

	simulate: Cater for <skip>.
	* dzn/vm/step.scm (step <skip>): New specialization.

2023-07-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	makreel: Cater for <skip>.
	* dzn/code/scmackerel/makreel.scm (ast->process <skip>): New specialization.

2023-07-22  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Fix warning.
	* runtime/local.mk (dist_noinst_DATA): Use +=.

2023-07-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Timeout after 5min.
	* test/bin/run.in (parse-opts): Add -t,--timeout.
	(main): Handle it.
	* Makefile.am (RUN_FLAGS): New variable; set --timeout=300.

2023-08-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: Whitespace fixes for triggers, formals and arguments.
	* dzn/code/language/dzn.scm (print-ast <on> print-ast <trigger>,
	print-ast <action>, print-ast <call>): Use ", " infix consistently.

	dzn: Whitespace fix for guard with empty compound.
	* dzn/code/language/dzn.scm (print-ast <guard>): Add missing whitespace
	before empty <compound>.

	dzn: Fix formatting of <subint>.
	* dzn/code/language/dzn.scm (print-ast <subint>): Add space and
	semicolon.

2023-07-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: Fix printing component instance.
	* dzn/code/language/dzn.scm (print-ast <instance>): Print type name
	instead of attempting to print component as a type.

	transform: Expose vm:normalize.
	* dzn/vm/normalize.scm (vm:normalize): Add docstring.
	* dzn/transform.scm: Export it.

2023-07-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add iteration.
	* test/all/iteration: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: injected_foreign: Add a second injected port.
	* test/all/injected_foreign/injected_foreign.dzn (ilog): New interface.
	(hello.l): Use it in new port.
	(Log): Use it in new component.
	(injected_foreign.log): Use it as new instance.
	* test/all/injected_foreign/trace: Update accordingly.

2023-07-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	cs: Remove extraneous '.' before injection locator .set.
	This is a follow-up to commit
	    fcee8a9e658df91ea21ae90bce9a7bebb2050943
	    cs: Generate using SCMackerel.

	* dzn/code/scmackerel/cs.scm (system->statements-unmemoized,
	shell-system->statements-unmemoized): Use "" instead of "." in
	string-join.

2023-07-20  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Remove extraneous '.' before injection locator .set.
	This is a follow-up to commit
	    5185eee93568b1e441c5d066ed8e4be0f2f607d0
	    c++: Generate using SCMackerel.

	* dzn/code/scmackerel/c++.scm (system->statements-unmemoized,
	shell-system->statements-unmemoized): Use "" instead of "." in
	string-join.

2023-07-20  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Add a newline after a statement between dollars.
	* dzn/code/scmackerel/c++.scm (root->header-statements): Append newline
	to data .value.

2023-07-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Split complex_not{0,1,2,3,4,5}.

	test: Split complex_int{0,1,2,3,4}.

	test: Split complex_assign{0,1,2,3,4,5}.

2023-07-20  Rutger van Beusekom  <rutger@dezyne.org>

	verify: Communicate state as needed.
	* dzn/code/scmackerel/makreel.scm (ast->process <behavior>, ast->process
	<on>, assign->sum <variable>, ast->process <action>, ast->process
	<action-reply>, semantics-main, semantics-unblocked, semantics-blocking,
	semantics-skip-blocking, semantics-blocked, semantics-blocked-main,
	semantics-reply, semantics-async): Communicate state for ports that
	actually share state.
	(sum-state-action): New methods.
	(ast->process <on>, ast->process <action>, ast->process <action-reply>,
	semantics-main, semantics-unblocked, semantics-blocking,
	semantics-skip-blocking, semantics-blocked, semantics-reply,
	semantics-blocked-main, semantics-async, component-semantics-processes):
	Use here.
	(ast->process <behavior>): Refactor defer code duplication.
	(component-processes): Remove gratuitous lambda.
	* test/all/livelock_component/baseline/verify.out,
	* test/all/livelock_synchronous/baseline/verify.out: Update livelock
	baselines corresondingly.

2023-07-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add missing_reply.
	* test/all/missing_reply: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	verify: Constraint handle "missing_reply" and "second_reply".
	* dzn/verify/constraint.scm (lts->makreel): [error?]: Add
	"missing_reply" and "second_reply".

2023-07-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: component_missing_reply: Rename from missing_reply.
	* test/all/missing_reply: Rename to...
	* test/all/component_missing_reply: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2023-07-17  Paul Hoogendijk  <paul@dezyne.org>

	test: Add unreachable_crosstalk.
	This reprocudes crosstalk between interfaces and component for
	unreachable tags.

	* test/all/unreachable_crosstalk/ihello.dzn,
	test/all/unreachable_crosstalk/unreachable_crosstalk.dzn,
	test/all/unreachable_crosstalk/baseline/verify.err: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	verify: Prevent interface tag leakage.
	* dzn/code/scmackerel/makreel.scm (ast->process): Make tag a self loop.
	(component-q-processes): Block interface tag.
	(port-processes): Block provides port tag.
	* dzn/lts.scm (remove-tag-loops): New procedure.
	(assert-livelock): To remove interface tags before checking for
	livelock.
	* test/all/compliance_blocking_out/baseline/verify.out,
	test/all/compliance_failures_blocking_race/baseline/verify.out,
	test/all/compliance_fork_blocking_bypass/baseline/verify.out,
	test/all/compliance_fork_provides/baseline/verify.out,
	test/all/compliance_invalid_action/baseline/verify.out,
	test/all/compliance_nonsynchronous_sync/baseline/verify.out,
	test/all/compliance_optional/baseline/verify.out,
	test/all/compliance_provides_out/baseline/verify.out,
	test/all/compliance_sync_action/baseline/verify.out,
	test/all/livelock_iterator/baseline/verify.out,
	test/all/livelock_unfold/baseline/verify.out,
	test/all/match_blocking_race/baseline/verify.out,
	test/all/queuefull_external2/baseline/verify.out: Update baseline
	impact.

2023-07-17  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Remove redundant code for requires processes.
	* dzn/code/scmackerel/makreel.scm (component-defer-processes): Remove procedure.
	(model->scmackerel): Remove usage.
	(component-q-processes): Remove unused let.

2023-07-18  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Remove obsolete template debugging.
	* dzn/code.scm (code:shared-lts-unmemoized): Remove unsetting,
	resetting of DZN_DEBUG_TEMPLATE.

2023-07-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Check for SCMackerel break*.
	* configure.ac: Add check for break* in (scmackerel code).

2023-07-18  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: scmackerel: Update to 0.3.4.
	* guix/pack/scmackerel.scm (scmackerel): Update to 0.3.4.

2023-07-18  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: Support synthesize makreel ASTs.
	This makes the pretty result of

	    dzn --transform=makreel code --language=dzn ...

	even prettier.

	* dzn/code/language/dzn.scm (print-ast <action-reply>,
	print-ast <declarative-illegal>,
	print-ast <defer-end>,
	print-ast <out-bindings>,
	print-ast <shared-variable>,
	print-ast <skip>,
	print-ast <tag>,
	print-ast <the-end>): New specializations.
	* dzn/code/language/dzn.scm (print-ast <defer>): Whitespace fix.

2023-07-18  Janneke Nieuwenhuizen  <janneke@gnu.org>

	wfc: Language DZN supports everything.
	* dzn/ast/wfc.scm (wfc <data>): Add blanket "dzn" support.
	(feature-supported?): Likewise.

	transform: Expose code:normalize, makreel:normalize too.
	* dzn/code/language/makreel.scm (makreel:normalize): Add docstring.
	* dzn/code.scm (code:normalize, code:normalize+determinism): Likewise.
	* dzn/transform.scm: Re-export them.

2023-07-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	normalize: Remove dead code.
	* dzn/ast/normalize.scm (split-complex-expressions)[replace-argument]:
	Remove inner define.
	(add-explicit-temporaries): Remove second match for <defer>.

	dzn: Add missing space after formal direction.

	makreel: Cleanup <call>.

	test: Split complex_arguments{0,1,2,3,4,5}.

2023-07-15  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Runtime timing instrumentation.
	* dzn/timing/instrument.scm: New file.
	* dzn/timing/local.mk: Add it in new file.
	* Makefile.am (ALL_GO): Include it.
	* dzn/script.scm (%time %measure): New variables.
	(run-command): Take options instead of args.  Move
	option parsing to...
	(main): ...here.  Instrument timings when -T,--timings.
	Instead of DZN_REPL environment variabe, use -R,--repl.
	* doc/dezyne.texi (Invoking dzn): Document it.

2023-07-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	makreel: Split SCMackerel gerenation and printing.
	* dzn/code/scmackerel/makreel.scm (root->scmackerel): Return scmackerel.
	(scmackerel:display): New procedure.
	* dzn/code/language/makreel.scm (root->): Update accordingly.

2023-07-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Rename ancient :om to :normalize.
	* dzn/code.scm (code:om-): Rename to...
	(code:normalize-): ...this.
	(code:om): Rename to...
	(code:normalize): ...this.
	(code:om+determinism): Rename to...
	(code:normalize+determinism): ...this.
	* dzn/code/language/c++-exception-wrappers.scm (ast->): Update caller.
	* dzn/code/language/c++.scm (ast->): Likewise.
	* dzn/code/language/c.scm (ast->): Likewise.
	* dzn/code/language/cs.scm (cs:om): Rename to...
	(cs:normalize): ...this.
	(ast->): Update caller.
	* dzn/code/language/makreel.scm (makreel:om): Rename to...
	(makreel:normalize): ...this.
	(ast->): Update caller.
	* dzn/commands/traces.scm (main): Update caller.
	* dzn/commands/verify.scm (main): Update caller.
	* test/dzn/makreel.scm: Update callers.
	* dzn/code/language/scheme.scm (scheme:om): Rename to...
	(scheme:normalize): ...this.  Update caller.
	(ast->): Update caller.

2023-07-14  Rutger van Beusekom  <rutger@dezyne.org>

	dzn: Add -T,--timings to show mCRL2 timings.
	* dzn/script.scm (parse-opts): Add -T,--timings.
	* dzn/verify/pipeline.scm (in-out:lps->lpsconstelm): Change to
	procedure, insert --timings when dzn --timings used.
	(in-out:lps->lpsparelm): Likewise.
	(in-out:lps->aut): Likewise.
	(in-out:lts-hide-internal-labels, in-out:aut->aut-weak-trace,
	in-out:mcrl2->lps, in-out:aut->aut-dpweak-bisim,
	in-out:aut+provides-aut->verify-compliance): Insert --timings when dzn
	--timings used.
	* doc/dezyne.texi (Invoking dzn): Document it.

2023-07-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	timing: Cater for runtime administration.
	* dzn/timing.scm (measure-duration): Cater for module with variable.
	(display-nonzero-runtime): New function.
	(display-duration): Display duration also when exception is thrown.

2023-07-14  Rutger van Beusekom  <rutger@dezyne.org>

	dzn: Add timing library.
	* dzn/timing.scm: New file.
	* dzn/local.mk (dist_%C%_scm_DATA): Add it.

2023-07-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Remove parse fall-back tests with wfc errors.
	When parsing in fall-back mode to produce a parse tree from a file that
	may have syntax errors, we do not want implicitly want to continue
	creating an AST, running the well-formedness check, and reporting
	any well-formedness errors.

	This removes tests that assert this ill-conceived "feature".

	Reporting well-formedness errors is done by parsing to an AST.

	* test/all/parse_fall_back_assign_void,
	test/all/parse_fall_back_component_without_trigger,
	test/all/parse_fall_back_defer,
	test/all/parse_fall_back_duplicate_definition,
	test/all/parse_fall_back_formal_shadow_type,
	test/all/parse_fall_back_import_both,
	test/all/parse_fall_back_import_twice,
	test/all/parse_fall_back_interface_parens,
	test/all/parse_fall_back_missing_event,
	test/all/parse_fall_back_mixing_imperative,
	test/all/parse_fall_back_on_without_statement,
	test/all/parse_fall_back_out_binding,
	test/all/parse_fall_back_port_qualifier,
	test/all/parse_fall_back_type_mismatch: Remove tests.
	* test/all/local.mk (PARSER_TESTS): Remove them.

2023-07-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Move function silence to normalization.

2023-07-14  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Reformat cyclic-bindings.
	* dzn/ast/wfc.scm (cyclic-bindings): Rewrite.

2023-07-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	tree: Cater for scoped-name.

	parse: Drop dotted namespace type declarations.

	test: Expand dotted type names to namespace.

	test: Remove simple.space.

2023-07-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	transform: Expose extract-call.
	* dzn/ast/normalize.scm (extract-call): Add documentation.
	* dzn/transform.scm: Re-export it.

2023-08-03  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add parse.space.lookup.
	* test/all/parse.space.lookup: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2023-08-02  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add parse_unknown_enum.
	* test/all/parse_unknown_enum/parse_unknown_enum.dzn: New model.
	* test/all/parse_unknown_enum/baseline/verify.err: Add baseline.
	* test/all/local.mk (PARSER_TESTS): Add it.

	lookup: Remove quadratic performance.
	* dzn/ast/lookup.scm (ast:pure-funcq)[name->symbol]: Rename inner define
	to...  [object->key]: ...this.  Enable effective memoization for list of
	<string>.
	(widen-to-parent-unmemoized): Only add <namespace> names to the scope.

2023-08-10  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Make makreel:locals unmemoized-ness explicit.
	Using `(list root model)' as additional memoization key effectively
	killed memoization, because a fresh list is constructed each time.

	* dzn/code/language/makreel.scm (makreel:locals): Remove.
	(makreel:locals-unmemoized): Rename to...
	(makreel:locals): ...this, and remove root paratemer.

2023-07-28  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_after_call.
	* test/all/defer_after_call/defer_after_call.dzn: New model.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-07-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse-flags.
	* test/all/parse-flags: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.
	* HACKING (Regression test): Update 'parse_*' to 'parse*'.

2023-07-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Resurrect fall-back parsing.
	This is a follow-up to commit
	    4e019304f5c10a8b182a4dcbc5304639d9d6851d
	    parse: Add and evaluate fall-back parse return code.

	* dzn/parse.scm (parse-file+import-content-alist)
	[parse-filter, get-parse-status]: Revert dead code, return actual
	failure status.
	(parse:handle-exceptions): Move exit to...
	(call-with-handle-exceptions): ...here.
	(file->ast): Update user.
	* dzn/commands/parse.scm (parse): Have --fall-back imply --parse-tree to
	avoid errors trying to create an AST.  Add #:exit? parameter.
	(main): Use it.
	* test/all/parse_fall_back_import_path/baseline/verify.err,
	test/all/parse_fall_back_out_binding_argument/baseline/verify.err:
	Update accordingly.
	* test/all/parse_fall_back_assign_void/baseline/verify.out,
	test/all/parse_fall_back_component_without_trigger/baseline/verify.out,
	test/all/parse_fall_back_defer/baseline/verify.out,
	test/all/parse_fall_back_duplicate_definition/baseline/verify.out,
	test/all/parse_fall_back_formal_shadow_type/baseline/verify.out,
	test/all/parse_fall_back_import_path/baseline/verify.out,
	test/all/parse_fall_back_import_self/baseline/verify.out,
	test/all/parse_fall_back_interface_parens/baseline/verify.out,
	test/all/parse_fall_back_missing_event/baseline/verify.out,
	test/all/parse_fall_back_mixing_imperative/baseline/verify.out,
	test/all/parse_fall_back_non_existent_import/baseline/verify.out,
	test/all/parse_fall_back_on_without_statement/baseline/verify.out,
	test/all/parse_fall_back_out_binding/baseline/verify.out,
	test/all/parse_fall_back_port_qualifier/baseline/verify.out,
	test/all/parse_fall_back_type_mismatch/baseline/verify.out: New
	baseline.

2023-07-16  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: parse_function_out_state: Rename from function_out_state.
	This is a parser test with baseline.

	* test/all/function_out_state: Rename to...
	* test/all/parse_function_out_state: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Remove function_out_state, and...
	(PARSER_TESTS): ...add parse_function_out_state.

2023-07-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Remove gratuitous lambda.
	This is a follow-up to commit
	    4e019304f5c10a8b182a4dcbc5304639d9d6851d
	    parse: Add and evaluate fall-back parse return code.

	* dzn/parse.scm (string->parse-tree): Remove ((lambda _)) wrapper.

2023-08-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	dzn: Do not print `#f' for a root without comment.
	This is a follow-up to commit
	    744a4184261aa5ff68661238469fff07312ce23a
	    dzn: Use print-ast instead of template framework.

	* dzn/code/language/dzn.scm (print-ast <root>): Print comment field only
	if it exists.

2023-07-28  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Also build scmackerel/c.go.
	This is a follow-up to commit
	    79b6617f03f352e3913d2151809cdddef2bb119a
	    c: Generate using SCMackerel.

2023-07-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build-aux/copyright-header.scm: Restrict updates to current commit.
	This fixes author canonicalization and restricts copyright update and
	author rewrite to authors of current commit.  Respect Co-authored-by.

	* build-aux/copyright-header.scm (author-unique): Rename to...
	(canonicalize-author): ...this, and update to .mailcap.
	(author->name+email,
	(author-equal?): New procedure.
	git:author-copyright-years, file-author-copyright-line,
	file-author-copyright-years): Factor-out from...
	(author-copyright-line): ...here.  Add #:update? parameter.
	(copyright-lines): Add #:commit and #:hysterical? parameters.
	Only update copyright years for author, or when #:hysterical?
	(fix-header): Add #:dry-run? and #:hysterical? parameters.
	(files-from-commit): Factor-out from...
	(main): ...here.  Call fix-header with #:dry-run when --dry-run,
	with #:hysterical? when --hysterical.

2023-07-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Add .mailmap.
	* .mailmap: New file.

2023-07-14  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Run indent.scm.
	Run

	    build-aux/indent.scm $(git ls-files '*.scm').

2023-07-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	.dir-locals: Also unset indent-tabs-mode for scheme.
	* .dir-locals.el (scheme-mode): Set indent-tabs-mode to nil.

2023-07-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.18.0.rc1.
	* guix/pack/dezyne.scm (dezyne): Update to 2.18.0.rc1.

2023-07-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.18.0 since 2.17.3): Mention $$ check.

2023-07-11  Rutger van Beusekom  <rutger@dezyne.org>

	verify: Reduce lts cleanup overhead in pipeline.
	* dzn/verify/pipeline.scm (in-out.pipeline): "ltsconvert -edpweak-bisim"
	before "lts --cleanup".

2023-07-05  Paul Hoogendijk  <paul@dezyne.org>

	lts: Move state label from trace removal from lts to pipeline.
	* dzn/lts.scm (remove-state): Remove procedure.
	(assert-livelock, assert-unreachable, nondeterministic-nodes): Remove
	remove-state call.
	* dzn/verify/pipeline.scm (hide-internal-labels): Add '<state>' label.

2023-07-11  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Revert foreign skel namespace nesting.
	* dzn/code/scmackerel/c++.scm (model->foreign): Move outer wrapping of
	"skel" namespace to...
	* dzn/code/scmackerel/c++.scm (component-model->statements-unmemoized):
	here, and change to (conditional) inner wrapping.
	(model->header-statements): Update accordingly.
	(model->statements): Likewise.
	* test/all/foreign_namespace/S_Foreign.hh (struct Foreign): Update
	accordingly.

	test: Add hello_multiple_nondet.
	* test/all/hello_multiple_nondet/hello_multiple_nondet.dzn: New file.
	* test/all/local.mk (HELLO_TESTS): Add it.

2023-07-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	vm: Ignore match errors on modeling events.
	* dzn/vm/run.scm (run-requires): Filter traces on match-error.

2023-07-10  Rutger van Beusekom  <rutger@dezyne.org>

	verify: Fix non-determinstic constraint deadlock.
	* dzn/verify/pipeline.scm (in-out:lts-hide-internal-labels): Fix hiding
	modeling by prefixing with the interface name and replacing
	optional/inevitable with internal.
	* dzn/verify/constraint.scm (rtc?): Simplify with state?.
	(modeling-event?, strip-modeling): Remove, modeling events are no
	longer part of the LTS.
	* dzn/code.scm (code:shared): Remove modeling?.
	* dzn/lts.scm (lts->rtc-lts): Replace modeling? with state?.

2023-07-11  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_typed_call.
	A regression reported by <perry.van.wesel@thermofisher.com>.

	* test/all/defer_typed_call/defer_typed_call.dzn: New file.
	* test/all/local.mk (HELLO_TESTS): Add it.

2023-07-10  Janneke Nieuwenhuizen  <janneke@gnu.org>

	makreel: Support valued function call in defer statement.
	* dzn/ast/normalize.scm (extract-call): Also recurse into <defer>.

2023-07-07  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Move hash from generated c++ to c++ generator.
	* runtime/c++/dzn/runtime.hh (hash): Simplify; convert to 32 bit;
	replace prime modulo with 32 bit overflow; remove constexpr for use in
	case label and move to...
	* dzn/code/scmackerel/c++.scm (interface->statements-unmemoized):
	... here; calculate case label hash during code generation.
	* test/lib/build.c++.make (CXXFLAGS): Switch back to --std=c++11.

2023-07-05  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Skip unused interface generation.
	* dzn/code/scmackerel/makreel.scm (interface-types->scmackerel): New
	method.
	(root->scmackerel): Use it when conditionally filtering on model name to
	add dependent types.

2023-07-07  Janneke Nieuwenhuizen  <janneke@gnu.org>

	parse: Remove dead code.
	Actually creating a <declarative-compound> here breaks wfc (and probably
	more).

	* dzn/ast/parse.scm (parse-tree->ast): Remove feeble attempt at creating
	<declarative-compound>.

2023-07-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c++: Do not generate constraint LTS with -C,--no-constraint.
	* dzn/code/scmackerel/c++.scm (interface->statements-unmemoized):
	Repsect %no-constraint?

2023-07-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Remove ports from behavior.
	This is a follow-up to commit
	    9dc1501779986db957b66cd7c2f888407e2cac26
	    ast: Remove async.

	* dzn/ast/goops.scm (<behavior>)[ports]: Remove field.
	* dzn/ast/accessor.scm (ast:port* <behavior>): Remove specialization.
	* dzn/ast/lookup.scm (ast:declaration* <behavior>): Remove ast:port*.
	* dzn/code/language/makreel.scm (tick-names-): Update accordingly.

2023-07-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Use "typed" instead of "valued".
	* doc/parse/valued-out-event.dzn: Rename to...
	* doc/parse/typed-out-event.dzn: ...this.
	* doc/parse/valued-out-event.texi: Rename to...
	* doc/parse/typed-out-event.texi: ...this.
	* doc/dezyne.texi (Out-event must be void): Update accordingly.
	* doc/parse/local.mk (DEZYNE_PARSE_EXAMPLES): Update accordingly.

2023-07-06  Rutger van Beusekom  <rutger@dezyne.org>

	ast: Refactor ast:typed-in-triggers.
	* dzn/ast.scm (ast:typed-in-triggers): Refactor.

2023-07-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Use "typed" instead of "valued" throughout.
	* dzn/ast.scm (ast:provides-in-valued-triggers): Rename to...
	(ast:provides-in-typed-triggers): ...this.
	(ast:valued-in-triggers): Rename to...
	(ast:typed-in-triggers): ...this.
	(ast:out-triggers-valued-in-events): Rename to...
	(ast:out-triggers-typed-in-events): ...this.
	* dzn/ast/normalize.scm (triples:mark-the-end): Use typed instead of
	valued.
	* dzn/ast/wfc.scm (tail-recursion): Use "typed" instead of "valued".
	* dzn/vm/step.scm (step <trigger-return>): Use typed-reply? instead of
	valued-reply?.
	* dzn/code/scmackerel/c++.scm (main-event-map): Update callers.
	* dzn/code/scmackerel/cs.scm (main-event-map): Likewise.
	* dzn/code/scmackerel/c.scm (main-log-out-trigger): Likewise.
	[valued-in->init]: Rename to...
	[typed-in->init]: ...this.
	* dzn/code/language/c++-exception-wrappers.scm (c++ew:valued-event?):
	Rename to...
	(c++ew:typed-event?): ...this.
	* dzn/templates/c/main.c (log_valued): Rename to...
	(log_typed): ...this.
	* dzn/templates/code.scm (valued-event-slot): Rename to...
	(typed-event-slot): ...this.
	(main-port-connect-in-valued): Rename to...
	(main-port-connect-in-typed): ...this.
	(main-event-map-valued): Rename to...
	(main-event-map-typed): ...this.
	(main-event-map-valued-provides-in): Rename to...
	(main-event-map-typed-provides-in): ...this.
	(main-event-map-valued-in): Rename to...
	(main-event-map-typed-in): ...this.
	* dzn/templates/scheme/main-port-connect-in-valued@trigger: Rename to...
	* dzn/templates/scheme/main-port-connect-in-typed@trigger: ...this.
	* dzn/templates/javascript/main-port-connect-in-valued@trigger: Rename to...
	* dzn/templates/javascript/main-port-connect-in-typed@trigger: ...this
	* dzn/templates/c++-exception-wrappers/valued-event-return@trigger: Rename to ...
	* dzn/templates/c++-exception-wrappers/typed-event-return@trigger: ...this.
	* dzn/templates/c++-exception-wrappers/valued-event-wrapper@trigger: Rename to...
	* dzn/templates/c++-exception-wrappers/typed-event-wrapper@trigger: ...this.
	* dzn/templates/c++-exception-wrappers/valued-requires-in-return@trigger: Rename to...
	* dzn/templates/c++-exception-wrappers/typed-requires-in-return@trigger: ...this.
	* dzn/templates/javascript/main-event-map-valued@trigger: Rename to...
	* dzn/templates/javascript/main-event-map-typed@trigger: ...this.
	* dzn/templates/scheme/main-event-map-valued@trigger: Rename to...
	* dzn/templates/scheme/main-event-map-typed@trigger: ...this.
	* dzn/templates/javascript/main@component (log_valued): Rename to...
	(log_typed): ...this.
	* dzn/templates/scheme/main@component (log-valued): Rename to...
	(log-typed): ...this.
	* dzn/templates/c++-exception-wrappers/provides-port-in-event-wrapper@trigger,
	dzn/templates/c++-exception-wrappers/requires-port-in-event-wrapper@trigger:
	Update users.
	* runtime/cs/dzn/runtime.cs (valued_helper): Rename to...
	(typed_helper): ...this.
	* test/all/LegoBallSorter/main.c (log_valued): Rename to...
	(log_typed): ..this.
	* test/all/LegoBallSorter/main.cc: Rename to...
	(log_typed): ..this.
	* test/all/LegoBallSorter/main.cs (log_valued): Rename to...
	(log_typed): ...this.
	* test/all/LegoBallSorter/main.js (log_valued): Rename to...
	(log_typed): ...this.
	* test/all/LegoBallSorter/main.scm (log-valued): Rename to...
	(log-typed): ...this.
	* test/dzn/makreel.scm ("non tail-call valued"): Rename to...
	("non tail-call typed"): ...this.

2023-07-11  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: LegoBallSorter: Remove obsolete code.
	* test/all/LegoBallSorter/main.java,
	test/all/LegoBallSorter/main.py,
	test/all/LegoBallSorter/timer.java,
	test/all/LegoBallSorter/timer.py: Remove.

2023-07-06  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Factor-out ast:illegal?.
	* dzn/ast/normalize.scm (declarative-illegal?): Move to...
	* dzn/ast.scm (ast:illegal?): ...here, and rewrite.
	* dzn/ast/normalize.scm (declarative-illegal?): Move to...
	(triples:mark-the-end, triples:declarative-illegals,
	tag-imperative-blocks): Update users.

	vm: Remove unused ast:valued?.
	* dzn/vm/ast.scm (ast:valued?): Remove.

	dzn: Fix printing of guard expression.
	* dzn/code/language/dzn.scm (print-ast): Print expression to PORT.

2023-07-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: wfc: Whitespace.

2023-07-05  Rutger van Beusekom  <rutger@dezyne.org>

	verify: Remove redundant ltsconvert.
	* dzn/verify/pipeline.scm (in-out.pipeline): Remove maut-weak-trace,
	aut-weak-trace+hide; derive maut-weak-trace+hide directly from maut,
	thereby removing a redundant ltsconvert.

	test: Fix Camera wfc error.
	* test/all/Camera/Acquisition.dzn: Remove unused 'focus' out event.

	code: Clean up code:type-name.
	* dzn/code.scm (code:type-name <top>): Change to...
	(code:type-name <ast>): ...this; remove redundant <data> case.
	(code:type-name <enum>, <model>): Remove specializations,
	defer to code:type-name <ast>.
	(code:type-name <ast>): Move implicit optional ast:type ...
	* dzn/templates/code.scm (instance->type-name): ... here; add template
	declaration for instances and use ast:type explicitly.
	* dzn/templates/scheme/injected-instance-initializer@instance,
	* dzn/templates/scheme/non-injected-instance-initializer@instance,
	* dzn/templates/scheme/provides-port-reference-initializer@port,
	* dzn/templates/scheme/requires-port-reference-initializer@port: Use new
	template here.

2023-07-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: empty_dollars: Also use $$ in out parameter.
	This reproduces Karol's crash.

	* test/all/empty_dollars/empty_dollars.dzn (ihello.cruel): Add event
	with out-data.
	(empty_dollars.cruel): Use it.
	* test/all/empty_dollars/META: Skip code generation, as that generates a
	baseline now that we cannot check against.

2023-07-04  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Check for empty $$.
	* dzn/code/language/makreel.scm (makreel:model->makreel, (root->): Set
	%language to "makreel".
	* dzn/commands/traces.scm (main): Likewise.
	* dzn/commands/verify.scm (main): Likewise.
	* dzn/ast/wfc.scm (wfc <data>): Check for unspecified data unless
	language is "makreel".

2023-07-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Allow baseline on code.
	* test/dzn/dzn.scm (code-error?): New procedure.
	(run-code): Use it to run baseline check and short-circuit build and
	execute.

2023-07-05  Rutger van Beusekom  <rutger@dezyne.org>

	code: Avoid crash on unspecified data.
	* dzn/code.scm (code:type-name <data>): Handle unspecified data
	gracefully.

2023-07-03  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.18.0.rc0.
	* guix/pack/dezyne.scm (dezyne): Update to 2.18.0.rc0.

2023-06-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Add ANNOUNCE-2.18.0.
	* doc/announce/ANNOUNCE-2.18.0: New file.

2023-05-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.18.0 since 2.17.3): New section.

2023-05-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.18): More done items...
	(DONE): ...here.
	(Release 2.18): Remove, moving opening items...
	(Release 2.19): ...here.
	(Release 2.21): Mention dzn_pump_run data for C.

2023-06-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Document SCMackerel dependency.
	* README (Requirements): Mention SCMackerel.
	* doc/dezyne.texi (Requirements): Likewise.

2023-05-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Use GNU style indentation for C.
	Run:

	   build-aux/indent.scm $(find . -name '*.h' -o -name '*.c')

2023-03-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: defer_data: Add main for C.
	* test/all/defer_data/main.c: New file.

	c: Support calling context.
	* dzn/config.scm.in (%feature-alist): Add "c" to "calling_context" feature.
	* test/all/calling_context/main.c: New file.

	c: Support injected.
	* dzn/code.scm (code:provides+requires-end-point): Cater for injected
	ports.
	* dzn/code/scmackerel/c.scm (c:injected-binding->connect): New
	procedure.
	(system->statements-unmemoized): Cater for injected ports.
	* dzn/config.scm.in (%feature-alist): Add "c" to "inject" feature.
	* test/all/shell_injected/c/Logger.c,
	test/all/shell_injected/c/Logger.h,
	test/all/shell_injected/c/externaltypes.dzn: New files.

	c: Support defer.
	* dzn/code/language/c.scm (c:defer*, c:defer-arguments-name,
	c:defer-name, c:defer-predicate-name): New methods.
	* dzn/code/scmackerel/c.scm (ast->code <defer>): New specialization.
	(component-model->statements-unmemoized): Add dzn_prune_deferred if
	needed.  Update for new dzn_runtime_enqueue name.  Generate defer
	arguments structs.
	(print-main-ast): Cater for <defer> event and include pump as needed.
	* dzn/config.scm.in (%feature-alist): Add "c" to "defer" feature.
	* runtime/c/dzn/pump.h (struct dzn_pump)[deferred]: New field.
	* runtime/c/pump.c (struct deferred): New type.
	(deferred_create, dzn_pump_defer, pump_flush_defer, dzn_pump_finalize,
	dzn_pump_prune_deferred, dzn_pump_run_defer, dzn_defer,
	dzn_prune_deferred)): New functions.
	* runtime/c/dzn/pump.h: Declare them.
	* runtime/c/runtime.c (dzn_runtime_defer): Rename to...
	(dzn_runtime_enqueue): ...this.
	* runtime/c/dzn/runtime.h: Update prototype.

2023-03-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c: Support collateral block.
	* dzn/code/scmackerel/c.scm (component-model->statements-unmemoized):
	Include pump as needed.
	* dzn/config.scm.in (%feature-alist): Add "c" to the "collateral" and
	"shell" features.
	* runtime/c/coroutine.c:
	* runtime/c/dzn/coroutine.h (dzn_coroutine_port): Replace by...
	(dzn_coroutine_data): ...this.
	(dzn_coroutine_set_port): Replace by...
	(dzn_coroutine_set_data): ...this.
	* runtime/c/dzn/pump.h (struct dzn_pump)[collateral, invoking_id]: New
	fileds.
	* runtime/c/dzn/runtime.h (struct dzn_runtime_info)[handling]: Change
	type to long.
	* runtime/c/pump.c (struct port_coroutine)[id]: New field.
	* runtime/c/pump.c (port_coroutine_create, dzn_pump_run): Set it.
	(port_predicate, dzn_pump_block, dzn_pump_release): Update for key
	change.
	(id_predicate): New function.
	(pump_process_released): Cater for collateral block.
	(dzn_pump_port_blocked_p, dzn_pump_collateral_block,
	dzn_port_blocked_p, dzn_collateral_block): New functions.
	* runtime/c/dzn/pump.h: Declare them.
	* runtime/c/runtime.c (dzn_runtime_start)[HAVE_LIBPTH]: Set handling
	to coroutine id.
	(dzn_runtime_finish): Update for type change.
	(dzn_runtime_call_in)[HAVE_LIBPTH]: New function.
	* runtime/c/dzn/runtime.h: Declare it.

2023-03-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	config: Add "shell" feature.
	* dzn/config.scm.in (%feature-alist): Add "shell".
	* test/dzn/dzn.scm (features): Cater for it, also looking at the "tss"
	feature.

2023-03-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c: Support blocking using GNU Pth.
	* dzn/code.scm (code:pump? <component>): Change to...
	(code:pump? <component-model>): ...this.
	(code:pump? <system>, code:pump? <shell-system>): New specializations.
	* dzn/code/scmackerel/c.scm (c:statement*): New method.
	(ast->code <blocking-compound>, ast->code <reply>): New specializations.
	(main-fill-event-map): Include pump as needed.
	(print-main-ast): Likewise.
	* dzn/config.scm.in (%feature-alist): Add "c" to "block" feature.
	* dzn/templates/c/main.c (next_event): New function.
	* runtime/c/dzn/coroutine.h,
	* runtime/c/dzn/list.h,
	* runtime/c/dzn/pump.h: New files.
	* runtime/local.mk (dist_runtime_c_dzn_DATA): Add them.
	* runtime/c/coroutine.c,
	* runtime/c/list.c,
	* runtime/c/pump.c: New files.
	* runtime/local.mk (dist_runtime_c_DATA): Add them.
	* test/all/blocking_binding/META: Skip for "c".
	* test/all/blocking_release/main.c: New file.
	* test/lib/build.c.make (LDFLAGS): New variable.

2023-03-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Have configure create config.make for test/lib.
	* build-aux/config.make.in: New file.
	* configure.ac: Use it to generate config.make.
	* .gitignore: Ignore that file.
	* test/lib/build.c++.make: Include it.
	(DEVELOPMENT): Remove, use abs_top_srcdir instead.  Update users.
	* test/lib/build.c.make: Likewise.
	* test/lib/build.cs.make: Likewise.
	* test/lib/build.javascript.make: Likewise.

	build: Check for GNU Pth.
	* configure.ac: Check for pth.h and libpth.  Fail if pth.h is missing
	and not cross-compiling.  Create runtime/c/dzn/config.h.
	* runtime/c/dzn/config.h: Rename to...
	* runtime/c/dzn/config.h.in: ...this.
	* autogen.sh (AUTOHEADER): Disable running of autoheader by setting it
	to true.
	* Makefile.am (do_subst): Add HAVE_LIBPTH.
	* dzn/config.scm.in (%libpth, %have-libpth): New defines.
	* runtime/local.mk (dist_noinst_DATA): Add c/dzn/config.h.in.

	guix: dezyne: Depend on GNU Pth.
	* guix/pack/dezyne.scm (dezyne)[inputs]: Add pth.

2023-06-21  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Formatting.
	* dzn/parse/peg.scm (peg-block-strict, peg-skip, peg-block,
	peg-import-skip, peg:parse): Fix formatting to not exceed 80
	characters.  Move dangling operators to start of next line.

2023-06-20  Rutger van Beusekom  <rutger@dezyne.org>

	ast: parse: Debug location.
	* dzn/ast/parse.scm (parse-tree->ast): New inner procedure.

	test: Add shadow_port.
	* test/all/shadow_port/shadow_port.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	ast: normalize: Fix default value type.name.
	* dzn/ast/normalize.scm (extract-call): Pass the variable instead of its
	type.
	* dzn/ast.scm (ast:values <variable>): Add override the <enum>
	case for <variable> w.r.t. ast:values <type>.
	(ast:default-values): Remove <type> overload.

	peg: Fix parameter shadowing port.
	* dzn/parse/peg.scm (peg:parse): Relax DOT strictness for action;
	prioritise var before port to avoid ambiguity in expression.

2023-06-19  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_function_enum.
	* test/all/hello_function_enum/hello_function_enum.dzn: New file.
	* test/all/local.mk (HELLO_TESTS): Add it.

2023-06-20  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Fix ast:default-value for scoped enums.
	* dzn/ast.scm (ast:values): Do not assume rescoping at root.
	* dzn/verify/constraint.scm (lts->makreel)[unscope-enum]: New inner
	define,  Use it to resolve enum from root scope.

2023-06-19  Janneke Nieuwenhuizen  <janneke@gnu.org>

	wfc: Check for language features block, defer, shared.
	* dzn/commands/code.scm (main): Set %language parameter.
	* dzn/ast/wfc.scm (feature-supported?): Use it in new procedure.
	(wfc-constraint, wfc <blocking>, wfc <defer>): Use it to fail if
	feature is not supported.

2022-11-11  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add cruise_control.
	* test/all/cruise_control: New automotive shared state example.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-06-12  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Add newline separators to echo trace.
	Reported by Joris Geurts j.geurts@fontys.nl

	* doc/dezyne.texi (Hello World!): Use `echo -e' to preserve newslines.

2023-06-09  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Fix typos.
	* doc/dezyne.texi (Thread-safe Shell): Replace additionalbhv with
	&bhv.dzn_meta, and additionaldzn_meta with &dzn_meta.

2023-05-19  Rutger van Beusekom  <rutger@dezyne.org>

	lookup: Fix field-test with interface enum of private type.
	* dzn/code/scmackerel/code.scm (ast->expression <shared-field-test>):
	Set proper parent and remove redundant cloning.
	* dzn/code/scmackerel/c++.scm (ast->expression <shared-field-test>):
	Same in copy.
	* dzn/ast/lookup.scm (.type): Refactor + fix for shared variables.
	* test/all/shared_enum/shared_enum.dzn: Update test to assert lookup
	enum-literal for shared var.

2023-06-12  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Switch shared state debug output using debugity.
	* dzn/code/scmackerel/c++.scm (interface->statements-unmemoized): Only
	generate state debug output code when debugity? is set.

2023-05-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	Use GNU style indentation for C++.
	Run:

	   build-aux/indent.scm $(find . -name '*.hh' -o -name '*.cc')

2023-05-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build-aux: indent.scm: Support C and C++.
	* build-aux/indent.scm (indent-c, indent-c++): New procedures.
	(indent-file): Use them.

2023-05-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	code: Use GNU style brace indent.
	* dzn/indent.scm (indent): Add #:gnu? parameter, indenting non-zero
	braces extra.
	* dzn/code/util.scm (code:indenter): Likewise, pass it on.
	* dzn/code/language/dzn.scm (ast->): Do not use GNU style indentation.

2023-05-13  Janneke Nieuwenhuizen  <janneke@gnu.org>

	.dir-locals: Use GNU indentation style for C, C++.
	* .dir-locals.el (c-mode, c++-mode): New entries.

2023-03-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Update c++ main's --debug flag.
	* test/all/blocking_binding/main.cc (getopt): New function.
	(main): Use it.
	* test/all/collateral_blocking_multiple_provides0/main.cc: Likewise.
	* test/all/defer_data/main.cc: Likewise.
	* test/all/sync_out_reply_binding/main.cc: Likewise.

2023-01-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Memoize code:shared-lts.
	* dzn/code.scm (code:shared-lts): Rename to...
	(code:shared-lts-unmemoized): ...this.
	(code:shared-lts): New perfect procedure.

2023-04-26  Rutger van Beusekom  <rutger@dezyne.org>

	test: collateral_blocking_shell: Remove redundant logging.
	* test/all/collateral_blocking_shell/main.cc (main): Remove clog.

2023-04-05  Rutger van Beusekom  <rutger@dezyne.org>

	hello_injected: Remove handwritten c++ main.
	* test/all/hello_injected/main.cc: Remove file.

2023-06-12  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Shared state.
	Add inspecting (via direct accesss), updating (generate a switch case
	from the interface LTS) and synchronizing (for each interaction across
	a binding both port must be in the same state) port variables.

	* dzn/code.scm (code:shared-lts, code:shared, code:shared-state,
	code:shared-value, code:shared-dzn-event-method,
	code:shared-update-method): New methods ...
	* dzn/code/scmackerel/code.scm (ast->expression <shared-field-test>,
	ast->expression <shared-var>, ast->expression <shared-variable>):
	New (common) methods.
	* dzn/code/scmackerel/makreel.scm (ast->expression <shared-field-test>):
	Remove common method.
	* dzn/code/scmackerel/c++.scm (ast->expression <shared-field-test>,
	ast->expression <shared-var>, ast->expression <shared-variable>): New
	methods overrides.
	(c++:event-method, c++:event-return-method, c++:port-update-method): Use
	here in new methods.
	(%illegal): Feed location to illegal handler.
	(print-code-ast): Add LOCATION macro for illegal handler.
	(interface->statements-unmemoized [ast->assign, value->init,
	event->switch-case, synchronize->member, remove-non-matching-node,
	event->transitions]): Implement shared state using inner defines.
	* dzn/config.scm.in (%feature-alist): Add shared.

2023-06-12  Rutger van Beusekom  <rutger@dezyne.org>

	runtime/c++: Add constexpr string hashing for shared state.
	* runtime/c++/dzn/runtime.hh (hash): New functions.
	* test/lib/build.c++.make (CXXFLAGS): Update build to require C++14 for
	constexpr hash.

	runtime/c++: Refactor and prepare for shared state.
	* runtime/c++/dzn/runtime.hh (share_trace_wrapper, call_out): Rename
	trace_wrapper and refactor for shared state support.
	* runtime/c++/dzn/runtime.hh (struct runtime): Extract condition
	predicate function.
	* runtime/c++/runtime.cc (runtime::async): Use here.

	runtime/c++: Extend illegal handler with an additional message.
	* runtime/c++/dzn/locator.hh (illegal,handle): : Add msg parameter with
	default value.
	* runtime/c++/dzn/container.hh (container): Update accordingly.

	test: hello_namespace_foreign: Cleanup.
	* test/all/hello_namespace_foreign/hello.dzn: Remove out events and
	corresponding behaviorl.
	* test/all/hello_namespace_foreign/c++/library_foreign.hh (struct
	foreign): Remove unused member.
	* test/all/hello_namespace_foreign/c++/library_foreign.cc (foreign::foreign):
	Formatting.

2023-06-30  Rutger van Beusekom  <rutger@dezyne.org>

	code: Add <shared-transition>, <shared-state>, <shared-value>.
	* dzn/code/goops.scm (<shared-transition>, <shared-state>,
	<shared-value>): New types.
	(code:shared-value*): New method.
	(ast:statement* <shared-state>): New specialization.
	(ast:equal? <shared-transition>
	(ast:equal? <shared-value>): New specializations.
	* dzn/ast/equal.scm (ast:equal? <compound>): Nwe specialization.

2023-05-16  Rutger van Beusekom  <rutger@dezyne.org>

	test: foreign_import_system: Remove unobservable non-determinism.
	* test/all/foreign_import_system/hello_foreign.dzn: Add a boolean reply
	value to make the non-deterministic choice visible.

2023-06-02  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add undefined/component/shared.
	* test/all/undefined/component/shared/shared.dzn: New file.
	* test/all/local.mk (PARSER_TESTS): Add it.

	test: Add undefined/interface/shared.
	* test/all/undefined/interface/shared/shared.dzn: New file.
	* test/all/local.mk (PARSER_TESTS): Add it.

	wfc: Robustifications and checks for shared.
	* dzn/ast/lookup.scm (lookup-shared-variable): New method,
	rewritten to be robust, factored-out from...
	(.variable <shared-var>): ...here, and...
	(.variable <shared-field-test>): ...here.
	* dzn/ast.scm (ast:provides?, ast:requires?): Robustify.
	* dzn/ast/wfc.scm (wfc-port): New method, factored-out from...
	(reply-with-port): ...here, and ...
	(wfc <trigger>): ...here.
	(wfc <shared-var>, wfc <shared-field-test>): Use it.

2023-03-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts: Cleanup display-lts.
	* dzn/lts.scm (display-lts)[display-edge]: New inner define.  Use it
	with for-each instead of map and string-join.

2023-03-24  Rutger van Beusekom  <rutger@dezyne.org>

	lts: Use simple-format.
	* dzn/lts.scm (generate-traces,
	lts->traces,
	parse-label,
	cleanup-label,
	memoizing-cleanup-label): Replace format with simple-format.

2023-02-08  Paul Hoogendijk  <paul@dezyne.org>

	test: Add shared_out_sync_provides.
	* test/all/shared_out_sync_provides/shared_out_sync_provides.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add shared_out_sync_requires.
	* test/all/shared_out_sync_requires/shared_out_sync_requires.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add shared_async_provides.
	* test/all/shared_async_provides/shared_async_provides.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add shared_async_requires.
	* test/all/shared_async_requires/shared_async_requires.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-02-28  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_double_inevitable.
	* test/all/shared_double_inevitable: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-03-30  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Strict state synchronization at port run to completion.
	The component and the port interfaces both allow communicating state at
	behavior. The component behavior synchronizes requires port state after
	every action on said port. The semantics process synchronizes the
	provides state at every run to completion, i.e. after each reordered
	reply or at the run to completion of every requires modeling event.

	* dzn/ast/normalize.scm (triples:mark-the-end): Refactor.  Add
	the <the-end> to on in interfaces when not a modeling event.

	* dzn/code/language/makreel.scm (makreel:switch-context<action-reply>):
	New specialization to add explicit replies.
	(makreel:om): Use makreel:add-action-reply.

	* dzn/code/scmackerel/makreel.scm (ast->process <interface> <the-end>):
	New specialization.
	(ast->process <interface> <behavior>): Refactor.
	(ast->process <component> <behavior>): Optionally communicate state at
	behavior for all non external ports before defer.
	(ast->process <component> <on>): Communicate state after out trigger.

	* dzn/code/scmackerel/makreel.scm (ast->process <model> <compound>,
	ast->process <interface> <on>, ast->process <model> <tag>, ast->process
	<model> <reply>, ast->process <model> <action>, ast->process <model>
	<assign>, ast->process <model> <variable>, return-processes): Move
	reorder end to ...
	(ast->process <interface> <the-end>): ... here.

	* dzn/code/scmackerel/makreel.scm (makreel:process-formals): Remove
	<action-reply>'s variable from formals.
	(action->processes): Replace with ...
	(ast->process <component> <action-reply>): New specialization for valued
	actions; add switch context; add valued reply; add variable assign.
	(ast->process <model> <action>): Remove reorder end; add switch context;
	add void reply; communicate state when component and not external.
	(assign->process <model> <action> <variable>): Rename to...
	(assign->sum): ...this.
	(assign->process <model> <action> <formal>): Rename to...
	(assign->sum): ...this.
	(ast->process <model> <assign>, ast->process <model> <variable>):
	Refactor with ast->action and assign->sum.

	* dzn/code/scmackerel/makreel.scm (interface-reorder-processes): Extend
	reorder process to communication interface state.
	(semantics-main, semantics-requires, semantics-skip-blocking,
	semantics-blocked, semantics-reply, semantics-blocked-main,
	component-semantics-processes): Communicate state.
	(component-processes): Do not synchronize state for external ports.

	* dzn/lts.scm (remove-state-edges): Rename to...
	(remove-state-loops): ... this and move.
	(deadlock-nodes, lts->traces): Update callers.
	(lts-hide-state, remove-state): New function
	(assert-deadlock, assert-illegal, assert-nondeterministic): Remove state
	from trace.

	* dzn/verify/pipeline.scm (interface-taus, compliance-taus): Add <state>.
	(in-out:dzn->aut-cached): New procedure.
	(in-out:aut->aut-failures): Add state loop removal for provides.

2023-06-15  Rutger van Beusekom  <rutger@dezyne.org>

	test: compliance_external: Canonicalize.
	* test/all/compliance_external/compliance_external.dzn: Rename b to idle
	and invert meaning.
	* test/all/compliance_external/baseline/simulate.out: Update baseline.

2023-03-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Add makreel:add-action-reply.
	* dzn/code/language/makreel.scm (makreel:add-action-reply): New
	transformation.

	code: Add action-reply.
	* dzn/code/goops.scm (<action-reply>): New class.
	(.port<action-reply>, .event<action-reply>, .variable<action-reply>,
	ast:type<action-reply>, ast:in?<action-reply>, ast:out?<action-reply>):
	New specializations.
	* dzn/ast/lookup.scm: Export ast:lookup-variable.

2023-03-24  Rutger van Beusekom  <rutger@dezyne.org>

	lts: Use %<state> instead of "<state>".
	* dzn/lts.scm (edge-canonical-label, hide-state-edges): Use shared
	%<state> instead of introducing new "<state>" string.

2023-04-03  Rutger van Beusekom  <rutger@dezyne.org>

	verify: Remove support for -j,--jitty.
	The jittyc code clutters the pipeline and is not really useful:
	Verification usually takes a couple of seconds, in extreme cases
	possibly a minute while the jittyc rewriter adds a time penalty of a
	couple of minutes.

	* dzn/commands/traces.scm (parse-opts, model->lts),
	* dzn/commands/verify.scm (parse-opts),
	* dzn/verify/pipeline.scm (component-stage, in-out:lps->aut-jitty),
	* doc/dezyne.texi (Invoking dzn traces, Invoking dzn verify): Remove jitty.

2023-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	traces: Hide internal <state> events.
	* dzn/commands/traces.scm (lts-hide-internal-labels): Also *.<state>.

2023-03-10  Rutger van Beusekom  <rutger@dezyne.org>

	test: hello_defer: Update to constraining interface(s).
	* test/all/hello_defer/hello_defer.dzn: Remove redundant component
	state.

2023-03-14  Rutger van Beusekom  <rutger@dezyne.org>

	constraint: Separate LTS and process debug display.
	* dzn/verify/constraint.scm (interface->constraint): Avoid failing to
	show any debug output due to a later error.

2023-04-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Robustify ast:location->string.
	* dzn/ast.scm (ast:location->string): Change procedure into...
	(ast:location->string): ...this method.

2023-04-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Avoid halting problem in ast:location.
	This fixes getting a location for nested compounds without locations:

	    { {} }

	* dzn/ast.scm (ast:location): Avoid step-up, step-into loop.

2023-04-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Memoize makreel:defer*.
	* dzn/code/language/makreel.scm (makreel:defer*): Rename to...
	(makreel:defer*-unmemoized): ...this.
	(makreel:defer*): New memoizing function.

	makreel: Memoize makreel:call-continuation*.
	* dzn/code/language/makreel.scm
	(makreel:call-continuations <behavior>): Rename to...
	(makreel:call-continuation*-unmemoized <behavior>): ...this.
	(makreel:call-continuation* <behavior>): New method.
	* dzn/code/scmackerel/makreel.scm (makreel:process-formals, %stack-type,
	%returns-type, return-processes): Update callers.

2023-04-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Memoize interface generation.
	* dzn/code/scmackerel/makreel.scm (interface->scmackerel): Rename to...
	 (interface->scmackerel-unmemoized): ...this.
	(interface->scmackerel): Memoize.

2023-04-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Drop parent equality from ast:eq?.
	* dzn/ast/equal.scm (ast:eq?): Do not compare parents.

	normalize: Use deep-clone.
	* dzn/ast/normalize.scm (triples:split-multiple-on,
	split-complex-expressions): Use deep-clone to avoid duplicate AST elements.

	ast: Add deep-clone.
	* dzn/ast/util.scm (deep-clone): New method.

	test: Add hello_trigger_list.
	* test/all/hello_trigger_list/hello_trigger_list.dzn: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2023-03-29  Rutger van Beusekom  <rutger@dezyne.org>

	lookup: Replace cut with cute.
	* dzn/ast/lookup.scm (ast:declaration*, .variable): Replace cut with
	cute.

2023-03-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_if_skip: Rename from blocking_if_local.
	* test/all/blocking_if_local/blocking_if_local.dzn: Move to...
	* test/all/blocking_if_skip/blocking_if_skip.dzn: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: blocking_function_skip: Rename from blocking_function_local.
	* test/all/blocking_function_local/blocking_function_local.dzn: Move to...
	* test/all/blocking_function_skip/blocking_function_skip.dzn: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: blocking_skip: Rename from blocking_local.
	* test/all/blocking_local/blocking_local.dzn: Move to...
	* test/all/blocking_skip/blocking_skip.dzn: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2023-03-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add clash_event_name.
	* test/all/clash_event_name/clash_event_name.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: hello_clash_port_variable: Add "meta" to port.
	* test/all/hello_clash_port_variable/hello_clash_port_variable.dzn
	(ihello): Add bool "meta".

	test: clash_port_variable: Rename from hello_clash_port_variable.
	* test/all/hello_clash_port_variable/hello_clash_port_variable.dzn: Move
	to...
	*test/all/clash_port_variable/clash_port_variable.dzn: ...here.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	config: Enable "flush" for c.
	* dzn/config.scm.in (%feature-alist)["flush"]: Add "c".

	c: Move closures and helpers into dzn_ namespace.
	* dzn/code/scmackerel/c.scm (c:event-slot-call-name): Move to...
	* dzn/code/language/c.scm (c:event-slot-call-name): ...here, add BASE
	argument, and add DZN prefix.
	(component-model->statements-unmemoized): Use it, update callers.
	(c:closure-name): Add DZN prefix.

2023-01-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c: Generate using SCMackerel.
	* dzn/ast.scm (ast:argument->formal): Robustify.
	* dzn/code/language/c.scm (c:generate-source?): Always include source
	for interface.
	(%char-set:identifier): Remove variable.
	(c:models, c:components, c:file-name, c:file-name-identifier-upcase,
	c:get-trigger-port-type, c:comma, c:arguments, c:address/deref,
	c:deref, c:ptr, c:self, c:extract-variables-with-respect-to-enums,
	c:formal-data-type, c:binding-instance, c:foreign-instance,
	c:namespace-upcase, c:name, c:model-parent-name,
	c:enum-complete-name-upcase, c:get-enum-fields-of-enum,
	c:get-all-enums, c:get-all-local-enums, c:enum-printed-name,
	c:enum-trigger-void, c:void-trigger, c:enum-or-trigger,
	c:non-void-trigger, c:equal?, c:get-incoming-triggers-from-model,
	c:binding-provides, c:binding-requires, internal-binding?,
	c:external-binding, c:internal-binding, c:type-name-different,
	c:range-type, c:uint-resolve, c:int-resolve, c:in-range, c:enum-name,
	c:enum-literal, c:generate-foreign-skel?,
	c:connect-instance-name-right): Remove methods.
	(template): Remove template instantations.
	(ast->): Use print-header-ast, print-code-ast, print-main-ast instead
	of template expanders.
	(c:ref, c:event-name, c:enum*, c:base-type-name, c:type-name,
	c:signature-equal?, c:closure-name, c:closure-triggers,
	c:end-point->string): New methods.
	* dzn/templates/c.scm: Remove.
	* dzn/templates/local.mk (dist_noinst_DATA): Remove it.
	* dzn/templates/c/: Remove.
	* dzn/templates/local.mk (EXTRA_DIST): Remove it.
	* dzn/templates/c/main.c: New file.
	(dist_%C%_c_DATA): Add it to new variable.
	* dzn/templates/local.mk (dzn_templates_cdir): New variable.
	* dzn/code/scmackerel/c.scm: New file.
	* dzn/code/scmackerel/local.mk (dist_%C%_scm_DATA): Add it.

2023-03-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c: Use proper dzn_ prefixing, whitespace changes.
	This is mainly to help ediff-buffer with SCMackerel output.

	* dzn/code/scmackerel/code.scm (code:binding->connect):
	Insert (%member-prefix).
	* dzn/templates/c: Use proper DZN_ prefixing to avoid clashes with user
	input.  Whitespace fixes.

2023-02-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Catch usage of shared variable with external port.
	* dzn/ast/wfc.scm (wfc-constraint): Create well-formednes error when
	port is external.

	wfc: Catch usage of shared variable with -C,--no-constraint.
	* dzn/ast/wfc.scm (wfc-constraint): New method.
	(wfc<shared-variable>, wfc<shared-field-test>,
	wfc<shared-field-var>): Use it in new specializations.
	* dzn/commands/code.scm (main): Pull ast:parse inside parametrize.
	* dzn/commands/traces.scm (main): Likewise.
	* dzn/commands/verify.scm (main): Likewise.

2023-01-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Add ast:node-eq?.
	* dzn/ast/equal.scm (ast:node-eq?): New method.
	(ast:eq?): Use it.
	* dzn/ast/normalize.scm (split-complex-expressions): Use it.
	* dzn/vm/evaluate.scm (expr:equal?): Use it.

2023-01-23  Paul Hoogendijk  <paul@dezyne.org>

	test: Add unreachable_return.
	* test/all/unreachable_return: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-01-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Also tag statement after return.
	* dzn/ast/normalize.scm (tag-imperative-blocks)
	[tag-return-continuation]: New inner define.  Use it to tag
	statement-after-return.

2023-01-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Remove duplicate manual lts memoization.
	* dzn/verify/constraint.scm (interface->constraint): Remove root
	parameter.
	* dzn/code/language/makreel.scm (makreel:constraint-unmemoized): Remove.
	(makreel:constraint): Update accordingly.

	verify: Memoize interface->constraint-lts.
	* dzn/verify/constraint.scm (interface->constraint-lts): Rename to...
	(interface->constraint-lts-unmemoized): ...this.  Remove root parameter.
	(interface->constraint-lts): New perfect procedure.

2023-01-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Document shared interface state.
	* doc/dezyne.texi (Implicit interface contstraints): New subsection.
	(Extern Data Type): Add shared variable expression.
	(Expressions): Likewise.

2023-01-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Memoize scmackerel creation.
	* dzn/code/scmackerel/c++.scm (interface->statements): Rename to...
	(interface->statements-unmemoized): ...this.
	(interface->statements): New memoizing method.
	(component-model->statements): Rename to...
	(component-model->statements-unmemoized): ...this.
	(component-model->statements): New memoizing method.
	(system->statements): Rename to...
	(system->statements-unmemoized): ...this.
	(system->statements): New memoizing method.
	(shell-system->statements): Rename to...
	(shell-system->statements-unmemoized): ...this.
	(shell-system->statements): New memoizing method.

	ast: Add ast:perfect-funcq.
	* dzn/ast/lookup.scm (ast:funcq): Factor-out from...
	(ast:pure-funcq): ...this.
	(ast:perfect-funcq): New procedure.
	* dzn/ast.scm: Re-export it.

2022-12-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Generate using SCMackerel.
	* dzn/code.scm (%language): New parameter.
	(code:event-name): Use it.
	* dzn/code/language/cs.scm (ast->): Set it.
	(cs:capture-variable*): Rename to...
	(cs:defer-variable*): ...this.
	(mark-otherwise, cs:statement, direction, cs:direction,
	cs:member-equality-variable*, cs:formals, formals,
	cs:illegal-out-assign, cs:args, expression+formal->argument,
	cs:arguments, return-type, return-type-if-valued, cs:formal-bindings,
	cs:formal-binding, out-ref-local, dzn-prefix, default-ref,
	default-out, =expression, cs:function-return-type,
	cs:return-statement, cs:return-temporary-assign, cs:return-temporary,
	cs:non-primitive, code:data*): Remove methods.
	(cs:out-ref, cs:number-argument, cs:defer-equality*, cs:capture-name):
	New methods.
	* test/all/: Update handwritten code: set "sut" name in constructor.
	* test/all/system_check_bindings/main.cs,
	test/all/hello_check_bindings/main.cs: Likewise, use dzn_check_bindings.
	* dzn/templates/cs.scm: Remove
	* dzn/templates/local.mk (dist_noinst_DATA): Remove it.
	* dzn/templates/cs/: Remove.
	* dzn/templates/local.mk (EXTRA_DIST): Remove it.

2023-03-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: scmackerel: Update to 0.3.3.
	* guix/pack/scmackerel.scm (scmackerel): Update to 0.3.3.

2023-04-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Use <port>.DZN_meta.
	* dzn/code/scmackerel/c++.scm (interface->statements): Rename .META
	member to .DZN_META.
	(component-model->statements), system->statements,
	shell-system->statements, main-connect-ports, main-event-map): Update
	accordingly.
	* runtime/c++/dzn/meta.hh.in (other): Update accordingly.
	* runtime/c++/dzn/runtime.hh (trace_wrapper): Update accordingly.
	* test/all/*/main.cc: Update accordingly.

2023-05-12  Janneke Nieuwenhuizen  <janneke@gnu.org>

	c++: Move tracing into runtime.
	* runtime/c++/dzn/runtime.hh (trace_wrapper): Split call_helper into
	trace_wrapper and runtime_wrapper; rename call_helper to wrapper; rename
	call_ to wrap_ for event initialization and implement using wrapper;
	introduce call_in and call_out for actions and implement using
	trace_wrapper.
	* dzn/code/scmackerel/c++.scm (ast->code <action>,
	ast->code <assign>): New specializations.
	(interface->statements): Add dzn_peer
	member, i.e. a pointer to the other endpoint of a binding and initialize
	in connect.
	(component-model->statements): Rename dzn::call_in to dzn::wrap_in and
	dzn::cal_out to dzn::wrap_out.
	(system->statements): Initialize port system names correctly.
	(main-connect-ports): Move flush tracing from here ...
	(main-event-map): .. to here.
	* test/all/blocking_binding/main.cc,
	test/all/blocking_multiple_provides2/main.cc (main),
	test/all/blocking_multiple_provides3/main.cc (main),
	test/all/blocking_release/main.cc (main),
	test/all/blocking_shell/c++/main.cc (main),
	test/all/blocking_shell/c++/main.cc (main),
	test/all/blocking_system_diamond/main.cc (main),
	test/all/calling_context/main.cc (main),
	test/all/collateral_blocking_backdoor/main.cc (main),
	test/all/collateral_blocking_bridges/main.cc (main),
	test/all/collateral_blocking_double_release/main.cc (main),
	test/all/collateral_blocking_multiple_provides/main.cc (main),
	test/all/collateral_blocking_multiple_provides0/main.cc (main),
	test/all/collateral_blocking_reorder/main.cc (main),
	test/all/collateral_blocking_reorder_parallel/main.cc (main),
	test/all/collateral_blocking_shell/main.cc (main),
	test/all/collateral_blocking_shell2/main.cc (main),
	test/all/collateral_double_blocked/main.cc (main),
	test/all/data_full/main.cc (main),
	test/all/defer_data/main.cc (main),
	test/all/double_collateral_blocking_shell/main.cc (main),
	test/all/foreign_handwritten/c++/Foreign.cc (Foreign::Foreign),
	test/all/foreign_optional/c++/main.cc (main),
	test/all/foreign_requires/c++/main.cc (main),
	test/all/foreign_requires/foreign_requires.dzn (foreign_requires),
	test/all/hello_injected/main.cc (main),
	test/all/hello_namespace_foreign/c++/library_foreign.cc (foreign::foreign),
	test/all/pump_twice/main.cc (main),
	test/all/sync_out_reply_binding/main.cc (main): Add any missing port
	name initializations.  Remove tracing from handwritten code.

2021-05-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Generate using SCMackerel.
	* doc/dezyne.texi (Integrating C++ Code): Use GNU coding style.
	* dzn/ast.scm (ast:dotted-name <list>): New specialization.
	* dzn/ast/accessor.scm (ast:function* <foreign>): New specialization.
	(ast:member* <foreign>, ast:member* <system>): New specializations.
	* dzn/ast/goops.scm (<out-bindings>): Change <ast-list> parent to
	<formals>.
	* dzn/code.scm (%member-prefix, %name-infix, %type-prefix,
	%type-infix): New parameters.
	(.port.name <instance>): New specialization.
	(code:interface-include): Rename to...
	(code:interface-include*): ...this.
	(code:component-include): Rename to...
	(code:component-include*): ...this.
	(code:enum* <root>): New specialization.
	(code:assign-reply, code:bind-provides, code:bind-requires,
	code:class-member?, code:capture-member, code:component-port,
	code:data*, code:declarative-or-imperative, code:default-true,
	code:enum-definer, code:enum-field-definer, code:enum-literal,
	code:enum-name, code:enum-scope, code:enum-short-name, code:expand-on,
	code:expression, code:extension, code:function-type, code:functions,
	code:global-enum-definer, code:injected-bindings,
	code:injected-instances, code:injected-instances-system,
	code:instance-name, code:instance-port-name,
	code:main-event-map-match-return, code:main-out-arg,
	code:main-out-arg-define, code:member-equality, code:model,
	code:non-injected-bindings, code:non-injected-instances, code:ons,
	code:out-argument, code:port-bind?, code:port-name, code:port-release,
	code:port-reply, code:port-type, code:reply, code:reply-type,
	code:return, code:trace-q-out, code:trigger, code:upcase-model-name,
	code:used-foreigns, code:variable->argument, code:variable-name,
	string->enum-field): Move to...
	* dzn/code/legacy/code.scm: ...this new file.
	* dzn/code/legacy/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/code/language/c++.scm (c++:ref): New method.
	(template): Remove template instantiations.
	(ast->): Call print-header-ast, print-code-ast, print-main-ast,
	instead of template expanders.
	(c++:capture-arguments, c++:formal-type, c++:enum-field->string,
	c++:string->enum-field*, c++:enum->string, c++:type-name,
	c++:enum-field-type, c++:enum-literal, c++:model, c++:dzn-locator,
	c++:include-guard): Remove methods.
	(c++:pump-include): Remove procedure.
	* dzn/code/language/c++.scm (c++:type-ref): Move to...
	* dzn/code/language/c++-exception-wrappers.scm (c++:type-ref):
	...here.
	* dzn/templates/c++.scm: Remove.
	* dzn/templates/local.mk (dist_nocompile_%C%_scm_DATA): Remove it.
	* dzn/templates/c++/: Remove.
	* dzn/templates/local.mk (EXTRA_DIST)): Remove it.
	* dzn/code/scmackerel/c++.scm: New file.
	* dzn/code/scmackerel/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/code/scmackerel/makreel.scm (makreel:ast->expression): Move to...
	* dzn/code/scmackerel/code.scm: This new file, and rename to...
	(ast:expression->string): ...this.
	* dzn/code/scmackerel/c++.scm (dzn):
	* dzn/templates/c++-exception-wrappers.scm (ports-meta-list,
	check-bindings-list, check-in-binding, check-out-binding,
	c++:type-ref, type-name): New template definitions.
	* test/all/exception_wrappers/trace: Update trace.

	Eradicate <component-model>.[dzn_]check_bindings

2023-01-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Scope components too.
	* dzn/code/language/cs.scm (cs:non-primitive): Refactor.
	* dzn/templates/cs/main@component: Use x:non-primitive prefix for component.

2023-01-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Specifying the same trigger twice is now an error.
	* dzn/ast/wfc.scm (wfc<enum>): Refactor duplicate field definition check
	(wfc<on>): Check for redefinition of trigger.
	* test/all/wf_coverageDuplicate/wf_coverageDuplicate.dzn: Canonicalize.
	* test/all/wf_coverageDuplicate/baseline/verify.err: Add baseline.

2022-12-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add port_shadow_interface.
	* test/all/port_shadow_interface: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-02-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Resurrect -C,--no-constraint.
	* dzn/code.scm (%no-constraint?): New parameter.
	* dzn/commands/code.scm (main): Set it.
	* dzn/commands/verify.scm (main): Likewise.
	* dzn/code/scmackerel/makreel.scm (unconstrained-processes): New method.
	(model->scmackerel): Use them to honor -C,--no-constraint.

	guix: scmackerel: Update to 0.2.2.
	* guix/pack/scmackerel.scm (scmackerel): Update to 0.2.2.

2022-11-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Generate using SCMackerel.
	* dzn/code/scmackerel/makreel.scm: New file.
	* dzn/code/scmackerel/local.mk: New file.
	* Makefile.am: Include it.
	* dzn/templates/makreel.scm: Remove
	* dzn/templates/local.mk (dist_nocompile_%C%_scm_DATA): Remove it.
	* dzn/templates/makreel/: Remove.
	* dzn/code/language/makreel.scm (root->): Use root->scmackerel instead
	of template mechanism's x:source.
	(<continuation-pair>): Remove type.
	(makreel:arguments, makreel:defer*, makreel:defer-skip?,
	makreel:switch-context?, makreel:full-name, ast:provides-interfaces):
	New methods.
	(call-continuations): Rename to...
	(makreel:call-continuations): ...this.
	(members): Rename to...
	(makreel:member*): ...this.
	(variables-in-scope): Rename to...
	(makreel:variables-in-scope): ...this
	(makreel:process-haakjes): Rename to...
	(makreel:process-parens): ...this, and refactor.
	(makreel:stack-empty?): Refactor.
	(makreel:defer-skip): Rename to...
	(makreel:defer-skip?): ...this, and refactor.
	(mcrl2:process-identifier): Rename to...
	(makreel:process-identifier): ...this.
	(.event.name <assign>, makreel:locals <continuation-pair>): Remove
	specializations.
	(makreel:behavior->defer-qout, makreel:interface-reorder,
	makreel:assign-call-parameter makreel:interface-name,
	makreel:model-name, makreel:scope-name, makreel:multiple-provides?,
	makreel:negate-multiple-provides?, makreel:flush-provides-ports,
	makreel:port-variable*, ast:non-external-port*, ast:external-port*,
	makreel:action-sort, makreel:action-sort-event,
	enum-sort-global-public, makreel:enum-sort, makreel:reply-type-eq?,
	makreel:reply-type-sort, makreel:type-constructor,
	makreel:modeling-sort, makreel:event-type-name, no-tail-call,
	makreel:recurse?, makreel:non-recurse?, makreel:function-return-proc,
	makreel:function-return, makreel:called-function*,
	makreel:return-value, makreel:return-type-sort, ast:return-type-eq?,
	makreel:return-type, makreel:call-continuation-sort,
	ast:have-requires?, ast:have-no-requires?, makreel:queue-length,
	makreel:defer-queue-length, makreel:external-queue-length,
	makreel:event-act, makreel:event-act-provides,
	makreel:event-act-requires, pretty-print-dzn, makreel:event-prefix,
	makreel:trigger-name, makreel:interface-proc, makreel:interface*,
	ast:provides-interface*, makreel:unique-provides-port*, is-optional?,
	makreel:proc, makreel:proc-assign, makreel:proc-variable,
	makreel:else-proc, makreel:reply-synchronization, makreel:on-proc,
	makreel:stack-parameters, makreel:variable-parameter,
	makreel:function-name, makreel:process-parameters-return,
	makreel:shared-process-haakjes, makreel:continuation-haakjes,
	makreel:process-continuation, makreel:sum-helper-params,
	makreel:the-end, makreel:continuation, makreel:continuation-pair,
	makreel:behavior-continuation, makreel:ast-continuation,
	makreel:then-continuation, makreel:else-continuation,
	makreel:member-init, makreel:provides-proc, makreel:provides-pair*,
	makreel:provides-reply, makreel:provides-reply-init,
	makreel:provides-reset-reply, makreel:rename-flush-provides,
	makreel:allow-tau, makreel:interface-action-proc, makreel:action-proc,
	makreel:switch-context, ast:trigger*, ast:port-type-name,
	makreel:enum-literal, makreel:type-bound, makreel:type-check,
	makreel:stack?, makreel:stack-destructor,
	makreel:process-argument-stack?, makreel:enum-name,
	makreel:provides-port-name, makreel:single-provides-component,
	makreel:multiple-provides-component, makreel:constraint-continuation,
	makreel:constraint-continuation-illegal,
	makreel:constraint-component-illegal,
	makreel:semantics-provides-flush, shared-variable?,
	makreel:communicate-shared-state, makreel:shared-variable*,
	makreel:shared-interface, makreel:no-shared-interface): Remove
	methods.
	(makreel:interface-proc-memo, x:interface-proc-memo,
	makreel:continuation-process-identifier, mcrl2:process-continuation,
	last-statement?, unspecified?, make-continuation-pair,
	step-into-assign/variable, makreel:short-circuit?, as-int): Remove
	procedures.
	(interface-alist): Remove variable.
	(define-templates: Remove template instanstations.
	* dzn/config.scm.in (%template-dir): Support installed usage.
	* dzn/templates/makreel/component.mcrl2,
	dzn/templates/makreel/defer.mcrl2: New files.
	* dzn/templates/local.mk (dist_%C%_makreel_DATA): Add them to new
	variable.
	(dzn_templates_makreeldir): New variable.
	* dzn/verify/pipeline.scm (in-out:lts-hide-internal-labels): Update caller.
	* .dir-locals.el (scheme-mode): Remove stale Emacsy indent
	definitions, add process and entity indent definitions.
	* dzn/lts.scm (parse-label): Cater for port-blocking, port-<flush>.

2022-12-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	misc: Add seq.
	* dzn/misc.scm (seq): New procedure.

2023-04-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Generalize ast:statement*.
	* dzn/ast/accessor.scm (ast:statement* <behavior>): Do not skip over .statement;
	return .statement as list.
	(ast:statement* <blocking>, ast:statement* <guard>, ast:statement* <on>,
	ast:statement* <if>, ast:statement* <statement>): New specializations.
	* dzn/ast/accessor.scm (ast:variable* <behavior>, ast:variable*
	<model>): Remove overloads.
	* dzn/code.scm (code:ons): Update caller.

2022-12-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Cleanup makreel:tick-names.
	* dzn/code/language/makreel.scm (tick-names-): Append tick to numbered
	identifiers.  Use srfi-71 let instead of receive.  Fix layout.

2023-05-17  Janneke Nieuwenhuizen  <janneke@gnu.org>

	ast: Add ast:shared*.
	* dzn/ast/accessor.scm (ast:shared*): New method.
	* dzn/ast.scm: Re-export it.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Check for SCMackerel.
	* configure.ac: Add GUILE_MODULE_AVAILABLE check for SCMackerel.

2022-12-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Use scmackerel.
	* guix/pack/dezyne.scm (dezyne)[inputs]: Add scmackerel.
	[arguments]: In phase 'wrap-binares', add scmackerel.

	guix: Add scmackerel.
	* guix/pack/scmackerel.scm: New file.

2022-11-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	dzn: Use print-ast instead of template framework.
	* dzn/ast.scm (ast:previous-statement): New method.
	* dzn/misc.scm (display-join): New procedure.
	* dzn/code/language/dzn.scm
	(dzn:comment, dzn:model-name): Remove.
	(define-templates): Remove template instantiations.
	(operator->string, dzn:statement?,
	print-ast-join, print-indent, print-brace-open, print-brace-close,
	print-newline): New procedures.
	(print-ast, ast->string): New methods.
	(ast->dzn): Rewrite to use print-ast instead of expanders.
	(ast->): Likewise.
	(dzn:namespace, dzn:open-namespace, dzn:global, dzn:model, dzn:data,
	dzn:import*, dzn:instance, dzn:model-full-name, dzn:enum-literal,
	dzn:type, dzn:formal-type, dzn:direction, dzn:from, dzn:to,
	dzn:port-prefix, dzn:signature, dzn:statement, dzn:expand-statement,
	dzn:expression, dzn:expression-expand, dzn:action-arguments,
	dzn:blocking, dzn:external, dzn:injected, dzn:reply-port): Move to...
	* dzn/code/legacy/dzn.scm: ...this new file, and
	(dzn:define-type): Rename to...
	(dzn:type*): ...this.
	(dzn:global): Rename to...
	(dzn:global*): ...this
	(dzn:model): Rename to...
	(dzn:model*): ...this
	* dzn/templates/dzn.scm (define-type, global, model): Update
	accordingly.
	* dzn/templates/dzn/: Remove.
	* dzn/code/legacy/local.mk: New file.
	* Makefile.am: Include it.
	* dzn/code/language/scheme.scm (scheme:comment): New method.
	* dzn/templates/scheme.scm (comment): Use it.
	* test/all/inline-functions: Update baseline.

2022-12-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	templates: Untangle cross directory links.
	This enables rewriting backends for dzn, makreel, c++, ... with their
	templates without breaking other language backends.

	dzn/templates/*/: Remove all cross-directory symlinks.

2022-12-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Add ast:true, ast:false.
	* dzn/ast.scm (ast:true, ast:false): New variables.
	(ast:literal-true?, ast:literal-false?): Use them.

2022-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Use ast:continuation*.
	* dzn/ast/wfc.scm (wfc:continuation): Remove.
	(missing-return, tail-recursion): Update to use ast:continuation*.
	* test/all/wf_functionTailRecursion/baseline/verify.err: Update
	baseline.

2022-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Add naive ast:continuation*.
	This is a simplified version of makreel:continuation, to be used by wfc
	and scmackerel-based mCRL2 generation.

	* dzn/ast.scm (ast:continuation*): New method.

2022-12-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Add extract-call.
	* dzn/ast/normalize.scm (extract-call): New procedure.

	ast: Export ast:bool, ast:int, ast:void.
	* dzn/ast/lookup.scm: Export ast:bool, ast:int, ast:void.
	* dzn/ast.scm: Re-export them.

2021-05-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Move goops to dzn/code/goops/.
	* dzn/code.scm (<port-pair>, .port.name, .other.name): Move to...
	* dzn/code/goops.scm: ...this new file.
	* dzn/code/local.mk (dist_%C%_scm_DATA): Add it.

2023-01-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Also remove out-bindings in purge-data.
	* dzn/ast/normalize.scm (purge-data): Remove out-bindings.

2022-12-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Whitespace and layout fixes.
	This is mainly to help ediff-buffer with SCMackerel output.

	* dzn/code/language/makreel.scm (makreel:provides-reply): Use "i"
	instead of "r"
	(makreel:behavior->defer-qout): New method.
	(makreel:shared-process-haakjes, makreel:process-haakjes): Add
	whitespace.
	* dzn/templates/makreel.scm (stack-destructor): Use comma-space-infix.
	(allow-tau): Use newline-comma-prefix.
	* dzn/templates/makreel/comma-space-infix: New file.
	* dzn/templates/makreel/comma-suffix: Add whitespace.
	* dzn/templates/makreel: Whitespace fixes throughout.

2023-05-10  Rutger van Beusekom  <rutger@dezyne.org>
	    Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: foreign_requires: Fix model, handwritten mains, trace.
	* test/all/foreign_requires/trace: Add missing w0.world, w1.world
	events.
	* test/all/foreign_requires/foreign_requires.dzn (hello): Handle
	w0.world, w1.world.
	* test/all/foreign_requires/c++/main.cc (main): Update accordingly.
	* test/all/foreign_requires/scheme/main.scm (main): Likewise.
	* test/all/foreign_requires/javascript/main.js (main): Likewise.

2022-12-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: system_check_bindings: Rename from hellochecksystembindings.
	* test/all/hellochecksystembindings/main: Rename to...
	* test/all/system_check_bindings: ...this.

	test: hello_check_bindings: Rename from hellocheckcompbindings.
	* test/all/hellocheckcompbindings: Rename to...
	* test/all/hello_check_bindings: ...this.

2022-12-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: helloworld: Move to HELLO_TESTS.
	* test/all/local.mk (REGRESSION_TESTS): Move helloworld to...
	(HELLO_TESTS): ...here.

2022-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: wf_functionTailRecursion: Add trivial case.
	* test/all/wf_functionTailRecursion/wf_functionTailRecursion.dzn
	(Intf8): New interface.

2022-12-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: range_return: Canonicalize.
	* test/all/range_return/range_return.dzn (range_return.e): Rename to...
	(range_return.hello): ...this.
	(range_return.a): Rename to...
	(range_return.world): ...this.
	* test/all/range_return/trace: Update accordingly.
	* test/all/range_return/baseline: Update baseline.

	test: range_member: Canonicalize.
	* test/all/range_assign/range_assign.dzn (irange_member): Rename to...
	(ihello): ...this.
	(ihello.e): Rename to...
	(range_local.hello): ...this.
	(range_member): Update accordingly.
	* test/all/range_assign/baseline: Update baseline.

	test: range_call: Rename from range_function.
	* test/all/range_function: Rename to...
	* test/all/range_call: ...this, and canonicalize.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.
	* test/all/range_call/trace: Update accordingly.
	* test/all/range_call/baseline: Update baseline.

	test: range_assign_expression: Rename from range_expression.
	* test/all/range_expression: Rename to...
	* test/all/range_assign_expression: ...this, remove component and
	canonicalize.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.
	* test/all/range_assign_expression/trace: Update accordingly.
	* test/all/range_assign_expression/baseline: Update baseline.

	test: range_assign: Canonicalize.
	* test/all/range_assign/range_assign.dzn (range_local.e): Rename to...
	(range_local.hello): ...this.
	(range_local.a): Rename to...
	(range_local.world): ...this.
	* test/all/range_assign/trace: Update accordingly.
	* test/all/range_assign/baseline: Update baseline.

	test: range_local_expression: Rename from range_declaration_expression.
	* test/all/range_declaration_expression: Rename to...
	* test/all/range_local_expression: ...this, remove component and
	canonicalize.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.
	* test/all/range_local_expression/trace: Update accordingly.
	* test/all/range_local_expression/baseline: Update baseline.

	test: range_local: Canonicalize.
	* test/all/range_local/range_local.dzn (range_local.e): Rename to...
	(range_local.hello): ...this.
	(range_local.a): Rename to...
	(range_local.world): ...this.
	* test/all/range_local/trace: Update accordingly.
	* test/all/range_local/baseline: Update baseline.

2022-12-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove range_declaration.
	This a a non-canonical duplicate of range_local.

	* test/all/range_declaration: Remove.
	* test/all/local.mk (REGRESSION_TESTS): Remove it.

2022-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Support default value for <int>.
	* dzn/ast.scm (ast:values): Cater for <int>.

	test: Add hello_function_nest.
	* test/all/hello_function_nest: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add hello_functions_local.
	* test/all/hello_functions_local: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-12-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_function.
	* test/all/hello_function: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

	test: Add hello_function_variable.
	* test/all/hello_function_variable: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

	test: hello_function_void_bool_if: Move to REGRESSION_TESTS.
	* test/all/local.mk (HELLO_TESTS): Move hello_function_void_bool_if...
	(REGRESSION_TESTS): ...here.

	test: hello_functions: Rename from hello_function.
	* test/all/hello_function: Rename to...
	* test/all/hello_functions: ...this.
	* test/all/inline-functions/inline-functions.dzn: Update symlink.
	* test/all/local.mk (HELLO_TESTS): Move to...
	(REGRESSION_TESTS): ...here.
	* test/all/inline-functions/baseline: Update baseline.

	test: hello_function_assign: Move to HELLO_TESTS.
	* test/all/local.mk (REGRESSION_TESTS): Move hello_function_assign...
	(HELLO_TESTS): ...here.

2022-11-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Fix for normalized ast debug printing.
	* dzn/code.scm (code:om-): Split-off from...
	(code:om): ...here.
	(code:om+determinism): Print normalized ast in debug mode.

2022-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code Remove dead --debug flag.
	* dzn/commands/code.scm (parse-opts): Remove unused -d,--debug.

2022-11-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Do not memoize runtime:other-port.
	* dzn/vm/runtime.scm (runtime:other-port): Remove memoization.

2022-11-22  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Ignore provides shared state for defer.
	* dzn/code/language/makreel.scm (makreel:add-shared-variables): New
	accessor method.
	(makreel:communicate-shared-state): Communicate requires port shared
	state only.
	* dzn/templates/makreel.scm (defer-skip): Use new accessor.
	(requires-shared-variable?),
	(shared-variables),
	(behavior-with-variables),
	(state-vector),
	(state-member),
	(construct-state-vector),
	(state-var): New template definitions for direct accessor use.
	(defer-select-variable),
	(defer-predicate),
	(defer-predicate-true): Filter out requires shared variables.

2022-11-16  Rutger van Beusekom  <rutger@dezyne.org>

	test: Camera: Avoid overlapping port bindings in system diagram.
	* test/all/Camera/Optics.dzn (FocusControl, OpticsControl) : Reorder
	ports.

	test: LegoBallSorter: Reintroduce bricks as systems.
	* test/all/LegoBallSorter/LegoBallSorter.dzn (Brick1, Brick2, Brick3,
	Brick4): New system extracted from ...
	(LegoBallSorter): ... here.

2023-06-16  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_defer.
	* test/all/shared_defer/shared_defer.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-11-14  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Remove shared type naming kludge.
	* dzn/code/makreel.scm (makreel:add-shared-variables): Remove naming
	kludge.
	* dzn/ast/lookup.scm (.type): To simplify overloads for
	<shared-variable> and <enum-literal>.

	lookup: Resolve enum type from enum-literal through its parent.
	* dzn/code/dzn.scm (dzn:expression-expand): Make field-test parent of enum-literal.
	* dzn/ast/lookup.scm (.type): Redefine <shared-variable> and
	<enum-literal> overloads to locate enum in inteface behavior for a
	shared variable.

2022-11-12  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Support shared-field-test.
	* dzn/vm/evaluate.scm (eval-expression): Cater for <shared-field-test>.

2022-11-11  Rutger van Beusekom  <rutger@dezyne.org>

	lookup: Implement lookup for shared state.
	* dzn/ast/lookup.scm (ast:lookup-variable): Match concatenation of
	port.name and var name,
	(.variable): Preifx name with port.name.

2022-11-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Alarm: refactor shared variable use (?)
	* test/all/Alarm/Alarm.dzn (Alarm): Remeve obsolete guarding.

2022-10-31  Rutger van Beusekom  <rutger@dezyne.org>

	test: Alarm: Enable siren shared variable use.
	* test/all/Alarm/Alarm.dzn (ISiren.State): Remove.
	(Siren.state): Replace with...
	(Siren.sounding): ...this boolean.  Update accordingly.
	(Alarm.sounding): Remove.  Use siren.sounding instead.

2022-11-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: system_shared: Add shared state.
	* test/all/system_shared/system_shared.dzn (hello): Add shared state in
	guards.
	(world): Likewise.
	* test/all/system_shared/baseline/simulate.out: Update baseline.

2022-11-11  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_field_test.
	* test/all/shared_field_test/shared_field_test.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	makreel: Implement shared-field-test.
	* dzn/code/language/makreel.scm (tick-names-): Add case for shared-field-test,
	(makreel:interface-name <shared-field-test>): New specialisation,
	(makreel:shared*): New method, factored-out from...
	(makreel:shared-var*): ...here.
	(makreel:add-shared-variables): Use it to cater for shared-field-test
	next to shared-var.
	* dzn/templates/makreel/expression@shared-field-test,
	* dzn/templates/makreel/shared-component-proc@shared-field-test: New
	template overloads.

2022-11-11  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Support shared-field-test.
	This adds support for

	   <port>.<enum-var>.<enum-field>

	* dzn/parse/peg.scm (peg:parse)[shared-field-test]: New terminal.
	* dzn/ast/parse.scm (parse-tree->ast): Cater for it, produce instance
	of...
	* dzn/ast/goops.scm (<shared-field-test>): ... this new class.
	* dzn/ast/lookup.scm (.port<shared-field-test>,
	.variable<shared-field-test>): New specializations.

2022-11-11  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_enum.
	* test/all/shared_enum/shared_enum.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	makreel: Support enum, subint shared variables.
	* dzn/code/language/makreel.scm (makreel:add-shared-variables): For
	non-bool shared variable, update scope of type-name and expression.

2022-11-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add shared_assign.
	* test/all/shared_assign/shared_assign.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add shared_variable.
	* test/all/shared_variable/shared_variable.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-10-31  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add shared_requires.
	* test/all/shared_requires/shared_requires.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-11-10  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Communicate shared state conditionally.
	* dzn/code/language/makreel.scm (shared-variable?,
	makreel:communicate-shared-state): New accessor method.
	(makreel:shared-process-haakjes <continuation-pair>): New accessor overload.
	(makreel:shared-variable*): Restrict method type and return shared
	variables for the port of the action.

	* dzn/templates/makreel/ast-continuation@continuation-pair: Use
	shared-process-haakjes.
	* dzn/templates/makreel/assign@action: Move state communcation from here
	...
	* dzn/templates/makreel/proc@action: ... to here.
	* dzn/templates/makreel/assign-continuation@continuation-pair,
	* dzn/templates/makreel/ast-assign-continuation@continuation-pair,
	* dzn/templates/makreel/communicate-shared-state@port,
	* dzn/templates/makreel/shared-process-haakjes@continuation-pair: New
	template.

	* dzn/templates/makreel.scm (assign-continuation,
	ast-assign-continuation, shared-process-haakjes,
	communicate-shared-state): New template declaration.

2022-08-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_shared.
	* test/all/hello_shared/hello_shared.dzn: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2022-11-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	config: Add feature "shared".
	* dzn/config.scm.in (%feature-alist): Add "shared".
	* test/dzn/dzn.scm (features): Check for it.

2022-11-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Also run internal ports.
	* dzn/vm/goops.scm (<flush-return>)[trigger]: New field.
	* dzn/vm/util.scm (flush): Set it.
	(set-variables-<program-counter>-<runtime:instance>):
	New specialization.
	(rewrite-trace-head): Support optional arguments.
	(update-other-state): New procedure.
	(update-state): Use it to update internal other port for system
	simulation.
	* dzn/vm/compliance.scm (check-provides-compliance): Factor-out state
	update to...
	* dzn/vm/util.scm (update-state): ...here.
	* dzn/vm/compliance.scm (internal-check-compliance]: New method.
	* dzn/vm/run.scm (extend-trace): Use it to run compliance check on
	internal ports.
	* test/all/compliance_system_provides_bool/baseline/simulate.err,
	test/all/compliance_system_provides_bool/baseline/simulate.out,
	test/all/semantics/baseline/semantics.org: Update baseline.

2022-11-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: set-variables: Do not implicitly share variables.
	* dzn/vm/util.scm (set-variables): Use copy-tree when setting a list of
	variables.
	(set-state): Refactor.

2022-11-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Add new entry point for compliance-check.
	* dzn/vm/compliance.scm (check-provides-compliance): Change signature to...
	(check-provides-compliance<program-counter>-<runtime:instance>): ...this
	method, adding a <runtime:instance> parameter.
	(check-provides-compliance-<program-counter>): New specialization with
	old signature.

	simulate: Include internal ports in state.
	* dzn/vm/runtime.scm (runtime:%sut-port?, runtime:system-port?): New
	methods.
	* dzn/vm/util.scm (serialize-<system-state>-port): Use them to filter
	instances.
	(serialize-header-<system-state>-port): Likewise.
	(serialize-header-<system-state>): Remove specialization.
	(make-system-state): Include all ports instead of only boundary ports.
	* test/all/blocking_system2/baseline/simulate.out,
	test/all/compliance_system_hello_world/baseline/simulate.out,
	test/all/compliance_system_provides_bool/baseline/simulate.err,
	test/all/compliance_system_provides_bool/baseline/simulate.out,
	test/all/hello_system_reply/baseline/simulate.out,
	test/all/illegal_system_requires/baseline/simulate.err,
	test/all/illegal_system_requires/baseline/simulate.out,
	test/all/semantics/baseline/semantics.org,
	test/all/state_deadlock/baseline/simulate.out,
	test/all/system_shared/baseline/simulate.out: Update baseline.

2022-11-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Runtime cleanups.
	* dzn/vm/runtime.scm (ast:sorted-instance*): Fix formatting, usage of
	cute, if.
	(runtime:create-instances): Fix formatting, usage of cute.

2021-05-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	vm: Shared state.
	* dzn/vm/evaluate.scm (eval-expression): Take <program-counter> instead
	of <list> of variables.
	* dzn/vm/util.scm (eval-expression): Remove specializations.
	(init): Fix usage.
	(set-state): Encapsulate utility procedures as a result of interface
	change.

2022-10-31  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Implement shared state.
	* dzn/ast/goops.scm (deep-clone): Re-export deep-clone ...
	* dzn/ast/normalize.scm (split-complex-expressions): .. use here.

	* dzn/ast/lookup.scm (.variable): Implement .variable for shared-var
	that finds the shared-variable in the component in the case of makreel
	or the member variable in the corresponding interface behavior.
	* dzn/code/language/makreel.scm (<continuation-pair>): Define for if-else.
	(makreel:interface-reorder <continuation-pair>): Add overload.
	(mcrl2:process-identifier): Ignore <continuation-pair>.
	(makreel:continuation-process-identifier <continuation-pair>): Add overload.
	(makreel:locals-unmemoized): Add <continuation-pair> case.
	(makreel:locals <continuation-pair>): Add overload.
	(make-continuation-pair): New procedure ...
	(makreel:then-continuation-pair, makreel:else-continuation-pair):
	... use here in new overload.

	(makreel:interface-name <shared-var>, makreel:process-haakjes
	<continuation-pair>): Add overload.
	(tick-names-): Add <shared-variable> case.
	(makreel:shared-variable*): Make typed.
	(makreel:shared-var*): Refactor.

	(makreel:interface*, makreel:continuation-pair,
	makreel:behavior-continuation, makreel:ast-continuation,
	makreel:shared-interface, makreel:no-shared-interface): New accessor.

	* dzn/templates/dzn/expression@shared-var,
	* dzn/templates/dzn/expression@shared-variable,
	* dzn/templates/makreel/add-shared-value@shared-variable,
	* dzn/templates/makreel/ast-continuation@continuation-pair,
	* dzn/templates/makreel/component-hide-provides@port,
	* dzn/templates/makreel/continuation@continuation-pair,
	* dzn/templates/makreel/defer-predicate@shared-variable,
	* dzn/templates/makreel/defer-select-member@shared-variable,
	* dzn/templates/makreel/defer-select-variable@shared-variable,
	* dzn/templates/dzn/expression@shared-variable,
	* dzn/templates/makreel/interface-no-state-variables@interface,
	* dzn/templates/makreel/interface-state-sort@interface,
	* dzn/templates/makreel/interface-state-variable@variable,
	* dzn/templates/makreel/interface-state-variables@interface,
	* dzn/templates/makreel/reply-expression@shared-var,
	* dzn/templates/makreel/share-state@interface,
	* dzn/templates/makreel/shared-values@behavior,
	* dzn/templates/makreel/state-member@shared-variable,
	* dzn/templates/makreel/state-var@shared-variable,
	* dzn/templates/makreel/sum-helper-params@shared-variable: New template.
	* dzn/templates/makreel/continuation@ast,
	* dzn/templates/makreel/else-continuation@behavior,
	* dzn/templates/makreel/global-state-type@variable,
	* dzn/templates/makreel/state-sum@variable,
	* dzn/templates/makreel/then-continuation@behavior: Remove template.
	* dzn/templates/makreel/assign@action: Add state communication.

	* dzn/templates/makreel.scm: New template declarations.
	* dzn/templates/makreel.scm (global-state-type, state-sum-members):
	Remove template declaration.

2022-10-31  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Add shared-variable to component behavior.
	* dzn/ast/goops.scm (<shared-variable>): New class.
	* dzn/ast/lookup.scm (.port<shared-variable>): New specialization.
	* dzn/code/language/makreel.scm (tick-names-): Cater for
	<shared-variable>.
	(makreel:interface-name<shared-variable>): New specialization.
	(makreel:shared-process-haakjes<shared-variable>): New specialization.
	(makreel:shared-variable*, makreel:shared-var*): New methods.
	(makreel:add-shared-variables): New normalization procedure.
	(makreel:om): Use it.
	* dzn/templates/makreel.scm (shared-component-proc,
	shared-value): New template definitions.
	* dzn/templates/makreel/proc@behavior: Use them.
	* dzn/templates/makreel/process-parameters@shared-variable,
	dzn/templates/makreel/shared-component-proc@shared-var,
	dzn/templates/makreel/shared-value@shared-variable: New template files.

	verify/pipeline: Do not hide state communication for constraint LTS.
	* dzn/verify/pipeline.scm (in-out:lts-hide-internal-labels): Remove
	state.

2021-05-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Implement shared state.
	* dzn/goops.scm (<shared-var>): New class.
	* dzn/parse/peg.scm (peg:parse): Parse it.
	* dzn/parse/ast.scm (parse-tree->ast): Cater for it.
	* dzn/ast.scm (ast:equal?<shared-var>, .port<shared-var>,
	.variable<shared-var>): New specializations.
	* dzn/parse/complete.scm (complete:root): Cater for skipped action.
	* dzn/parse/tree.scm (is-a?): Refactor.
	* test/dzn/language.scm ("component10a"): Update baseline.

2023-01-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: unreachable_multiple_triggers: Rename from unreachable_shared.
	* test/all/unreachable_shared: Rename to...
	* test/all/unreachable_multiple_triggers: ...this.

2022-11-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	dzn: code-util: Move to dzn/code/util.
	* dzn/code-util.scm: Move to...
	* dzn/code/util.scm: ...here.  Use "code:" prefix instead of
	"code-util:".
	* dzn/: Update module imports and callers.

	dzn/code: Move to dzn/code/language.
	* dzn/code/c++.scm: Move to...
	* dzn/code/language/c++.scm: ...here.
	* dzn/code/c.scm: Move to...
	* dzn/code/language/c.scm: ...here.
	* dzn/code/cs.scm: Move to...
	* dzn/code/language/cs.scm: ...here.
	* dzn/code/dot.scm: Move to...
	* dzn/code/language/dot.scm: ...here.
	* dzn/code/dzn.scm: Move to...
	* dzn/code/language/dzn.scm: ...here.
	* dzn/code/javascript.scm: Move to...
	* dzn/code/language/javascript.scm: ...here.
	* dzn/code/json.scm: Move to...
	* dzn/code/language/json.scm: ...here.
	* dzn/code/makreel.scm: Move to...
	* dzn/code/language/makreel.scm: ...here.
	* dzn/code/scheme.scm: Move to...
	* dzn/code/language/scheme.scm: ...here.
	* dzn/code/c++-exception-wrappers.scm: Move to...
	* dzn/code/language/c++-exception-wrappers.scm: ...here.
	* dzn/code/local.mk: Move to...
	* dzn/code/language/local.mk: ...here.
	* Makefile.am: Update accordingly.
	* dzn/: Update module imports accordingly.

2022-12-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Use port.meta.provide,require, dzn.trace,_out,_qout,_qin.
	* runtime/cs/dzn/meta.cs (dzn.Meta.requires): Rename to...
	(dzn.Meta.require): ...this.
	(dzn.Meta.provides): Rename to...
	(dzn.Meta.provide): ...this.
	(dzn.port.Meta.Provides): Rename to...
	(dzn.port.Meta.Provide): ...this.
	(dzn.port.Meta.Requires): Rename to...
	(dzn.port.Meta.Reqruire): ...this.
	* runtime/cs/dzn/runtime.cs,
	dzn/templates/cs/*,
	test/all/*/main.cs: Update accordingly.

2023-06-30  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Explicitly check for valid `guild'.
	* configure.ac: Raise error if `guild' is missing.

2023-06-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.17.3.
	* guix/pack/dezyne.scm (dezyne): Update to 2.17.3.

2023-05-26  Janneke Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.17.3 since 2.17.2): New section.
	(Changes in 2.17.2 since 2.17.1): Typo.

2023-06-23  Janneke Nieuwenhuizen  <janneke@gnu.org>

	build: Fix man page dependencies.
	* configure.ac: Check for help2man.
	(have_help2man): New conditional.
	* Makefile.am (command_go): New variable.
	(doc/dzn.1, doc/dzn-%.1)[have_help2man]: Depend on it and on bin/dzn.

2023-05-25  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Fix support foreign injected trace output.
	* dzn/templates/code.scm (injected-port-require-override): Remove
	template declaration.
	* dzn/templates/c++/injected-port-declare@port: Remove template.
	* dzn/templates/c++/event-slot@trigger,
	* dzn/templates/c++/foreign-event-slot@trigger: Remove copying port
	objects across the locator reference to update meta.require with the
	caller information.

2023-05-05  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: bin/update.sh: Cater for queue-size-external.
	* test/bin/update.sh: Cater for queue-size-external.  Do not create
	legacy baseline/verify, baseline/simulate directories.

2023-05-08  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_component_shadow_missing_event.
	* test/all/parse_component_shadow_missing_event: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

	ast: Have .event lookup strictly return events.
	* dzn/ast/lookup.scm (.event <action>): Only return ast of type
	<event>.
	(.event <trigger>): Likewise.
	* dzn/ast/wfc.scm (call-context): Use "undefined event" instead of
	"undefined identifier".
	* test/all/undefined/component/action/baseline/verify.err,
	test/all/undefined/component/enum_as_action/baseline/verify.err:
	Update baseline.

2023-05-04  Janneke Nieuwenhuizen  <janneke@gnu.org>

	simulate: Soft-code default queue sizes.
	This is a follow-up to commit
	    342d28ec09ba30af772403a50bc6e874fe86dcba
	    commands: Add --queue-size-defer, --queue-size-external.

	* dzn/commands/simulate.scm (main): Use %queue-size,
	%queue-size-defer, %queue-size-external.

2023-04-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	.dir-locals: Fixup.
	This is a follow-up to commit
	    369779cc6affe83335ba47287c15a5aafaa11353
	    .dir-locals: Cater for Emacsen without Geiser.

	* .dir-locals.el (makefile-mode): Move non-geiser fixup into progn.

2023-04-25  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Remove generated files.
	This is a follow-up to commit
	    5cf135722f74a92c608eeb9e6c273161fb570ada
	    test: Add fall-back parser tests.

	* test/all/parse_fall_back_preprocessed_foo/parse_fall_back_preprocessed_foo.dzn,
	test/all/parse_fall_back_preprocessed_imported_bar/parse_fall_back_preprocessed_imported_bar.dzn,
	test/all/parse_fall_back_preprocessed_imported_baz/parse_fall_back_preprocessed_imported_baz.dzn: Remove.
	* .gitignore: Ignore them.

2023-04-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	test: Add missing shebangs to run scripts.
	This fixes `make check' on current ci.guix.gnu.org.

	* test/all/parse_import_order/run,
	test/all/parse_locations/run,
	test/all/parse_peg_locations/run: Add #! /bin/sh.

2023-04-24  Janneke Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.17.2.
	* guix/pack/dezyne.scm (dezyne): Update to 2.17.2.

2023-01-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.17.2 since 2.17.1): New section.
	(Changes in 2.17.1 since 2.17.0): Typo.

2023-03-23  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.18): Add requests of Michaël van de Ven.

2023-04-17  Karol Kobiela  <karol.kobiela@verum.com>

	test: Add fall-back parser tests.
	* test/all/parse_fall_back_defer,
	test/all/parse_fall_back_syntax,
	test/all/parse_fall_back_assign_void,
	test/all/parse_fall_back_import_both,
	test/all/parse_fall_back_import_path,
	test/all/parse_fall_back_import_self,
	test/all/parse_fall_back_out_binding
	test/all/parse_fall_back_import_twice,
	test/all/parse_fall_back_missing_event,
	test/all/parse_fall_back_type_mismatch,
	test/all/parse_fall_back_port_qualifier,
	test/all/parse_fall_back_interface_parens,
	test/all/parse_fall_back_preprocessed_foo,
	test/all/parse_fall_back_mixing_imperative,
	test/all/parse_fall_back_formal_shadow_type,
	test/all/parse_fall_back_non_existent_import,
	test/all/parse_fall_back_duplicate_definition,
	test/all/parse_fall_back_on_without_statement,
	test/all/parse_fall_back_out_binding_argument,
	test/all/parse_fall_back_component_without_trigger,
	test/all/parse_fall_back_preprocessed_imported_bar,
	test/all/parse_fall_back_preprocessed_imported_baz: Add new fall-back
	parse tests.
	* test/all/local.mk (PARSER_TEST): Add them.

	test: Add support for fall-back parsing.
	* test/dzn/dzn.scm (fall-back?): Add fall-back parse meta flag.
	(run-verify): Add command for fall-back parse tests.
	* test/bin/update.sh: Add command for fall-back parse baseline.

2023-04-12  Karol Kobiela  <karol.kobiela@verum.com>

	parse: Add and evaluate fall-back parse return code.
	* dzn/commands/parse.scm (parse): Capture and return (parse-failed?).
	(main): Return failure if (parse-failed?) is true.
	* dzn/parse.scm (string->parse-tree): Return parse result status.
	(parse-file+import-content-alist): Filter failed parse-trees, check and
	return (parse-failed?) flag.
	(file->ast, string->ast string): Capture and return (parse-failed?),
	skip ast if all parse-trees are incorrect.

2023-03-21  Karol Kobiela  <karol.kobiela@verum.com>

	parse: Unify syntax error display format.
	Simplify error message displayed by "dzn parse --fall-back" and "dzn
	language".  Error-handling and reporting now resembles a syntax-error
	and is shared between "dzn parse --fallback" and "dzn language".

	(format-display-syntax-error): New function to format and display syntax
	error.
	* dzn/commands/parse.scm (%peg:error): Parametrize to use it.
	* dzn/commands/language.scm (main) [handle-error]: Use
	format-display-syntax-error instead of locus.
	(locus): Remove since unsued.
	* dzn/parse/stress.scm (%peg:error): Remove parametrization,
	(const #f) is now default value.
	* dzn/peg/codegen.scm (%peg:error): Set default to (const #f).

2023-04-17  Karol Kobiela  <karol.kobiela@verum.com>

	parse: Add "undefined identifier"'s name to the error message.
	Add string->parse-tree wrapper to encapsulate PEG parametrization,
	improve error messages with line and column number and error type.

	* dzn/parse.scm (peg:syntax-error->message): Add "string" and "pos"
	parameters.
	(peg:handle-syntax-error): Update caller.
	[name]: New inner define.  Use it to include the undefined identifier's
	name in the error message.
	[peg:error->string]: Fix typo, actually adding "BRACE-CLOSE".
	(format-capture-syntax-error): New procedure, creates syntax-error-style
	message, returns procedure which invokes error-collector, compatible
	with (%peg:error).
	(string->fall-back-parse-tree): New procedure, wrapper for
	string->parse-tree, encapsulates PEG parametrization for external calls.
	* dzn/peg/codegen.scm (format-error): Update error format with correct
	line/column number and separate error-type.
	[get-error-type]: New inner define, return error-type base on from/to.
	(%peg:error): Update default parameter to accept line/column number,
	error type.
	* dzn/commands/language.scm (main): Remove non-used "errors" list.
	[handle-error]: Refactor inner define, replace pos argument with
	line/column number and error-type, remove internal line/column number
	calculation.
	* test/all/undefined/component/port/baseline/verify.err,
	test/all/undefined/interface/action/baseline/verify.err,
	test/all/undefined/interface/trigger/baseline/verify.err,
	test/all/undefined/var/baseline/verify.err: Update baseline.

2023-04-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Run indent.scm.
	Run

	    build-aux/indent.scm $(git ls-files '*.scm').

	*: Fix indentation of scheme files.

2023-04-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build-aux: Add indent.scm script.
	* build-aux/indent.scm: New file.
	* doc/dezyne.texi (Formatting Code): Document it.

2023-04-21  Janneke Nieuwenhuizen  <janneke@gnu.org>

	.dir-locals: Cater for non-Guix Emacsen.
	* .dir-locals.el (scheme-mode): Add proper indentation for "match".

	.dir-locals: Cater for Emacsen without Geiser.
	* .dir-locals.el (scheme-mode): Create geiser-guile-load-path if
	unbound.

2023-04-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Remove dead code.
	* dzn/ast/accessor.scm (ast:variable* <behavior>): Remove copy.
	(ast:variable* <model>): Likewise.

2023-03-30  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Make determinism error unambiguous.
	* dzn/vm/report.scm (initial-error-message): Remove "due to overlapping
	guards"; add model name to message.
	* test/all/determinism0/baseline/simulate.err,
	test/all/determinism0/baseline/simulate.out,
	test/all/determinism0/baseline/verify.err,
	test/all/determinism1/baseline/simulate.err,
	test/all/determinism1/baseline/simulate.out,
	test/all/determinism1/baseline/verify.err,
	test/all/determinism_interface/baseline/simulate.err,
	test/all/determinism_interface/baseline/simulate.out,
	test/all/determinism_modeling/baseline/simulate.err,
	test/all/determinism_modeling/baseline/simulate.out,
	test/all/determinism_out/baseline/simulate.err,
	test/all/determinism_out/baseline/simulate.out,
	test/all/determinism_out/baseline/verify.err,
	test/all/determinism_silent/baseline/simulate.err,
	test/all/determinism_silent/baseline/simulate.out,
	test/all/livelock_nondet/baseline/simulate.err,
	test/all/livelock_nondet/baseline/simulate.out,
	test/all/unreachable_determinism/baseline/simulate.err,
	test/all/unreachable_determinism/baseline/simulate.out,
	test/all/unreachable_determinism/baseline/verify.err: Update baseline.

	verify: Make determinism error unambiguous.
	* dzn/verify/pipeline.scm (report-fail): Remove "due to overlapping
	guards".

	doc: Reword overlapping guards.
	* doc/dezyne.texi (Verification Checks and Errors): Reword overlapping
	guards, elaborate on non-determinism error.

2023-03-23  Rutger van Beusekom  <rutger@dezyne.org>

	commands: Add --queue-size-defer, --queue-size-external.
	Using the default queue size of 3 for the defer or external queue is
	usually not required and can easily lead to a very large state space,
	and thus bad performance.  When a larger component queue is needed, it
	gets even worse.

	This patch adds --queue-size-defer and --queue-size-external options to
	code, verify, simulate, and traces, using -q,--queue-size for component
	queue size only.  The defer queue size defaults to 2, the external queue
	size defaults to 1.

	* dzn/code.scm (%queue-size): Move to...
	* dzn/config.scm.in (%queue-size): ...here.
	(%queue-size-defer, %queue-size-external): New parameters.
	(code): Remove unused "#x:queue-size" parameter, pass using
	parameterize.
	* dzn/commands/code.scm (main): Update caller.
	(parse-opts): Use defaults to add --q--queue-size-defer,
	--queue-size-external.
	* dzn/commands/graph.scm (parse-opts): Likewise.
	* dzn/commands/simulate.scm (parse-opts): Likewise.
	* dzn/commands/traces.scm (parse-opts): Likewise.
	* dzn/commands/verify.scm (parse-opts): Likewise.
	* dzn/code/makreel.scm (makreel:defer-queue-length,
	makreel:external-queue-length): New methods.
	(root->): Remove command-line lookup and parameterize of queue-size.
	* dzn/templates/makreel/component@component (DeferQueueLength),
	(ExternalQueueLength): Introduce makreel constants.
	(state_current): Use it.
	* dzn/templates/makreel/external-proc@port: Use it.
	* dzn/simulate.scm (simulate**): Add "#:queue-size-defer",
	"#:queue-size-external" parameters.  Parameterize them.
	(simulate*): Update caller.  Add "#:queue-size-defer",
	"#:queue-size-external" parameters.
	(simulate): Likewise.
	* dzn/vm/util.scm (%queue-size): Remove; use (dzn config.scm).
	(enqueue-external): Use %queue-size-external.
	(enqueue-external): Use corresponding queue size.
	* dzn/vm/step.scm (step<defer>): Likewise.
	* dzn/explore.scm (state-diagram, lts): Add queue size parameters.
	* test/all/defer_queuefull/baseline/simulate.out: Update baseline
	correspondingly.
	* test/dzn/dzn.scm (queue-size-defer, queue-size-external): New
	functions.
	(run-verify, run-traces, run-simulate-trace, run-lts): Use here to pass
	corresponding queue size via command line.
	* test/all/blocking_external/META,
	test/all/compliance_external_inevitable/META,
	test/all/external_asynchronous_sync/META,
	test/all/external_multiple_out1/META,
	test/all/external_multiple_out2/META,
	test/all/external_multiple_out3/META,
	test/all/hello_external_inevitable/META,
	test/all/illegal_external_inevitable/META,
	test/all/illegal_pessimism_external/META,
	test/all/queuefull_external2/META,
	test/bin/semantics.sh: Add increased queue-size-external.
	* test/all/defer_queuefull/baseline/simulate.out,
	test/all/defer_queuefull/baseline/verify.out: Update baselines.
	* test/all/defer_queuefull/trace: Shorten trace to match new defer
	default.
	* doc/dezyne.texi (queue-size, queue-size-defer, queue-size-external):
	New values.
	* doc/dezyne.texi (Verification Checks and Errors): Use it.
	(Invoking dzn code): Describe --queue-size-defer, --queue-size-external.
	(Invoking dzn graph): Likewise.
	(Invoking dzn simulate): Likewise.
	(Invoking dzn traces): Likewise.
	(Invoking dzn verify): Likewise.

2023-03-23  Paul Hoogendijk  <paul@dezyne.org>

	code: Handle system errors gracefully.
	For example, print a usefule error if opening file for writing fails.

	* dzn/code-util.scm (code-util:handle-exceptions): New exception handler.
	(code-util:dump): Use it here within catch.

2023-03-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Exit gracefully if no model is found.
	* dzn/simulate.scm (filter-root): Handle root without model.
	(simulate*): Exit gratefully when no dezyne model is found.

2023-03-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	config: Update copryight info years.
	* dzn/config.scm.in (%copyright-info): Move end to 2023.

2023-03-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Properly scope dzn::port_block and dzn::port_release calls.
	* dzn/templates/c++/main-event-map-in@trigger,
	dzn/templates/c++/main-event-map-valued-in@port-pair,
	dzn/templates/c++/main-event-map-valued-in@trigger,
	dzn/templates/c++/main-event-map-void-requires-in@trigger: Use
	dzn::port_release.
	* dzn/templates/c++/main-port-connect-in@trigger: Use dzn::port_block.

2023-02-27  Paul Hoogendijk  <paul@dezyne.org>

	test: wf_declarativeImperative: Add function with guard.
	* test/all/wf_declarativeImperative/wf_declarativeImperative.dzn: Add
	function with guard.
	* test/all/wf_declarativeImperative/baseline/verify.err: Update baseline.

	ast: Regard body of function as imperative.
	* dzn/ast.scm (ast:declarative?): A function's statement is never
	declarative.
	(ast:imperative?): Likewise.

2023-02-28  Paul Hoogendijk  <paul@dezyne.org>

	test: Add queuefull_external2.
	* test/all/queuefull_external2: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-03-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	explore: Add <illegal-error> after <queue-full-error>.
	This makes (some) LTSs with a <queue-full> error equal again.

	* dzn/explore.scm (rtc-lts->lts)[fix-queue-full-trace]: New inner
	define.  Use it to add <illegal-error> after <queue-full-error>.

	* test/all/defer_queuefull/META,
	test/all/queuefull_external/META: Remove.

2023-02-27  Paul Hoogendijk  <paul@dezyne.org>

	verify: Report <queue-full> as <illegal> instead of <deadlock>.
	* dzn/lts.scm (trim-queue-full): Remove.
	(deadlock-nodes): Remove caller.
	* dzn/templates/makreel/component@component (defer_queue): queue_full
	leads to Illegal.
	* dzn/templates/makreel/external-proc@port (portexternal_queue: Likewise.
	* dzn/templates/makreel/queue-proc-requires@port: Likewise.
	* dzn/verify/pipeline.scm (report-fail): Move <queue-full> error
	exception to 'illegal.
	* test/all/blocking_queuefull/baseline/verify.err,
	test/all/blocking_queuefull_reply/baseline/verify.err,
	test/all/defer_queuefull/baseline/verify.err,
	test/all/queuefull_component0/baseline/verify.err,
	test/all/queuefull_component1/baseline/verify.err
	test/all/queuefull_external/baseline/verify.err,
	test/all/queuefull_external_sync/baseline/verify.err,
	test/all/queuefull_external_sync/baseline/verify.out: Update baseline.
	* test/all/defer_queuefull/META,
	test/all/queuefull_external/META: New files.

2023-02-28  Paul Hoogendijk  <paul@dezyne.org>

	test: livelock_nondet.
	* test/all/livelock_nondet: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-02-27  Paul Hoogendijk  <paul@dezyne.org>

	lts: Fix hanging livelock witness for non-deterministic models.
	* dzn/lts.scm (tau-loop): Rewrite, cater for non-determinism.

2023-02-23  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add formal_binding.
	Reproduce lookup problem in formal binding.

	* test/all/formal_binding: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-02-23  Rutger van Beusekom  <rutger@dezyne.org>

	lookup: Avoid crash in formal binding lookup.
	* dzn/ast/lookup.scm (ast:event-formal): Range check index.

2023-02-15  Paul Hoogendijk  <paul@dezyne.org>

	test: Add blocking_skip_race.
	* test/all/blocking_skip_race/blocking_skip_race.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-02-16  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Fix false positive blocking race bug.
	This disallows run to completion behavior when queue not empty.

	* dzn/templates/makreel/component@component
	(semantics_provides_blocking): Prefix semantics_blocked_rt with queue_empty.
	* test/all/blocking_multiple_provides3/blocking_multiple_provides3.dzn
	(multiple_provides): Remove dead code.
	* test/all/collateral_blocking_multiple_provides0/collateral_blocking_multiple_provides0.dzn
	(multiple_provides): Likewise.

2023-02-07  Paul Hoogendijk  <paul@dezyne.org>

	test: Add complex_data.
	* test/all/complex_data: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-02-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Cater for data-returning function used as argument.
	* dzn/ast/normalize.scm (purge-data): Also purge arguments.

2023-02-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add import_cycle.
	Now that the C++ code generator, and the experimental C code generator
	generate #include's following the imports, any import cycle present in
	the DZN code will also be present in the C++ and C code.  Due to `use
	before define', we cannot use file-wide include guards.

	* test/all/import_cycle: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* test/all/import_cycle/META: Skip C++ and C.

2023-01-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add generalized_integer_temporaries.
	* test/all/generalized_integer_temporaries: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-01-31  Paul Hoogendijk  <paul@dezyne.org>

	test: Add generalized_integer.
	* test/all/generalized_integer: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	parse: Fix AST tree generation for patterns a-b-c and a-b+c.
	* dzn/ast/parse.scm (parse-tree->ast): From a-b-c, create (- (- a b) c).

2023-01-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: data_full: Enable for c.

	test: hello_out_data: Enable for c.

	c: Support out-parameters.
	* dzn/code/c.scm (c:comma): Whitespace.
	(c:arguments, c:address/deref, c:deref, c:ptr): New methods.
	(c:formal-data-type<argument>): New specialization.
	(c:type-name): Drop int16 conversion, as it is incompatible with
	all (plain) int/int* arguments.
	* dzn/templates/c.scm (formal-data-type, c-comma): Avoid stray newlines.
	(c-arguments, c:address/deref, c:deref, c:ptr, c:self,
	closure-struct-args): New template definitions.
	(closure-variable-definition): Remove stray comma.
	(formals): Use comma-prefix.
	* dzn/templates/c/argument-grammar: Whitespace.
	* dzn/templates/c/call-in-trigger@trigger: Use new #x:c:arguments.
	* dzn/templates/c/variable-name@formal: Add #x:c:deref.
	* dzn/templates/c/code-arguments@expression,
	dzn/templates/c/expression@expression,
	dzn/templates/c/expression@var,
	dzn/templates/c/expression@variable: Add #x:c:address/deref.
	* dzn/templates/c/expression@formal: Add #x:c:deref.
	* dzn/templates/c/formals@formal,
	dzn/templates/c/helper-member@formal,
	dzn/templates/c/method-parameters@formal: Add #x:c:ptr.
	* dzn/templates/c/expression@variable: Add #x:c:self.
	* dzn/templates/c/variable-name@out-formal,
	dzn/templates/c/c-arguments@argument,
	dzn/templates/c/code-arguments@argument,
	dzn/templates/c/code-arguments@formal,
	dzn/templates/c/code-arguments@variable,
	dzn/templates/c/comma-prefix,
	dzn/templates/c/helper-member@formal: New template files.

	ast: ast:argument->formal: Support <argument>, and <action>.
	* dzn/ast/goops.scm (<argument>)[expression]: New field.
	* dzn/code.scm (code:variable->argument): Set it.  Add expression
	parameter to use as parent.  Update callers.
	(code:variable-name<argument> code:variable-name<assign>,
	code:variable-name<field-test>, code:variable-name<var>): New
	specializations.
	(code:variable-name<ast>): Change to...
	(code:variable-name<top>): ...this.
	* dzn/ast/lookup.scm (.variable<argument>): New method.
	* dzn/ast.scm (ast:argument->formal): Use it to find formal.
	(ast:formal->index): Cater for <argument>.

2023-02-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Remove unused module imports.
	These were found using

	    make GUILE=~/src/guile/main/meta/guile GUILEC_FLAGS='--load-path=. -Wunused-module'

	Keeping (dzn misc) for debugging, even if otherwise unused.

	* dzn/ast.scm,
	dzn/ast/display.scm,
	dzn/ast/equal.scm,
	dzn/ast/goops.scm,
	dzn/ast/lookup.scm,
	dzn/ast/normalize.scm,
	dzn/ast/parse.scm,
	dzn/ast/wfc.scm,
	dzn/code.scm,
	dzn/code/c++.scm,
	dzn/code/dot.scm,
	dzn/code/dzn.scm,
	dzn/code/json.scm,
	dzn/code/makreel.scm,
	dzn/commands/code.scm,
	dzn/commands/graph.scm,
	dzn/commands/lts.scm,
	dzn/commands/parse.scm,
	dzn/commands/simulate.scm,
	dzn/commands/traces.scm,
	dzn/commands/verify.scm,
	dzn/explore.scm,
	dzn/indent.scm,
	dzn/lts.scm,
	dzn/parse/peg.scm,
	dzn/peg.scm,
	dzn/script.scm,
	dzn/simulate.scm,
	dzn/templates.scm,
	dzn/verify/constraint.scm,
	dzn/verify/pipeline.scm,
	dzn/vm/compliance.scm,
	dzn/vm/report.scm,
	dzn/vm/run.scm,
	dzn/vm/step.scm,
	dzn/vm/util.scm,
	test/dzn/dzn.scm,
	test/dzn/language.scm,
	test/dzn/normalize.scm,
	test/dzn/silence.scm: Remove unused module imports.

2023-01-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.17.1.
	* guix/pack/dezyne.scm (dezyne): Update to 2.17.1.

2023-01-27  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Update `NEWS',
	* NEWS (Changes in 2.17.1 since 2.17.0): New section.

2023-01-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add space.wostream.
	Suggested by Joran Jessurun <joran@ajmail.nl>.

	* test/all/space.wostream: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-01-27  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Lookup operator << via ADL.
	The C++ community appears to have settled on the policy that overloaded
	operators should be placed in the same namespace as the type for which
	they are overloaded, instead of the global namespace.  Examples of this
	are the fact that 2.17.0 does not compile on most if not all of the
	visual studio compilers.  Another example can be found in the google
	test framework described here:
	https://github.com/google/googletest/commit/0555b0eacbc56df1fd762c6aa87bb84be9e4ce7e.
	And a third example is on stackoverflow:
	https://stackoverflow.com/questions/3623631/where-should-non-member-operator-overloads-be-placed.

	* dzn/templates/c++/enum-to-string@enum: Place operator << in overloaded
	type namespace; place to_cstr and to_string in dzn namespace.
	* dzn/templates/c++/main-event-map-valued-provides-in@trigger,
	* dzn/templates/c++/main-port-connect-in@trigger: Prefix with dzn.
	* dzn/templates/c++/string-to-enum@enum: Place to_"type" from string dzn
	namespace.
	* dzn/templates/c++/main@component: Move to ..
	* runtime/c++/dzn/runtime.hh: Here and move with to_string into dzn namespace.
	* test/all/blocking_shell/c++/main.cc: Update to_* with dzn:: accordingly.

2023-01-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++ runtime: Remove unused closure captures.
	* runtime/c++/pump.cc (pump::release): Remove &runtime, port.

2023-01-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add no_return.
	* test/all/no_return/no_return.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-01-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: exception_wrappers: Compile without -Werror.
	* test/all/exception_wrappers/run (WARN_FLAGS): New variable.
	* test/lib/build.c++.make (WARN_FLAGS): Only set when unset.

2023-01-23  Rutger van Beusekom  <rutger@dezyne.org>

	test: Enable -Werror for c++.
	* test/lib/build.c++.make (WARN_FLAGS): Add -Werror.

	c++: Annotate [[noreturn]] on the illegal handler.

2023-01-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	maint: Post-release update.
	* doc/announce/ANNOUNCE-2.17.0: Update checksums by running make
	sum-announce.
	* Makefile.am (gen-announce): Update previous version.

	guix: dezyne: Update to 2.17.0.
	* guix/pack/dezyne.scm (dezyne): Update to 2.17.0.

2023-01-23  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Update `NEWS' and `ANNOUNCE'.
	*NEWS (Changes in 2.17.0 since 2.16.3): Move non-redundant enum
	generation to code.  Mention foreign compilation unit generation.
	* doc/announce/ANNOUNCE-2.17.0 (Changes in 2.17.0 since 2.16.3): Update
	accordingly.

2023-01-17  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Move foreign skel constructor to source file.
	* dzn/code-util.scm (code-util:generate-source?): Add foreign source file.
	* dzn/templates/c++/header-model@foreign: Move implementation of
	constructor...
	* dzn/templates/c++/model@foreign: ...here.
	* dzn/code/c++.scm (c++:include-guard): New method.
	* dzn/templates/c++.scm (include-guard, endif): Use it.
	* dzn/templates/c++/component-include@instance: Add #x:include-guard,
	and #x:endif.
	* dzn/templates/c++/endif@foreign: New template file.
	* test/all/foreign_optional/c++/main.cc: Add runtime.hh include.
	* test/all/hello_namespace_foreign/c++/library_foreign.cc: Likewise.
	Add locator.hh include.

2023-01-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Performance fix for "Report unused events in interfaces".
	* dzn/ast/wfc.scm (unused-event): Rename to...
	(unused-event): ...this.  Use tree-collect-filter, refactor to do that
	only once and use lset-difference.
	* dzn/ast/wfc.scm (wfc<interface>): Update caller.

2023-01-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lookup: Re-add memoization to ast:lookup.
	This is a follow-up to commit
	    bf8a56d541746088b6c8c09b1bc02a3db032c095
	    lookup: Re-add memoization to internals, performance fix.

	* dzn/ast/lookup.scm (ast:lookup): Add memoization.

2023-01-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Fix code generation performance.
	This is a follow-up to commit
	    ea66fb98a67014b464c89658b384149eb22cd599
	    makreel: Implicit interface constraints.

	* dzn/ast/goops.scm (.guard): Remove dead export.
	(<declarative-compound>): Revert inheriting from <compound> instead of
	<ast-list>.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_interface: Add simulator trace and baseline.
	* test/all/hello_interface/trace,
	test/all/hello_interface/baseline/simulate.out: New files.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Resurrect interface eligibles.
	This is a follow-up to commit
	    3a391ce488280cbec251dab105c5c2a978ef37d5
	    simulate: Let eligible be determined by the interface only.

	Reported by Joran Jessurun <joran@ajmail.nl> via IRC.

	* dzn/simulate.scm (eligible-labels): Use event-traces-alist to cater
	for different type of model.
	* test/all/deadlock_optional_out_only/baseline/simulate.out,
	test/all/determinism_deadlock/baseline/simulate.out,
	test/all/hello_modeling_nondet/baseline/simulate.out,
	test/all/hello_optional_nondet/baseline/simulate.out: Revert broken
	baselines.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.17.0.rc2.
	* guix/pack/dezyne.scm (dezyne): Update to 2.17.0.rc2.

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.17): Move done items...
	(DONE): ...here.
	(Release 2.17): Move remaining...
	(Release 2.18: ...here.  Add shared-state specific items.

	doc: Update `ANNOUNCE-2.17.0'.
	* doc/announce/ANNOUNCE-2.17.0 (NEWS): Update from NEWS.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.16.3 since 2.16.2): New section.
	(Changes in 2.17.0 since 2.16.2): Rename to...
	(Changes in 2.17.0 since 2.16.3): ...this, and remove 2.16.3 NEWS items.
	Mention skipping well-formedness check of imported components, C++
	runtime fix, C++ imported foreign component fix, C# foreign interface
	enum fix, C enum conversion and foreign fixes, well-formedness data
	constant expression fix.

	test: wf_expressionExpected: Add expression with extern constant.
	* test/all/wf_expressionExpected/wf_expressionExpected.dzn: Add
	expression "i == $0$".
	* test/all/wf_expressionExpected/baseline/verify.err: Update baseline.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Fix data == $..$ crash well-formedness check.
	Reported by Michael van de Ven <michael.van.de.ven@thermofisher.com> via
	IRC.

	* dzn/ast/accessor.scm (ast:full-name<declaration>): Cater for non-tree
	element.

2023-01-20  Paul Hoogendijk  <paul@dezyne.org>

	makreel: Reduce performance impact of unreachable code check.
	This is a follow-up to commit

	    021131bd086a6d8e92e2f5cd5637cdc19a236557
	    makreel: Add add tags for unreachable code check.

	* dzn/templates/makreel/proc@tag: Make tag a normal transition, i.e.,
	remove self-transition.  This dramatically reduces the performance
	impact of the unreachable code check.
	* dzn/ast/normalize.scm (tag-imperative-blocks): Only skip tagging for
	declarative illegals.
	* dzn/lts.scm (remove-info-edges): Rename to...
	(remove-state-edges): ...this.  Remove obsolete tag removal code.
	(remove-tag-edges): Remove.
	(deadlock-nodes, lts->traces): Update callers.
	* dzn/commands/lts.scm (main): Likewise.
	* dzn/verify/pipeline.scm (interface-taus): Add "tag".
	(component-taus): Likewise.
	* test/all/livelock_component/baseline/verify.out,
	test/all/livelock_iterator/baseline/verify.out,
	test/all/livelock_synchronous/baseline/verify.out: Update baseline.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add foreign_import_two.
	* test/all/foreign_import_two: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Fix using interface-enum in a foreign component.
	* dzn/templates/cs/foreign-reply@enum: Use type-name instead of enum-name.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Fix using new style interface-enum in included foreign.
	This is a follow-up to commit
	    549a754d9cd640fda56bc24f9d1e8563b12d0f5da
	    c++: Support new style enums.

	* runtime/c++/dzn/runtime.hh (operator()): Remove :: qualifier from
	to_string.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add foreign_import.
	* test/all/foreign_import: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c: Support foreign component at top of a system.
	* dzn/code/c.scm (c:connect-instance-name-right): New method.
	* dzn/templates/c.scm (connect-instance-name-right): Use it.

	c: Avoid generating doplicate enum string conversion functions.
	* dzn/code/c.scm (c:get-all-local-enums): New method.
	(c:generate-source?): New method.
	(ast->): Use it.
	* dzn/templates/c.scm (source-enum-string-function-definition): Use it.

	c: Cleanup templates.
	* dzn/templates/c.scm (instance-declaration, instance-init,
	instance-init-dzn-tracing, instance-declare-dzn-tracing,
	connect-port-name-right, connect-port-name-left,
	connect-instance-name-right, connect-instance-name-left): Remove
	redundant lambda.

	simulate: Support running provides foreign at top.
	* dzn/vm/step.scm (begin-step<runtime:foreign>): Step into foreign
	boundary interface instead of setting <implicit-illegal-error>.
	* dzn/vm/compliance.scm (zip): Cater for foreign provide boundary trace.
	(check-provides-compliance): Avoid compliance error for a foreign
	provides trace, and zip only.
	* dzn/vm/report.scm (pc-event?): Cater for foreign provide boundary trace.
	(trace-name): Likewise.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Include foreign header via import path.
	* dzn/code.scm (code:file-name<foreign>): Cater for imported foreign.
	* dzn/templates/c++/header-model@foreign:  Add foreign include.
	* dzn/code/c++.scm (c++:include-guard): New method.
	* dzn/templates/c++.scm (include-guard, endif): Use it.
	* dzn/templates/c++/component-include@instance: Add #x:include-guard,
	and #x:endif.
	* dzn/templates/c++/endif@foreign: New template file.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: Add meta dependency to pump.hh.
	This is a follow-up to commit
	    7fb69632f45679656b6eae04adc51aa18c0d5420
	    c++: Add a modicum of type safety.

	Reported by Joran Jessurun <joran@ajmail.nl> via IRC.

	* runtime/c++/dzn/pump.hh: Include meta.hh.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add compliance_system_hello_world.
	* test/all/compliance_system_hello_world: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	simulate: Fix crash for system compliance error.
	* dzn/vm/compliance.scm (check-provides-compliance): Check for instance
	instead of (%sut) to determine component-trigger / system-trigger.
	* test/all/compliance_system_provides_bool/baseline/simulate.err: Update
	baseline.

	test: bin/update.sh: Run simulator with --stricct.
	* test/bin/update.sh: Add --strict.

	c++: Cleanup enum-to-string, string-to-enum.
	* dzn/code/c++.scm (c++:string->enum): Rename to...
	(c++:string->enum-field*): ...this.
	(c++:enum->string): Return interface enums only.
	* dzn/templates/c++.scm (interface-string-to-enum): Remove.
	(string-to-enum): Rename to...
	(string-to-enum-field): ...this.
	(enum-to-string, strincg-to-enum): New template definitions.
	* dzn/templates/c++/string-to-enum@enum: Remove preprocessor guards.
	* dzn/templates/c++/enum-to-string@enum: Likewise.
	* dzn/templates/c++/global-enum-definer@enum: Add #x:enum-to-string,
	and #x:string-to-enum.
	* dzn/templates/c++/interface-enum-to-string@enum: Change from symlink
	to file.  Add include guards, use #x:enum-to-string and #x:string-to-enum.
	* dzn/templates/c++/string-to-enum@enum-field: Rename to...
	dzn/templates/c++/string-to-enum-field@enum-field: ...this.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>

	runtime c++: Remove unused to_string ().
	* runtime/c++/dzn/meta.hh.in (to_string): Remove.

	test: Add wostream.
	* test/all/wostream: Add test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	c++: Allow using enum operator << for any basic_ostream.
	* dzn/templates/c++/enum-to-string@enum: Change return type from
	std::string to char const* and make operator << a template.

	test: Add unused_event.
	* test/all/unused_event: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add here.

	wfc: Report unused events in interfaces.
	* dzn/ast/wfc.scm (unreferenced-event): New method.
	(wfc<interface>): Use here.
	* test/all/wf_interfaceMustDefineBehavior: Update baseline.
	* test/all/wf_interfaceMustDefineBehavior/baseline/verify.err: Update by
	running `make update-doc'.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update well-formedness snippets to use all events in interface.
	* doc/parse/assign-outside-on.dzn
	doc/parse/binding-cycle-elaborate.dzn,
	doc/parse/binding-cycle.dzn,
	doc/parse/binding-mismatch-direction.dzn,
	doc/parse/binding-two-wildcards.dzn,
	doc/parse/binding-wildcard-requires.dzn,
	doc/parse/component-action-used-as-trigger.dzn,
	doc/parse/component-provides-without-trigger.dzn,
	doc/parse/component-requires-without-trigger.dzn,
	doc/parse/component-trigger-used-as-action.dzn,
	doc/parse/component-without-provides.dzn,
	doc/parse/event-with-bool-parameter.dzn,
	doc/parse/function-missing-return.dzn,
	doc/parse/function-not-tail-recursive.dzn,
	doc/parse/inout-parameter-on-out-event.dzn,
	doc/parse/instance-port-not-bound.dzn,
	doc/parse/out-parameter-on-out-event.dzn,
	doc/parse/port-bound-twice.dzn,
	doc/parse/port-not-bound.dzn,
	doc/parse/valued-out-event.dzn: Use all events.
	* doc/parse/function-missing-return.texi: Update by running `make
	update-doc'.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: Rewrite interfaces to use all defined events.
	* test/all/alpha_local/alpha_local.dzn,
	test/all/complex_expressions/complex_expressions.dzn,
	test/all/complex_member/complex_member.dzn,
	test/all/compliance_blocking_function/compliance_blocking_function.dzn,
	test/all/compliance_blocking_out/compliance_blocking_out.dzn,
	test/all/compliance_invalid_action/compliance_invalid_action.dzn,
	test/all/compliance_optional/compliance_optional.dzn,
	test/all/compliance_provides_illegal4/compliance_provides_illegal4.dzn,
	test/all/compliance_provides_out/compliance_provides_out.dzn,
	test/all/compliance_requires_illegal/compliance_requires_illegal.dzn,
	test/all/compliance_sync_action/compliance_sync_action.dzn,
	test/all/deadlock_blocking_compliance/deadlock_blocking_compliance.dzn,
	test/all/deadlock_component0/deadlock_component0.dzn,
	test/all/deadlock_component1/deadlock_component1.dzn,
	test/all/foreign_import_system/hello_foreign.dzn,
	test/all/hello_namespace_foreign/hello.dzn,
	test/all/illegal_garbage/illegal_garbage.dzn,
	test/all/illegal_requires/illegal_requires.dzn,
	test/all/illegal_system_requires/illegal_system_requires.dzn,
	test/all/parse_component_without_trigger/parse_component_without_trigger.dzn,
	test/all/parse_interface_parens/parse_interface_parens.dzn,
	test/all/range_declaration/range_declaration.dzn,
	test/all/range_declaration_expression/range_declaration_expression.dzn,
	test/all/range_expression/range_expression.dzn,
	test/all/system_hello_world/system_hello_world.dzn,
	test/all/unreachable_component/unreachable_component.dzn,
	test/all/unreachable_constraint/unreachable_constraint.dzn,
	test/all/unreachable_shared/unreachable_shared.dzn,
	test/all/wf_componentNeedsProvides/wf_componentNeedsProvides.dzn,
	test/all/wf_componentNeedsTrigger/wf_componentNeedsTrigger.dzn,
	test/all/wf_dataInoutInOutEvent/wf_dataInoutInOutEvent.dzn,
	test/all/wf_dataOutInOutEvent/wf_dataOutInOutEvent.dzn,
	test/all/wf_eventNotAction/wf_eventNotAction.dzn,
	test/all/wf_outEventNonVoidReturn/wf_outEventNonVoidReturn.dzn,
	test/all/wf_injectionOutEvent/wf_injectionOutEvent.dzn,
	test/all/wf_undefined/wf_undefined.dzn,
	test/all/wf_undefined_function/wf_undefined_function.dzn: Rewrite
	interfaces to use all events defined in interface.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove unused events from interfaces.
	* test/all/deadlock_blocking_flush/deadlock_blocking_flush.dzn,
	test/all/defer_nested/defer_nested.dzn,
	test/all/hello_inevitable/hello_inevitable.dzn,
	test/all/hello_parse/hello_parse.dzn,
	test/all/wf_actionNotInOnEvent/wf_actionNotInOnEvent.dzn,
	test/all/wf_assignmentNotInOnEvent/wf_assignmentNotInOnEvent.dzn,
	test/all/wf_declarativeImperative/wf_declarativeImperative.dzn,
	test/all/wf_functionValueDiscarded/wf_functionValueDiscarded.dzn,
	test/all/wf_illegalOnlyStatement/wf_illegalOnlyStatement.dzn,
	test/all/wf_imperativeDeclarative/wf_imperativeDeclarative.dzn,
	test/all/wf_interfaceMustDefineBehavior/wf_interfaceMustDefineBehavior.dzn,
	test/all/wf_onEventInOnEvent/wf_onEventInOnEvent.dzn: Remove unused events.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: hello_alpha: Canonicalize and simplify.
	This test originated from an alpha renaming bug specifically related
	to the following pattern (now obsolete due to the unreachable check):

	    //interface
	    in void event2(int a);

	    //component
	    int a;
	    on require.event1, require.event2: illegal;
	    on require.event2(int x): {a = x; ...}

	* test/all/hello_alpha/hello_alpha.dzn: Canonicalize and simplify.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Uniquify imports before widen-to-imports.
	* dzn/parse/lookup.scm (widen-to-imports): Use delete-duplicates on imports.

	test: Add unused_interface_type.
	* test/all/unused_interface_type: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	scheme: Support using type of unused imported interface.
	* dzn/code/scheme.scm (scheme:name): New method.
	(scheme:names<interface>): Include enums.
	(scheme:exported-names): Likewise.

	c: Support using type of unused imported interface.
	* dzn/templates/c.scm (header-data): Remove.
	* dzn/templates/c/import-include@import: New template file.
	* dzn/templates/c/header@root: Add #x:import-include.

	cs: Support using type of unused imported interface.
	* dzn/code/cs.scm (cs:global-enum-definer): Remove.
	(cs:data): Remove.
	(code:data*<top>, code:data*<data>): New specializations.
	* dzn/templates/cs.scm (data): Use code:data*.
	(global-enum-definer): Use code:global-enum-definer.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Support using type of unused imported interface.
	* dzn/ast/lookup.scm (ast:unique-import*): New accessor.
	* dzn/code.scm (code:file-name<import>): New specialization.
	(code:data*): New method.
	(code:global-enum-definer<root>): Remove copy.
	(code:global-enum-definer<root>): Filter-out imported enums.
	* dzn/templates/c++.scm (header-data): Move to...
	* dzn/templates/code.scm (header-data): ...here.
	* dzn/templates/c++/import-include@import: New template file.
	* dzn/templates/c++/header@root: Add #x:import-include.
	* test/dzn/dzn.scm (run-code): Also generate code for <lang>/*.dzn.

	ast: Add ast:unique-import*, use it in lookup.
	* dzn/ast/lookup.scm (ast:unique-import*): New accessor.
	(widen-to-imports-unmemoized): Use it.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Allow overriding NODE in pre-inst-env.
	* build-aux/pre-inst-env.in (NODE): Prefer NODE from environment.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Let eligible be determined by the interface only.
	* dzn/simulate.scm (interface-event-traces-alist): Factor-out from
	(event-traces-alist): ...here.
	(eligble-labels): New procedure.
	* dzn/simulate.scm (end-report): Update callers.
	(run-trail): Likewise.
	* test/all/deadlock_component0/baseline/simulate.out,
	test/all/deadlock_component1/baseline/simulate.out,
	test/all/deadlock_optional_out_only/baseline/simulate.out,
	test/all/determinism_deadlock/baseline/simulate.out,
	test/all/hello_modeling_nondet/baseline/simulate.out,
	test/all/hello_optional_nondet/baseline/simulate.out: Update baseline.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add defer_local.
	* test/all/defer_local/defer_local.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	vm: Avoid hang when defer captures a local.
	* dzn/vm/step.scm (statement-continuation): Pop all locals after running
	defer.

	graph: Show normalized AST with -dd.
	* dzn/explore.scm (state-diagram, lts): Display normalized ast when
	debugity > 1.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Remove dangling template link.
	This is a follow-up to commit
	    31de4b3cc81375370dd7749f38cd470ac8cae6bf
	    c++: Remove async.

	* dzn/templates/c++/pump@root: Remove.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Disallow data variable in interface.
	* dzn/ast/wfc.scm (wfc<interface>): Report error when using a data
	variable member.
	* test/all/parse_defer/parse_defer.dzn (int): Move from...
	(hello): ...here.
	(ihello): Use it to add data member.
	* test/all/parse_defer/baseline/verify.err,
	test/all/parse_type_mismatch/baseline/verify.err,
	* test/all/wf_expressionExpected/baseline/verify.err: Update baseline.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Purge data variables from interface behavior.
	This avoids a crash in verify.

	* dzn/ast/normalize.scm (purge-data): Also purge interface's behavior.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_blocking_double_release: Stabilize to block0.hello.
	* test/all/compliance_blocking_double_release/compliance_blocking_double_release.dzn
	(icruel): New interface.
	(compliance_blocking_double_release.block1): Use it, to make block1
	non-compliance trace longer.
	* test/all/compliance_blocking_double_release/baseline: Update baseline.
	* test/all/local.mk (UNSTABLE_TESTS): Move
	compliance_blocking_double_release to...
	(REGRESSION_TESTS): ...here.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Remove constrained illegal traces from eligibles.
	This is a follow-up to commit
	    2b9dd21bc85517de042f02cc6d612b3b65588bba
	    simulate: Filter component's eligible events by interface eligibles.

	* dzn/simulate.scm (event-traces-alist): Use eligible-labels to filter-out
	error traces from interface-eligible.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>

	runtime c++: Avoid using uninitialized debug stream.
	* runtime/c++/dzn/context.hh (context::context): Guard debug printing
	against uninitialized ostream usage.
	* runtime/c++/pump.cc (pump::block): Remove redundant guarding.

	wfc: Cleanup.
	* dzn/ast/wfc.scm (wfc<action-or-call>): Remove dead code.
	(wfc<instance>, wfc<behavior>): Formatting.
	(call-context): Remove redundant code
	* dzn/ast/goops.scm (<action-or-call>): Remove dead code.

2023-01-20  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lookup: Re-add memoization to internals, performance fix.
	* dzn/ast/lookup.scm (search, search-import, wident-to-parent,
	widen-to-imports): Add memoization.
	(search): Remove redundant widen-to-imports.
	(ast:lookup): Unmemoize.
	* dzn/parse/lookup.scm (search): Remove redundant widen-to-imports.

2023-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Progress fixup.
	* Makefile.am (AM_V_SED_0, AM_V_GUILEC_0): Uniformize whitespace.

	wfc: Do not check behavior of imported component.
	* dzn/ast/wfc.scm (wfc<behavior>): Short-circuit for imported component.
	* test/all/parse_duplicate_definition/hello.dzn (hello): Copy to ...
	(cruel): ...this non-imported component.
	* test/all/parse_duplicate_definition/baseline/verify.err: Update
	baseline.

	verify: Do not normalize imported components.
	* dzn/code/makreel.scm (makreel:short-circuit?): New function.
	(makreel:om): Use it to short-circuit normalizations.
	* dzn/commands/verify.scm (main): Verifying an imported model is now an
	error.
	* test/all/hello_import_component/META (skip): New field; cannot verify
	imported component.
	* test/all/system_defer/META (skip): Likewise.
	* dzn/commands/traces.scm (main): Generating traces for an imported
	model is now an error.
	* test/all/hello_import_component/trace,
	test/all/system_defer/trace: New files.
	* test/all/hello_import_component/META (skip): New field; cannot run
	traces or verify on imported component.
	* test/all/system_defer/META (skip): Likewise.

2022-12-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.17.0.rc1.
	* guix/pack/dezyne.scm (dezyne): Update to 2.17.0.rc1.

	doc: Update `ANNOUNCE-2.17.0'.
	* doc/announce/ANNOUNCE-2.17.0: Update from NEWS.

2022-11-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Noteworthy bug fixes): Mention integers on event trail,
	param_shadow fix.

2022-12-14  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Re-define re-definition to reduce overhead.
	* dzn/ast/wfc.scm (re-definition): Remove recursion by introducing a
	version for shadowing and no-shadowing,
	(wfc<formal>): Extend for <formal>.
	* test/all/parse_duplicate_definition/baseline/verify.err,
	* test/all/parse_formal_shadow_type/baseline/verify.err: Update
	accordingly.

	lookup: Refactor lookup memoization.
	* dzn/ast/lookup.scm (search-import-unmemoized, search-unmemoized,
	widen-to-parent-unmemoized, widen-to-import-unmemoized,
	ast:lookup-list-unmemoized, ast:lookup-list, ast:lookup-variable-):
	Rename,
	(ast:lookup, ast:lookup-variable): Only memoize lookup functions.

2022-11-22  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Support new style enums.
	* dzn/code/c++.scm (c++:enum->string,c++:string->enum,c++:type-name):
	Add component and interface overloads; Remove type suffix.
	* dzn/templates/c++.scm (interface-enum-to-string,interface-string-to-enum):
	Rename to enum-to-string and string-to-enum respectively.
	* dzn/templates/c++/enum-definer@enum,
	dzn/templates/c++/global-enum-definer@enum: Replace outer struct with enum
	struct, remove inner enum type.
	* dzn/templates/c++/enum-to-string@enum: Add operator << overload for
	enum.
	* dzn/templates/c++/header-model@component: Move operator <<
	implementation to ...
	* dzn/templates/c++/model@component: Here.
	* dzn/templates/c++/header-model@interface: Remove interface- prefix.
	* dzn/templates/c++/main@component: Reorder includes (specific before general).

2022-11-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Remove dependency on makreel.
	* dzn/code/makreel.scm (%no-unreachable?): Move to...
	* dzn/code.scm (%no-unreachable?): ...here.
	* dzn/commands/code.scm: Remove (dzn code makreel) include.
	* dzn/commands/traces.scm: Update include.
	* dzn/commands/verify.scm: Likewise.
	* dzn/verify/pipeline.scm: Likewise.

2022-03-14  Paul Hoogendijk  <paul@dezyne.org>

	explore: Do not use a space after commas in LTS output.
	The Aldebaran format does not contain spaces.

	* dzn/explore.scm (lts->aut): Remove spaces.

2022-11-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add param_shadow.
	* test/all/param_shadow: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	cs: Use "this." in event slots to avoid shadowing by parameters.
	* dzn/templates/cs/event-slot@trigger,
	dzn/templates/cs/foreign-event-slot@trigger,
	dzn/templates/cs/valued-event-slot@trigger: Add "this." prefix.

	c++: Use "this->" in event slots to avoid shadowing by parameters.
	* dzn/templates/c++/event-slot@trigger,
	dzn/templates/c++/foreign-event-slot@trigger: Add "this->" prefix.

2022-11-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	DRAFt goops: Remove dead export.
	* dzn/ast/goops.scm: Remove ".prefix" from exports.

2022-11-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Do not normalize constraint for VM.
	This is a follow-up to commit
	    91b5b90cbea5bf4460740da789fe4338cb982248
	    makreel: Create constraint from makreel lts.

	* dzn/verify/constraint.scm (interface->constraint): Remove vm:normalize.

2022-11-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add system_shared.
	* test/all/system_shared: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	simulate: Include end-of-trail labels in eligible.
	* dzn/vm/report.scm (label->string, end-of-trail-labels): Move to...
	* dzn/vm/util.scm (label->string, end-of-trail-labels): ...here.
	(labels): Use them to include end-of-trail labels in eligible.
	(is-status?): Return status instead of #t.
	* test/all/end_of_trail_action/baseline/simulate.out,
	test/all/end_of_trail_action2/baseline/simulate.out,
	test/all/livelock_component/baseline/simulate.out: Update baseline.

	vm: Fix typo in zip.
	* dzn/vm/compliance.scm (zip): Actually compare both instances.
	Robustify against missing statement.

2022-11-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c: Oops, remove debugging.
	This is a follow-up to commit
	    d355e8a364e7a4239a3dba7ce95664f86f95d7e9
	    ast: Refactor ast:parent.

	* dzn/code/c.scm (ast->): Remove debugging.

2022-01-04  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Prepare for system support.
	* dzn/templates/makreel/model@component (requires_events, QueueLength,
	list2set, remove_port): And all of %% COMPONENT %% Move to...
	* dzn/templates/makreel/component@component:  ...this new template file.
	* dzn/templates/makreel.scm (component): Using this new tepmlate
	definition.

2022-10-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Remove unused template.
	This is a follow-up to commit
	    91b5b90cbea5bf4460740da789fe4338cb982248
	    makreel: Create constraint from makreel lts.

	* dzn/templates/makreel.scm (component-hide-provides): Remove
	template definition.

2022-10-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.17.0.rc0.
	* guix/pack/dezyne.scm (dezyne): Update to 2.17.0.rc0.

2022-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Add `ANNOUNCE-2.17.0'.
	* doc/announce/ANNOUNCE-2.17.0: New file.

2022-08-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.17): Move done items...
	(DONE): ...here.
	(Release 2.21): Document injected insight.
	(Release 3.0): Add lazy well-formedness checking.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.17.0 since 2.16.1): New section.

2022-10-28  Rutger van Beusekom  <rutger@dezyne.org>

	test: Camera: Update trace.
	This is a follow-up to commit
	    d92dbb7351bcb350be6059b5d0bbb1ee0e51f661
	    test: Camera: Update for cancel guarantee.

	* test/all/Camera/trace: Update.

2022-10-14  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add hello_constraint_multiple_provides.
	* test/all/hello_constraint_multiple_provides: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

	test: hello_multiple_provides: Re-add constraints in component.
	* test/all/hello_multiple_provides/hello_multiple_provides.dzn
	(hello_multiple_provides): Add constraint.

2022-10-26  Rutger van Beusekom  <rutger@dezyne.org>

	test/dzn: Add constrained-component, constrained-no-compliance stages.
	* test/dzn/dzn.scm (ltscompare-status?, run-constrained-component,
	run-constrained-no-compliance): New functions.

2022-09-19  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Constrain component after semantics.
	* dzn/code/makreel.scm (makreel:interface-name): New function,
	(makreel:provides-reply-init): Used here.
	* dzn/templates/makreel.scm (component-behavior-allow-provides,
	component-behavior-allow-requires, component-behavior-rename-requires):
	Change separator grammar.
	(component-behavior-comm-provides, component-behavior-rename-provides,
	component-defer-allow-provides, component-defer-allow-requires,
	component-defer-rename-requires): New templates.
	component-no-constraint): Define template for -C,--no-constraint.
	* dzn/templates/makreel/comm-provides-constraint@port,
	dzn/templates/makreel/component-allow-provides@port,
	dzn/templates/makreel/component-behavior-allow-provides@port,
	dzn/templates/makreel/constrained-semantics-allow-provides@port,
	dzn/templates/makreel/provides-constraint-allow-provides@port,
	dzn/templates/makreel/provides-interface-constraint@interface,
	dzn/templates/makreel/rename-comm-provides-constraint@port,
	dzn/templates/makreel/rename-provides-constraint@port,
	dzn/verify/constraint.scm: Remove reordered.
	* dzn/templates/makreel/component-behavior-allow-requires@port:
	Formatting.
	* dzn/templates/makreel/component-constraint@component
	(component_constrained_allow): Add defer_skip.
	* dzn/templates/makreel/component-behavior-comm-provides@port,
	dzn/templates/makreel/component-behavior-rename-provides@port,
	dzn/templates/makreel/component-defer-allow-provides@port,
	dzn/templates/makreel/component-defer-allow-requires@port,
	dzn/templates/makreel/component-defer-rename-requires@port,
	dzn/templates/makreel/component-no-constraint@component: New template
	file.
	* dzn/templates/makreel/component-hide-provides@port,
	dzn/templates/makreel/component-parallel-constraint@component,
	dzn/templates/makreel/component-parallel@component,
	* dzn/templates/makreel/component-rename-provides@port: Remove template
	file.
	* dzn/templates/makreel/model@component: Restructure processes for constraint.
	* dzn/templates/makreel/multiple-provides-constraint@component
	(provides_constraint): Remove queue_empty.
	* dzn/templates/makreel/semantics-provides-flush@component: Add
	queue_not_empty.
	* dzn/templates/makreel/semantics-provides-unblocked-replies@port:
	Remove redundant parens.
	* dzn/templates/makreel/semantics-rename-provides@port: Update reply
	renaming accordingly.

2022-10-21  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Document mcrl2 process relations.
	* dzn/templates/makreel/process-dependencies.dot.

2022-10-11  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Remove defer_q_empty.
	* dzn/templates/makreel/model@component (act): Remove defer_q_empty, defer_q_empty'.
	(component_constrained_allow, defer_queue, component_behavior_allow):
	component_semantics_comm, component_semantics_allow,
	component_semantics): Remove them.
	(component_allow): Likewise.  Also allow defer_end.
	(component): Likewise, also hide defer_skip.

2022-08-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add huge_constraint.
	* test/all/huge_constraint: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add huge_interface.
	* test/all/huge_interface: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-09-16  Rutger van Beusekom  <rutger@dezyne.org>

	verify: Add -j,--jitty option.
	* dzn/commands/code.scm (parse-opts): Add -j,--jitty option.
	* dzn/commands/traces.scm (parse-opts): Likewise.
	(model->lts):
	* dzn/commands/verify.scm (parse-opts): Likewise.
	* dzn/commands/traces.scm (model->lts):
	* doc/dezyne.texi (Invoking dzn traces): Document it.
	(Invoking dzn verify): Likewise.

	verify: Add --no-interfaces option.
	* dzn/commands/verify.scm (parse-opts): Add --no-interfaces option.
	* dzn/verify/pipeline.scm: Use it to skip interface verification.
	* doc/dezyne.texi (Invoking dzn verify): Document it.

2022-09-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Add -D,--no-non-compliance option.
	* dzn/commands/code.scm (parse-opts): Add -D,--no-non-compliance option.
	* dzn/commands/traces.scm (parse-opts): Likewise.
	* dzn/commands/verify.scm (parse-opts): Likewise.
	* dzn/verify/constraint.scm (lts->makreel): Use it to skip generating
	constraint-any.
	* dzn/verify/pipeline.scm (pretty-verify-pipeline)[flags->string]: Add
	--no-non-compliance.
	* doc/dezyne.texi (Invoking dzn code): Document it.
	(Invoking dzn traces): Likewise.
	(Invoking dzn verify): Likewise.

2022-09-15  Rutger van Beusekom  <rutger@dezyne.org>

	verify: Add -C,--no-constraint option.
	* dzn/commands/code.scm (parse-opts): Add -C,--no-constraint option.
	* dzn/commands/traces.scm (parse-opts): Likewise.
	* dzn/commands/verify.scm (parse-opts): Likewise.
	* dzn/templates/makreel.scm (component-parallel
	component-parallel-constraint component-constraint): Add template
	indirections for the constraining process.
	* dzn/templates/makreel/model@component: Move provides constraint...
	* dzn/templates/makreel/component-constraint@component,
	dzn/templates/makreel/component-parallel-constraint@component,
	dzn/templates/makreel/component-parallel@component,
	dzn/templates/makreel/component-constraint@component: ...to these new
	templates.
	* doc/dezyne.texi (Invoking dzn code): Document it.
	(Invoking dzn traces): Likewise.
	(Invoking dzn verify): Likewise.
	* dzn/verify/pipeline.scm (pretty-verify-pipeline)[flag-string]: New
	inner define.
	[flags->string]: Use it to print --no-constraint.

2022-09-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add constraint_modeling_nondet.
	* test/all/constraint_modeling_nondet: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add constraint_nondet2.
	* test/all/constraint_nondet2: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-09-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add constraint_nondet.
	* test/all/constraint_nondet: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-08-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_nondet.
	* test/all/hello_nondet/hello_nondet.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: interface_nondet: Rename from hello_nondet.
	* test/all/hello_nondet: Rename to...
	* test/all/interface_nondet: This.
	* test/all/local.mk (HELLO_TESTS): Update accordingly.

2022-08-24  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Create constraint from makreel lts.
	* dzn/verify/constraint.scm: New file.
	* dzn/verify/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/templates/makreel.scm (constraint-start constraint-prefix,
	constraint-branch, constraint-assign, constraint-process-parameters):
	Remove template definitions.
	* dzn/templates/makreel/dot-space-suffix: Remove grammar.
	* dzn/templates/makreel/constraint-branch@constraint-branch,
	dzn/templates/makreel/constraint-branch@constraint-process,
	dzn/templates/makreel/constraint-branch@illegal,
	dzn/templates/makreel/constraint-branch@unconstrained-process,
	dzn/templates/makreel/constraint-prefix@action,
	dzn/templates/makreel/constraint-prefix@constrained-legal,
	dzn/templates/makreel/constraint-prefix@illegal,
	dzn/templates/makreel/constraint-prefix@interface,
	dzn/templates/makreel/constraint-prefix@reply,
	dzn/templates/makreel/constraint-prefix@trigger,
	dzn/templates/makreel/constraint-process-parameters@variable,
	dzn/templates/makreel/constraint@constraint,
	dzn/templates/makreel/expression@constraint-transition: Remove templates.
	* dzn/code/makreel.scm (makreel:interface-name<constraint>,
	makreel:interface-name<constraint-branch>,
	makreel:interface-name<constraint-process>): Remove specializations.
	(makreel:constraint-start, makreel:constraint-prefix,
	makreel:constraint-empty-prefix,
	makreel:constraint-assignment*, top-constraint-branch,
	constrained-illegal?, makreel:constraint-branch*,
	makcreel:constraint-process-parameters): Remove.
	* dzn/ast/goops.scm (<constraint-transitions>, <constraint-transition>,
	<constraint-process>, <unconstrained-process>, <constraint-branch>,
	<constraint-branches>, <constraint>, constrained-legal>): Remove
	classes.
	* dzn/ast/accessor.scm (ast:constraint-branch*,
	ast:constraint-transition*, ast:assignment*): Remove.
	* dzn/explore/constraint.scm: Remove.
	* dzn/explore/local.mk: Remove.
	* Makefile.am: Remove include.

2022-09-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts: Use edges, node-edges instead of succ, node-succ.
	* dzn/lts.scm: Rename succ[s] => edges.

	lts: Use functional style: Refactor generate-traces.
	* dzn/lts.scm (%fout-inc, node-allowed-end?, node-close): Move into...
	(generate-trace): ...here.  Rename parameters, rename to...
	(generate-traces): ...this.  Refactor.
	(lts->traces): Update caller.

	lts: Use functional style: lts-tau-loops.
	* dzn/lts.scm (lts-tau-loops)[report-cycle]: Remove.  Use vector-fold
	and fold to accumulate loops.

2022-09-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts: Use functional style: Make <node> immutable.
	* dzn/lts.scm (<node>): Use define-immutable-record-type.
	(set-node-rtc?!, set-node-nondet-witness!, set-node-allowed-end?!,
	set-node-close!): Remove.

	lts: Use functional style: lts->rtc-lts.
	* dzn/lts.scm (lts->rtc-lts): Use set-field and vector-set! instead of
	set-node-*.

	lts: Use functional style: generate-trace.
	* dzn/lts.scm (generate-traces)[set-allowed-end?]: New inner define.
	Use set-field and vector-set! instead of set-node-*.

	lts: Use functional style: add-failures.
	* dzn/lts.scm (add-failures): Use set-field and vector-set! instead of
	set-node-*.

	lts: Use functional style: nondeterministic-nodes.
	* dzn/lts.scm (nondeterministic-nodes): Use set-field and vector-set!
	instead of set-node-*.

	lts: Use functional style: lts-tau-loops.
	* dzn/lts.scm (lts-tau-loops): Use set-field and vector-set! instead of
	set-node-*.

	lts: Use functional style: annotate-parent.
	* dzn/lts.scm (annotate-parent): Use set-field and vector-set! instead
	of set-node-*.

	lts: Use functional style: construct.
	* dzn/lts.scm (construct-lts): Use set-field and vector-set! instead of
	set-node-*.  Rename #:traces? parameter to #:pred?.
	(aut-text->lts): Likewise, update caller.
	(generate-traces): Update caller.

	lts: Cleanups.
	* dzn/lts.scm (annotate-parent)[update-frontier]: New inner define.
	Use it to rewrite long lines, remove lambdas.
	* dzn/lts.scm (iota-distance-sorted): New function, factored-out from...
	(lts-tau-loops): ...here.
	(deadlock-nodes, illegal-nodes, nondeterministic-nodes): Use it.
	(deadlock-nodes)[has-deadlock?]: Replace by...
	[edges?]: ...this.  Refactor.
	(tau-loop): Use eq? for state comparison.
	(assert-livelock): Break long line.
	(assert-deadlock): Break long line.
	(add-failures)[remove-optional, node:modeling->tau]: New
	inner defines.  Use them to remove lambdas, and break long lines.
	(lts->rtc-lts)[step-rtc]: New inner define.  Break long
	line.

2021-11-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts: Use functional style: Use set-field for <node>.
	* dzn/lts.scm (remove-info-edges): Use functional setters and
	vector-map-one instead of set-node-*.
	(remove-tag-edges): Likewise.
	(add-failures): Likewise.
	(lts->rtc-lts): Likewise.
	(deadlock-nodes): Rewrite.

2022-09-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts: Cleanups.
	* dzn/lts.scm (WHITE, GREY, BLACK): Rename to...
	(%white, %grey, %black): ...this.
	(construct-lts, lts-tau-loops): Update accordingly.

2022-09-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts: Use functional style: Refactor trim-queue-full.
	* dzn/lts.scm (trim-queue-full): Use functional setters and
	vector-map-one instead of set-node-* and vector-for-each.  Also, use
	vector-set!.

	lts: Use functional style: Make <edge> immutable.
	* dzn/lts.scm (vector-map-one): New function.
	(add-failures): Use set-field instead of set-edge-from!.
	(lts->traces): Likewise.
	(<edge>): Use define-immutable-record-type.

	lts: Use functional style: Make <aut-header> immutable.
	* dzn/lts.scm (<aut-header>): Use define-immutable-record-type.

2021-11-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts: Use functional style: Refactor construction.
	* dzn/lts.scm (text->line-list, text-file->line-list): Remove.
	(construct-lts): Refactor.

2022-09-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts: Cleanups.
	* dzn/lts.scm: Add some paging with headers.
	(%rtc): Remove.
	(assert-file-exists): Remove.
	(text->aut-header): Break long line.
	(cleanup-label): Use let.

	lts: Remove unused modules.
	* dzn/lts.scm: Remove (ice-9 curried-definitions), (ice-9 ftw), (ice-9
	getopt-long), (ice-9 receive), (srfi srfi-9 gnu), and fix order.

2022-09-19  Paul Hoogendijk  <paul@dezyne.org>

	lts: Add lts->rtc-lts.
	* dzn/lts.scm (lts->rtc-lts): New procedure.

2022-09-20  Paul Hoogendijk  <paul@dezyne.org>

	lts: Trim traces with queue-full events on it.
	* dzn/lts.dzm (trim-queue-full). New function...
	(deadlock-nodes) ... and use it.
	* test/all/queuefull_component1/trace: Update trace.
	* test/all/queuefull_component0/baseline/verify.out,
	test/all/queuefull_component1/baseline/verify.out: Update baseline.

2021-11-22  Paul Hoogendijk  <paul@dezyne.org>

	lts: Remove duplicate <lts> data structure.
	The awkward <lts> record types with helpers is replaced by vector of
	<node>.  Throughout: Use shared strings instead of labels.  Use "eq?",
	"memq" instead of equal? and member.  Use "lts" instead of "nodes".

	* dzn/lts.scm (<lts>): Remove.
	(lts-succ, lts-pred, lts->nodes, lts->alphabet, lts-accept-edge-sets,
	lts-stable-accepts, test-lts-livelock, test-lts-livelock-2,
	rm-tau-loops, step-tau, step, run): Remove.
	(aut-text->lts): Remove.
	(make-shared-string): New function.
	(%<ack>, %<declarative-illegal>, %<defer>, %<flush>, %<illegal>,
	%<state>, %inevitable, %optional, %rtc, %tau): Use it to create new
	variables.
	(make-edge): Use it.
	(lts-hide): Use it.
	(lts->nodes): Rename to...
	(aut-text->lts): ...this.
	(initial, construct-lts): New functions.
	(assert-partially-deterministic): Rename to...
	(nondeterministic-nodes): ...this.  Refactor to work on new vector of
	<node> lts.
	(assert-deterministic): Likewise, rename to...
	(assert-nondeterministic): ...this, and refactor.
	(optional?): Use "eq?" instead of "equal?".
	(inevitable?): Likewise.
	* test/dzn/lts.scm (test:edges->successor-edge-vector,
	test:edges->predecessor-edge-vector test:lts->alphabet,
	test:acceptance-sets, test:lts-stable-accepts, test:root, test:trace,
	test:rm-tau-loops test:assert-deterministic, test:step-tau, test:step,
	test:run): Remove.
	(lts-edges): New function.
	(test:lts-hide, test:annotate-parent): Use it to rewrite.
	(test:tau-loop, test:assert-livelock, test:assert-deadlock,
	test:assert-illegal): Rewrite.
	(test:assert-partially-deterministic): Rename to...
	(test:assert-nondeterministic): ...this, and rewrite.
	(test:main): Rewrite.
	* dzn/commands/lts.scm (main): Update accordingly.

2022-08-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Add aut->aut-weak-trace+hide to pipeline.
	* dzn/verify/pipeline.scm (in-out:lts-hide-internal-labels): New
	function.
	(in-out.pipeline): Use it to add maut-weak-trace+hide,
	aut-weak-trace+hide.

2022-08-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Fix for ast:full-name.
	* dzn/ast/accessor.scm (ast:full-name<scope.name>): Return list instead
	of pair.

2022-08-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Do not normalize imported interfaces and components.
	* dzn/code.scm (code:short-circuit?): New function.
	(code:om): Use it to short-circuit transformations.
	(code:om+determinism): Likewise.
	* dzn/code/cs.scm (cs:om): Likewise.
	* dzn/code/scheme.scm (wrap-lonely-variable): Likewise.
	(scheme:om): Use it.

	normalize: Enable programmable short-circuit.
	* dzn/ast/normalize.scm (%normalize:short-circuit?): New parameter.
	normalize:state, normalize:state+illegals, normalize:event,
	normalize:event+illegals, rewrite-formals-and-locals, purge-data,
	add-function-return, add-defer-end, add-reply-port,
	binding-into-blocking, remove-otherwise, add-explicit-temporaries,
	split-complex-expressions, group-expressions,
	simplify-guard-expressions, tag-imperative-blocks): Use it.

2022-08-23  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Document implicit interface constraints.
	* doc/dezyne.texi (Interface Contracts): Here using...
	* doc/examples/proxy.dzn: ...as an example.

2022-08-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Remove unused example.
	* doc/examples/Logger.dzn: Remove.

	test: hello_multiple_provides_requires: Remove redundant constraints.
	* test/all/hello_multiple_provides_requires/hello_multiple_provides_requires.dzn
	(hello_multiple_provides_requires): Remove redundant constraints.

	test: hello_multiple_out: Remove constraint.
	* test/all/hello_multiple_out/hello_multiple_out.dzn
	(hello_multiple_out): Remove constraint.

	test: hello_inevitable_illegal: Remove constraint.
	* test/all/hello_inevitable_illegal/hello_inevitable_illegal.dzn
	(hello_inevitable_illegal): Remove constraint.

	test: hello_multiple_provides: Remove constraint, canonicalize.
	* test/all/hello_multiple_provides/hello_multiple_provides.dzn
	(ihello.a): Rename to...
	(ihello.hello): ...this.
	(ihello.b): Rename to...
	(ihello.cruel): ...this.
	(hello_multiple_provides): Update accordingly and remove constraints.

	test: hello_system: Rename from system_hello.
	* test/all/system_hello/system_hello.dzn: Rename to...
	* test/all/hello_system/hello_system.dzn: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Remove system_hello.
	(HELLO_TESTS): Add hello_system.
	* build-aux/update-semantics.sh,
	dzn/simulate.scm,
	test/bin/semantics.sh: Update accordingly.
	* test/language/system-binding.dzn (system_hello): Rename to...
	(hello_system): ...this.
	* test/language/system.dzn (system_hello): Rename to...
	(hello_system): ...this.
	* test/dzn/language.scm ("system before instance",
	"system after instance", "system after binding"): Update baseline.
	* test/all/semantics/baseline/semantics.org (system_hello): Update
	baseline.

	test: system_booL_enum: Rename from hello_system.
	* test/all/hello_system/hello_system.dzn: Rename to...
	* test/all/system_bool_enum/system_bool_enum.dzn: ...this.
	* test/all/local.mk (HELLO_TESTS): Remove hello_system.
	(REGRESSION_TESTS): Add system_booL_enum.
	* build-aux/update-semantics.sh,
	test/bin/semantics.sh: Update accordingly.
	* test/all/semantics/baseline/semantics.org: Update baseline.

2022-07-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_int: Rename from hello_global_int.
	* test/all/hello_global_int: Rename to...
	* test/all/hello_int: ...this.
	* test/all/local.mk (HELLO_TESTS): Update accordingly.

	test: interface_int: Rename from hello_int.
	* test/all/hello_int: Rename to...
	* test/all/interface_int: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: hello_enum: Rename from hello_global_enum.
	* test/all/hello_global_enum: Rename to...
	* test/all/hello_enum: ...this.
	* test/all/local.mk (HELLO_TESTS): Update accordingly.

	test: interface_enum: Rename from hello_enum.
	* test/all/hello_enum: Rename to...
	* test/all/interface_enum: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2022-07-27  Rutger van Beusekom  <rutger@dezyne.org>

	graph: Change formatting state label in diagram.
	* dzn/vm/util.scm (state->string): Refactor and add "sut".
	* test/all/blocking-local-state-diagram/baseline/default.dot,
	test/all/state-diagram/baseline/default.dot,
	test/all/state-diagram/baseline/hide-actions.dot,
	test/all/state-diagram/baseline/hide-labels.dot,
	test/all/state-diagram/baseline/remove-extended.dot,
	test/all/state-diagram/baseline/remove-ports.dot: Update baseline.

2022-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	test: Camera: Remove constraint from components.
	* test/all/Camera/Acquisition.dzn (Acquisition.State,
	Acquisition.state): Remove.
	Remove constraint.
	* test/all/Camera/Camera.dzn (Driver.State, Driver.state): Remove.
	Remove constraint.
	* test/all/Camera/Optics.dzn (FocusControl.idle): Renove.
	Remove constraint.
	(Optics.State, Optics.state, Optics.ready): Remove.
	Remove constraint.

	test: LegoBallSorter: Refactor.
	* test/all/LegoBallSorter/LegoBallSorter.dzn: Add missing comments.
	* test/all/LegoBallSorter/MaterialHandler.dzn: Refactor Armor and
	IHandle; Extract functions sendRobotToOutputPick and finalizeOrPrepare.

2022-07-18  Rutger van Beusekom  <rutger@dezyne.org>

	test: LegoBallSorter: Use defer to remove synchronous callbacks.
	* test/all/LegoBallSorter/IConstrainedMove.dzn,
	test/all/LegoBallSorter/IFeed.dzn,
	test/all/LegoBallSorter/ITransfer.dzn,
	test/all/LegoBallSorter/Inspector.dzn: Remove synchronous callbacks.
	* test/all/LegoBallSorter/ConstrainedAxis.dzn,
	test/all/LegoBallSorter/EndConstrainedAxis.dzn,
	test/all/LegoBallSorter/HomeConstrainedAxis.dzn,
	test/all/LegoBallSorter/Robot.dzn: Use defer in the component instead.
	* test/all/LegoBallSorter/MaterialHandler.dzn: Idem as above; Inline
	tryCalibrated and startBatch.

	test: LegoBallSorter: Add armor.
	* test/all/LegoBallSorter/MaterialHandler.dzn (IHandleRobust): New interface.
	(Armor): New component.
	(MaterialHandler): Rename to...
	(Handler): ...this.
	(IHandle): Make strict.
	(MaterialHandler): New system.
	* test/all/LegoBallSorter/LegoBallSorter.dzn (LegoBallSorter): Use
	IHandleRobust.
	* test/all/LegoBallSorter/BallSorter.dzn (BallSorter): Likewise.

	test: LegoBallSorter: Split-off Robot from MaterialHandler.
	* test/all/LegoBallSorter/MaterialHandler.dzn (ITransfer): Move to...
	* test/all/LegoBallSorter/ITransfer.dzn: ...this new file.
	* test/all/LegoBallSorter/MaterialHandler.dzn (Robot, Transfer, Hoist,
	Lift, Gripper, Grip): Move to...
	* test/all/LegoBallSorter/Robot.dzn: ...this new file.

	test: LegoBallSorter: Remove constraint from components.
	* test/all/LegoBallSorter/lego.dzn (itouch.status)[none]: New field.
	* test/all/LegoBallSorter/ConstrainedAxis.dzn (ConstrainedAxis.State)
	]idle, moving]: Remove fields.
	[lostcalibratingHome, calibratingLength]: Rename to...
	[None, Home, Lenth]: ...these.
	Update users and remove constraint.
	* test/all/LegoBallSorter/Conveyor.dzn (Conveyor.State, Conveyor.s):
	Remove.
	Remove constraint.
	* test/all/LegoBallSorter/EndConstrainedAxis.dzn (EndConstrainedAxis.State,
	EndConstrainedAxis.s): Remove.
	Use itouch.status.  Remove constraint.
	* test/all/LegoBallSorter/FeedPort.dzn (FeedConvey.State,FeedPhase, FeedConvey.s,
	FeedConvey.p): Remove.
	(FeedConvey.next): New boolean.  Remove constraint.
	* test/all/LegoBallSorter/Feeder.dzn (Feed.State, Feed.s): Remove.
	(Feed.inventory): New subint.  Remove state.
	* test/all/LegoBallSorter/HomeConstrainedAxis.dzn (HomeConstrainedAxis.State,
	HomeConstrainedAxis.s): Remove.
	(HomeConstrainedAxis.home): New boolean.
	Remove constraint.
	* test/all/LegoBallSorter/LightSensor.dzn (LightSense.settlsing):
	Remove.
	Remove constraint.
	* test/all/LegoBallSorter/Motor.dzn (IMove.pulse): Remove.
	(Motor.pulse, Move.moving, Move.pulsing): Remove.
	Remove constraint.
	* test/all/LegoBallSorter/TouchSensor.dzn (ITouchSense): Use itouch.status.
	(ITouchSense.TouchSstate): Remove.
	(TouchSense.previous): Update user.
	(TouchSense.disabled): Remove.
	Remove constraint.

	test: Alarm: Remove constraint.
	* test/all/Alarm/Alarm.dzn (Alarm)[State, state]: Remove.  Remove
	constraint.

2022-07-25  Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Do not discard deferred statements at EOT.
	* dzn/simulate.scm (run-sut): Do not discard deferred statements when
	collaterally blocked on boundary at EOT.

2022-07-20  Rutger van Beusekom  <rutger@dezyne.org>

	vm/compliance: Refactor.
	* dzn/vm/compliance.scm (check-provides-compliance+): Push rtc-block-pc
	down, pull pcs up.

2022-07-21  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add interface_missing_reply.

2021-05-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add hello_constraint_modeling.
	* test/all/hello_constraint_modeling/hello_constraint_modeling.dzn: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2022-08-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add unreachable_constraint.
	* test/all/unreachable_constraint/unreachable_constraint.dzn,
	test/all/unreachable_constraint/baseline/verify.err: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	test: Add hello_constraint.
	* test/all/hello_constraint/hello_constraint.dzn: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2022-08-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "test: Disable LTS for some compliance tests."
	Now that graph supports implicit interface constraints, LTS can be
	re-enabled.

	This reverts commit c376593afc19726e0416bfd56fcb903f2a7817a5.

2022-08-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add compliance_failures_reply.
	* test/all/compliance_failures_reply/compliance_failures_reply.dzn,
	* test/all/compliance_failures_reply/META: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-07-15  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	makreel: Implicit interface constraints.
	This patch introduces the constraint data structure from which a
	constraining process is derived in makreel in order to derive when
	events are disallowed (illegal) in the component behavior from the
	provides interface(s).

	* dzn/ast/goops.scm (<constraint-transitions>, <constraint-transition>,
	<constraint-process>, <unconstrained-process>, <constraint-branch>,
	<constraint-branches>, <constraint>, <constrained-legal>): New classes.
	* dzn/ast/accessor.scm (ast:constraint-branch*,
	ast:constraint-transition*, ast:assignment*, ast:statement*): Add/extend
	ast accessors for constraint.
	* dzn/ast.scm (ast:modeling?<event>): Change to...
	(ast:modeling?<ast>): ..this.
	* dzn/ast/equal.scm (ast:equal?<reply, ast:equal?<the-end>): New
	specializations.
	* dzn/explore/constraint.scm: New file.
	* dzn/explore/local.mk: New file.
	* Makefile.am: Include it.
	* dzn/vm/step.scm (step<tag>, step<the-end>): New specializiation.
	* dzn/commands/graph.scm (main): Move normalization...
	* dzn/explore.scm (state-diagram): ...here, and...
	(lts): ...here.
	* dzn/vm/normalize.scm (normalize-compounds<root>): Change signature
	to...
	(normalize-compounds<ast>): ...this.
	(transform-end-of-on): Cater for <the-end>.
	* dzn/vm/util.scm (get-variables<program-counter><runtime:instance>):
	New specializiation.
	* dzn/code/makreel.scm (makreel:interface-name<constraint>,
	makreel:interface-name<constraint-branch>,
	makreel:interface-name<trigger>): New specializations.
	(makreel:port-variable*<port>): New specialization.
	(makreel:interface*): New method.
	(makreel:action-sort): Use it.
	(makreel:modeling-sort): Likewise.
	(makreel:event-act): Likewise.
	(makreel:interface-proc): Likewise.
	(pretty-print-dzn<top>): New specialization.
	(makreel:event-prefix<trigger>): New specialization.
	(ast:provides-interface*, makreel:unique-provides-port*): New methods.
	(makreel:reply-synchronization<trigger>): New specialization.
	(makreel:constraint, makreel:constraint-start,
	makreel:constraint-prefix, makreel:constraint-empty-prefix,
	makreel:constraint-assignment*, top-constraint-branch,
	constrained-illegal?, makreel:constraint-branch*,
	makreel:constraint-process-parameters, makreel:provides-port-name,
	makreel:single-provides-component, makreel:multiple-provides-component,
	makreel:constraint-continuation,
	makreel:constraint-continuation-illegal,
	makreel:constraint-component-illegal, makreel:semantics-provides-flush):
	New methods.
	* dzn/code/makreel.scm (root->): Move init to...
	(ast->): ...here.
	* dzn/templates/makreel.scm (semantics-provides-flush,
	semantics-provides-unblocked-out, provides-interface-allow, constraint,
	constraint-prefix, constraint-branch, constraint-assign,
	constraint-process-parameters, constraint-member-init,
	constraint-continuation, constraint-continuation-illegal,
	constraint-component-illegal, provides-constraint,
	provides-interface-constraint, provides-constraint-port-parallel,
	provides-constraint-allow-provides, single-provides-constraint,
	multiple-provides-constraint, rename-provides-constraint,
	comm-provides-constraint, rename-comm-provides-constraint,
	constrained-semantics-allow-provides,
	constrained-semantics-allow-requires): Add template declarations for
	constraint.
	* dzn/templates/makreel/comma-prefix,
	dzn/templates/makreel/dot-space-suffix: New grammar.
	* dzn/templates/makreel/comm-provides-constraint@port,
	dzn/templates/makreel/constrained-semantics-allow-provides@port,
	dzn/templates/makreel/constrained-semantics-allow-requires@port,
	dzn/templates/makreel/constraint-assign@assign,
	dzn/templates/makreel/constraint-branch@constraint-branch,
	dzn/templates/makreel/constraint-branch@constraint-process,
	dzn/templates/makreel/constraint-branch@illegal,
	dzn/templates/makreel/constraint-branch@unconstrained-process,
	dzn/templates/makreel/constraint-component-illegal@on,
	dzn/templates/makreel/constraint-continuation-illegal@on,
	dzn/templates/makreel/constraint-continuation@on,
	dzn/templates/makreel/constraint-member-init@variable,
	dzn/templates/makreel/constraint-prefix@action,
	dzn/templates/makreel/constraint-prefix@constrained-legal,
	dzn/templates/makreel/constraint-prefix@illegal,
	dzn/templates/makreel/constraint-prefix@interface,
	dzn/templates/makreel/constraint-prefix@reply,
	dzn/templates/makreel/constraint-prefix@trigger,
	dzn/templates/makreel/constraint-process-parameters@variable,
	dzn/templates/makreel/constraint-start@interface,
	dzn/templates/makreel/constraint@constraint,
	dzn/templates/makreel/expression@constraint-transition,
	dzn/templates/makreel/multiple-provides-constraint@component,
	dzn/templates/makreel/provides-constraint-allow-provides@port,
	dzn/templates/makreel/provides-constraint-port-parallel@port,
	dzn/templates/makreel/provides-constraint@port,
	dzn/templates/makreel/provides-interface-allow@interface,
	dzn/templates/makreel/provides-interface-constraint@interface,
	dzn/templates/makreel/rename-comm-provides-constraint@port,
	dzn/templates/makreel/rename-provides-constraint@port,
	dzn/templates/makreel/reply-expression@void,
	dzn/templates/makreel/reply-synchronization@trigger,
	dzn/templates/makreel/semantics-provides-flush@component,
	dzn/templates/makreel/semantics-provides-unblocked-out@port,
	dzn/templates/makreel/single-provides-constraint@component: New template
	files.
	* dzn/templates/makreel/source@root (constrained_legal,
	constrained_illegal): New acts.
	(Constrained_Illegal): New proc.
	* dzn/templates/makreel/model@component (provides_allow): Add #x:provides-interface-allow.
	(component_behavior_allow): Add constrained_legal, constrained_illegal.
	(component_semantics_allow): Likewise.
	(component_semantics): Communicate defer_q_empty, defer_end.
	Add #:provides-interface-constraint, providing provides_constraint.
	(component_constrained_comm, component_constrained_allow): New processes.
	(component_parallel): Use component_constrained instead of
	component_semantics.
	(component_allow): Add constrained_legal.
	(component): Likewise.
	* dzn/templates/makreel/proc@declarative-illegal,
	dzn/templates/makreel/proc@illegal: Remove delta.
	* dzn/templates/makreel/proc@on: Add constrained continuation.
	* dzn/templates/makreel/provides-allow@port: Remove interface tau_reply.
	* dzn/templates/makreel/semantics-async-defer-flush@ast,
	dzn/templates/makreel/semantics-async-defer@ast,
	dzn/templates/makreel/semantics-blocked-rtc-defer@ast,
	* dzn/templates/makreel/semantics-provides-blocked-defer@ast,
	* dzn/templates/makreel/semantics-provides-blocking-defer@ast: Add
	newline.
	* dzn/templates/makreel/semantics-requires@port: Use simple
	semantics_main instead of #:semantics_main.
	* test/all/illegal_provides/illegal_provides.dzn (illegal_provides):
	Move illegal to...
	(ihello): ...here.
	* test/all/illegal_provides/baseline/simulate.out,
	test/all/illegal_provides/baseline/simulate.err: Update baseline.

2022-07-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Implicit interface constraints.
	* dzn/vm/goops.scm (<program-counter>)[skip-compliance]: New field.
	* dzn/vm/compliance.scm (zip): Do not transplant port-illegal for error
	trace.
	(check-provides-compliance): Lookup provides-trigger from trace when
	missing.  Remove exception of trace rewrite for error trace.
	Set #:skip-compliance? to #true.
	* dzn/explore.scm (pc->rtc-lts)
	[blocked-prefix, check-compliance-blocked]: New inner defines.
	[run-label]: Run compliance check to zip port trace
	state.  Refactor main loop.
	(run-to-completion**): Add fallback.
	* dzn/vm/util.scm (state->string<system-state>): New specialization with
	include-provides? parameter.
	(pc->string): Use it for #:skip-compliance? case.
	* test/all/state-diagram/baseline/default.dot: Update baseline.

	simulate: Split off compliance check to vm.
	* dzn/simulate.scm (%compliance-check?, zip, action-other-provides-port,
	check-provides-fork, check-requires-provides-fork,
	check-provides-compliance, check-provides-compliance+,
	check-provides-compliance*): Move to...
	* dzn/vm/compliance.scm: ...this new file.
	* dzn/vm/local.mk (dist_%C%_scm_DATA): Add it.

2022-10-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Filter component's eligible events by interface eligibles.
	* dzn/simulate.scm (event-traces-alist)[system-event-traces-alist]:
	Rename to interfaces-event-traces-alist.  Use it to filter component's
	eligibles.

2022-07-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Implicit interface constraints.
	* dzn/simulate.scm (zip): When the port trace is illegal, truncate the
	component trace after entering the component.
	(check-provides-compliance): Implement implicit interface constaint:
	Insert new exit for illegal port trace.
	* test/all/compliance_failures_defer/baseline/simulate.err,
	test/all/compliance_failures_defer/baseline/simulate.out,
	test/all/compliance_provides_illegal4/baseline/simulate.err,
	test/all/compliance_provides_illegal4/baseline/simulate.out,
	test/all/illegal_provides/baseline/simulate.err,
	test/all/illegal_provides/baseline/simulate.out: Update baseline.

2022-08-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Skip context switches on defer label.
	* dzn/explore.scm (pc->rtc-lts)[run-label]: Skip context switches on
	defer label.

2022-08-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Cleanup.
	* dzn/explore.scm (pc->rtc-lts)[trigger-location]: Rename to...
	[on-location]: ...this.

2022-07-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Add some debugging.
	* dzn/explore.scm (pc->rtc-lts)[run-label,run-labels]: Add %debug
	printing.

2022-07-12  Rutger van Beusekom  <rutger@dezyne.org>

	test: compliance_failures_defer: Avoid constraint deadlock.
	* test/all/compliance_failures_defer/compliance_failures_defer.dzn (ihello):
	Handle cancel.
	(compliance_failures_defer): Likewise.

2022-08-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_provides_illegal: Avoid constraint deadlock.
	* test/all/compliance_provides_illegal/compliance_provides_illegal.dzn
	(ihello): Also allow cruel.
	* test/all/compliance_provides_illegal/baseline/simulate.out,
	test/all/compliance_provides_illegal/baseline/simulate.err: Update baseline.

	test: compliance_failures_choice: Avoid constraint deadlocks.
	* test/all/compliance_failures_choice/compliance_failures_choice.dzn
	(ihello.cruel): New event.
	* test/all/compliance_failures_choice/compliance_failures_choice.dzn
	(iworld.terminated): Rename to...
	(iworl.cruel): ...this.
	* test/all/compliance_failures_choice/compliance_failures_choice.dzn:
	Add h.cruel.
	* test/all/compliance_failures_choice/baseline/simulate.err,
	* test/all/compliance_failures_choice/baseline/simulate.out: Update
	baseline.

	makreel: Refactor null returns.
	* dzn/code/makreel.scm (makreel:interface-reorder
	makreel:assign-call-parameter, makreel:recurse?, makreel:non-recurse?,
	makreel:function-return-proc, makreel:return-type-sort,
	makreel:continuation-haakjes, makreel:the-end,
	makreel:rename-flush-provides, makreel:rename-flush-requires): Return
	false instead of null.

	test: Disable LTS for some compliance tests.
	* test/all/compliance_provides_illegal4/META (skip): Add "lts".
	* test/all/illegal_provides/META (comment): Likewise.
	* test/all/collateral_blocking_reply/META,
	test/all/compliance_failures_blocking_race/META,
	test/all/compliance_failures_choice/META,
	test/all/compliance_failures_defer/META,
	test/all/defer_collateral_blocking/META,
	test/all/illegal_blocking_race/META,
	test/all/match_blocking_race/META,
	test/all/missing_reply/META: New files.

2022-07-21  Rutger van Beusekom  <rutger@dezyne.org>

	graph: Cleanup fix-missing-reply-trace.
	* dzn/explore.scm (rtc-lts->lts)[fix-missing-reply-trace]: Cleanup.

	test: illegal_blocking_race: Avoid constraint deadlock.
	*  test/all/illegal_blocking_race/illegal_blocking_race.dzn (illegal_blocking_race):
	Allow pt.cancel ().

2022-09-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove compliance_blocking_illegal.
	* test/all/compliance_blocking_illegal: Remove test.
	* test/all/local.mk (REGRESSION_TESTS): Remove it.

2022-07-06  Rutger van Beusekom  <rutger@dezyne.org>

	test: Remove redundant illegal_requires2.
	* test/all/illegal_requires2: Remove test.
	* test/all/local.mk (REGRESSION_TESTS): Remove it.

	test: Remove redundant compliance_failures_illegal.
	* test/all/compliance_failures_illegal: Remove test.
	* test/all/local.mk (REGRESSION_TESTS): Remove it.

2022-07-21  Rutger van Beusekom  <rutger@dezyne.org>

	ast: Change ast:values interface.
	* dzn/ast.scm (ast:values): Change void parameter to atom.  Return null
	if not set, otherwise return list.
	(ast:return-values): Update user.

2022-07-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	explore: Refactor run-label.
	* dzn/explore.scm (pc->rtc-lts)[run-label]: Collapse if into cond.  Move
	let* up out of append.

2022-08-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_import.
	* test/all/hello_import: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2022-09-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Use deep memoization for locals in defer too.
	* dzn/code/makreel.scm (makreel:locals-unmemoized): Do not recurs into
	makreel:locals-unmemoized.

2022-07-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Cleanup memoization.
	* dzn/code/makreel.scm (reachable-calls-): Rename to...
	(reachable-calls-unmemoized): ...this.  Add root parameter.
	(reachable-calls): Use it.
	[calls]: Remove.
	(makreel:locals-): Rename to...
	(makreel:locals-unmemoized): ...this.  Add root parameter.  Update
	caller.
	(makreel:locals): Use it.
	[locals]: Remove.

2022-07-20  Rutger van Beusekom  <rutger@dezyne.org>

	lookup: Refactor .type<port>.
	* dzn/ast/lookup.scm (.type<port>): Let lookup do the parenting.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Transplant lookup from tree.
	* test/all/parse_locations/baseline/parse.out: Update baseline.
	* dzn/parse.scm (parse-tree-alist->ast): Do not add builtin types.
	[add-builtin-types]: Remove.
	* dzn/ast/lookup.scm (ast:bool, ast:int, ast:void): New variables.
	(ast:lookup-n, ast:lookdown): Replace with...
	(search-import, search, widen-to-parent, widen-to-imports,
	search-or-widen-context): ...these new functions.
	(ast:lookup-list, ast:lookup): Rewrite.
	(.event, .type): Use ast:lookup instead of ast:lookdown.

2022-07-20  Rutger van Beusekom  <rutger@dezyne.org>

	parse/lookup: Dissolve search-in-scope.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse/lookup: Refactor.
	* dzn/parse/lookup.scm (search): Use match instead of null?, cdr.
	(widen-to-parent): Remove dead code.

	parse/lookup: Remove dead code.
	* dzn/parse/lookup.scm: Remove non-existent context:look-down export,
	remove debug (dzn misc) import.

2022-08-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Reorganize: Move dzn/normalize.scm into dzn/ast/.
	Update #:use-module users throughout.

	* dzn/normalize.scm: Move to...
	* dzn/ast/normalize.scm: ...here.
	* dzn/local.mk (dist_%C%_scm_DATA): Remove it.
	* dzn/ast/local.mk: New file.
	* Makefile.am: Include it.

2022-10-28  Rutger van Beusekom  <rutger@dezyne.org>

	ast: Extract common primitives for trigger access.
	* dzn/ast.scm (port+event->trigger, port->trigger, component->triggers):
	New method.
	* dzn/ast.scm (ast:provides-out-triggers, ast:requires-in-triggers,
	ast:requires-in-void-triggers, ast:requires-out-triggers): Use here.

	goops: Re-export <applicable>.
	* dzn/ast/goops.scm: Re-export <applicable>.

2022-08-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Reformat ast:in/out-triggers.
	* dzn/ast.scm (ast:in-triggers, ast:provides-out-triggers,
	ast:requires-in-triggers): Reformat.

2022-07-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Reorganize: Move utilities to dzn/ast/util.scm.
	Update #:use-module users throughout.

	* dzn/ast/goops.scm (as, ast-name, clone, drop-<>, is?, tree-collect,
	tree-collect-filter, tree-filter, tree-map): Move to...
	* dzn/ast/util.scm: ...this new module.
	* dzn/ast.scm (dzn): Use it.  Re-export them.
	* dzn/ast/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/ast/accessor.scm,
	dzn/ast/lookup.scm: Use it.

2022-07-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Reorganize: Move resolving accessor to dzn/ast/lookup.scm.
	Update #:use-module users throughout.

	* dzn/ast/goops.scm (.port.name): Move to...
	* dzn/ast/lookup.scm (.port.name): ...here.
	* dzn/ast.scm: Re-export it.

2022-07-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Reorganize: Move accessor to dzn/ast/accessor.scm.
	* dzn/ast/goops.scm (.variable.name): Move to...
	* dzn/ast/accessor.scm (.variable.name): ...here.
	* dzn/ast.scm: Re-export it.

	goops: Remove dead code.
	* dzn/ast/goops.scm (slot-names): Remove.
	(ast-name): Refactor.
	(drop-<>): Refactor.
	* dzn/templates.scm (compile-template): Use it.
	(drop-<>): Remove.

2022-07-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Reorganize: Move dzn/serialize.scm into dzn/ast/.
	Update #:use-module users throughout.

	* dzn/serialize.scm: Move to...
	* dzn/ast/serialize.scm: ...here.

2022-07-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Reorganize: Move dzn/display.scm into dzn/ast/.
	Update #:use-module users throughout.

	* dzn/display.scm: Move to...
	* dzn/ast/display.scm: ...here.

2022-07-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Remove dead code.
	* dzn/normalize.scm (ast->): Remove function from other era.

2022-07-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Refactor ast:parent.
	Update users throughout.

	* dzn/ast/goops.scm (parent): Move to...
	* dzn/ast/accessor.scm (ast:parent): ...here, and refactor never to
	return self.

2022-07-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast/goops: Remove dead code.
	* dzn/ast/goops.scm (parent-not): Remove.

2022-07-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Reorganize: Move dzn/wfc.scm into dzn/ast/.
	Update #:use-module users throughout.

	* dzn/wfc.scm: Move to...
	* dzn/ast/wfc.scm: ...here.

2022-07-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Reorganize: Split-off lookup into dzn/ast/.
	* dzn/ast.scm: Split-off accessors and lookup into...
	* dzn/ast/accessor.scm,
	dzn/ast/equal.scm,
	dzn/ast/lookup.scm: ...these new files.
	* dzn/ast/local.mk (dist_%C%_scm_DATA): Add them.

2022-07-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Reorganize: Move dzn/parse/{ast,silence}.scm into dzn/ast/.
	Update #:use-module users throughout.

	* dzn/parse/ast.scm: Move to...
	* dzn/ast/parse.scm: ...here.
	* dzn/parse/silence.scm: Move to...
	* dzn/ast/silences.scm: ...here.
	* dzn/local.mk (dist_%C%_scm_DATA): Remove them.
	* dzn/ast/local.mk (dist_%C%_scm_DATA): Add them.

2022-07-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Reorganize: Move dzn/goops.scm into dzn/ast/.
	Update #:use-module users throughout.

	* dzn/goops.scm: Move to...
	* dzn/ast/goops.scm: ...here.  Add re-exports so that modules do not
	need (oop goops).
	* dzn/local.mk (dist_%C%_scm_DATA): Remove it.
	* dzn/ast/local.mk: New file.
	* Makefile.am: Include it.

2022-07-20  Rutger van Beusekom  <rutger@dezyne.org>

	ast: Add missing ast:declaration* overload for formals.
	This is a follow-up to commit
	    7cb261d9e326e370b2ec4487417ee5495744979b
	    wfc: Allow shadowing in branches of if-statement.

	* dzn/ast.scm (ast:declaration*<formals>): New specialization.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Refactor ast:return-types-provides.
	* dzn/ast.scm (ast:return-types-provides): Split long line.

2022-07-20  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Make collateral wfc conditional on root cause wfc.
	* dzn/wfc.scm (wfc-skeleton): New methods.
	(wfc<component>, wfc<system>): Use them.
	(wfc:interface): New method that caters for duplicate names.
	(wfc<port>): Use it.
	* test/all/wf_typeerror/baseline/verify.err,
	test/all/wf_undefined/baseline/verify.err: Update baseline.

	wfc: Format global names without "/".
	* dzn/wfc.scm (type-name): Remove "/" prefix.

2022-07-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Remove "Async Ports".
	* doc/dezyne.texi (Async Ports): Remove.
	* doc/examples/dzn.async.dzn: Remove.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Remove it.

2022-06-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Remove async.
	* dzn/ast.scm (ast:async?, ast:async-port*, ast:requires+async-port*,
	ast:req-events, ast:clr-events): Remove.
	(ast:interface*, ast:in-triggers): Do not cater for async.

	vm/goops: Remove async.
	* dzn/vm/goops.scm (<flush-async>): Remove class.
	(<program-counter>)[async]: Remove field.
	(write): Do not cater for async.

	vm/ast: Remove async.
	* dzn/vm/ast.scm (ast:async?): Remove.

	vm/util: Remove async.
	* dzn/vm/util.scm (block, collateral-block, pc->string,
	pc->string-state-diagram, rtc-program-counter-equal?, pc-equal?): Do not
	cater for async.
	(async-ports, async-event?): Remove.

	vm/runtime: Remove async.
	* dzn/vm/runtime.scm (<runtime:instance>)[rank]: Remove field.
	(runtime:rank!): Remove.
	(runtime:port*, runtime:create-instances): Update caller.  Do not cater
	for async.

	vm/run: Remove async.
	* dzn/vm/run.scm (run-async-event, flush-async-trace, flush-async,
	did-provides-out?, flush-async-event): Remove.
	(run-external, run-to-completion*, run-to-completion*-context-switch):
	Do not cater for async.

	vm/step: Remove async.
	* dzn/vm/step.scm (step-async-action-down): Remove.
	(step<action>): Update caller, do not cater for async.
	(step<trigger-return>): Do not cater for async.
	(step<flush-async>): Remove.

	vm/report: Remove async.
	* dzn/vm/report.scm (pc-event?, pc-arrow?): Do not cater for async.

	simulate: Remove async.
	* dzn/simulate.scm (event-traces-alist)[async-trace->alist]: Remove.  Do
	not cater for async.
	* dzn/simulate.scm (run-sut): Likewise.
	(run-trail): Likewise.

	explore: Remove async.
	* dzn/explore.scm (process-external, run-to-completion**): Do not cater
	for async.
	(pc->rtc-lts): Remove 'async label.

	code: Remove async.
	* dzn/templates/code.scm (async-member-initializer, async-event-slot,
	async-req-event-slot, async-clr-event-slot, system-rank): Remove
	template definitions.
	(event-slot): Do not cater for async.
	* dzn/code.scm (code:arguments<ast><signature>): Factor-out from...
	(code:arguments<call>): ...here.
	(code:arguments<action>): Do not cater for async and use it.

	dzn: Remove async.
	* dzn/templates/dzn/behavior@behavior: Remove #x:async-port.
	* dzn/templates/dzn/async-port@port: Remove template.
	* dzn/code/dzn.scm (dzn:model): Do not cater for async.
	* dzn/templates/dzn.scm (async-port): Remove template definition.

	c++: Remove async.
	* dzn/templates/c++/model@component: Remove  #x:async-member-initializer,
	 #x:async-event-slot, #x:async-req-event-slot, #x:async-clr-event-slot.
	* dzn/templates/c++/header-model@component: Remove #x:async-port-declare.
	* dzn/templates/c++/model@shell-system,
	dzn/templates/c++/model@system: Remove #x:system-rank.
	* dzn/templates/c++/model@component: Remove #x:pump-for-async.
	* dzn/templates/c++/async-clr-event-slot@trigger,
	dzn/templates/c++/async-event-slot@trigger,
	dzn/templates/c++/async-member-initializer@port,
	dzn/templates/c++/async-port-declare@port,
	dzn/templates/c++/async-req-event-slot@trigger
	dzn/templates/c++/system-rank@port: Remove templates.
	* dzn/templates/c++.scm (async-port-declare, pump-for-async): Remove
	template definitions.
	* dzn/code/c++.scm (c++:pump-for-async?): Remove.
	(c++:model): Do not cater for async.
	* runtime/c++/dzn/meta.hh.in (meta::rank): Remove member.
	(dzn::rank): Remove.
	(dzn::async_base, dzn::async): Remove struct.
	* runtime/c++/dzn/runtime.hh (call_out): Do not cater for async.
	* runtime/c++/dzn/runtime.hh (DZN_ASYNC_TRACING): Remove define.
	* runtime/c++/dzn/runtime.hh (call_out)[DZN_ASYNC_TRACING]: Remove.  Do
	not cater for async.
	* dzn/templates/c++/meta@component: Remove rank from meta initializer.
	* runtime/c++/dzn/container.hh (container): Likewise.
	* test/all/hello_namespace_foreign/c++/library_foreign.cc (foreign::foreign):
	Likewise.
	* test/all/foreign_handwritten/c++/Foreign.cc (Foreign::Foreign):
	Likewise.

	traces: Remove async.
	* dzn/commands/traces.scm (mark-async, remove-mark-async): Remove.
	(model->lts, model->traces): Update users.

	verify: Remove async.
	* dzn/verify/pipeline.scm (component-taus, deterministic-labels): Do not
	cater for async.
	(verification:verify): Do not use ast:dzn-scope?.
	* dzn/ast.scm (ast:dzn-scope?): Remove.

	makreel: Remove async.
	* dzn/templates/makreel.scm (requires-sort-construct, queue-proc,
	no-queue-proc, queue-proc-requires, queue-comm-requires,
	queue-allow-requires, queue-rename-requires,
	component-behavior-allow-requires, component-behavior-rename-requires,
	semantics-comm-requires, semantics-allow-requires,
	semantics-rename-requires): Use ast:requires-port* instead of
	ast:requires+async-port*.
	(async-parallel, async-parallel-port, semantics-async-qin,
	semantics-async-qout, semantics-async-allow-ack, semantics-no-async,
	semantics-provides-blocked-async, semantics-allow-async,
	component-comm-async, component-allow-async, component-rename-async,
	component-hide-async): Remove template definitions.
	* dzn/templates/makreel/model@component (remove_async, find_async):
	Remove map, eqn.
	(async_not_pending, async_not_pending', async_pending, async_pending'):
	Remove act.
	(async): Remove proc.
	(semantics_provides_blocking): Remove async_not_pending.
	(semantics_provides_blocked): Remove async_not_pending, and
	async_pending case. Remove #x:semantics-provides-blocked-async.
	(semantics_blocked_rtc): Remove async_not_pending, and async_pending
	case.
	(semantics_async): Remove async_not_pending, and async_pending
	cases.  Remove #x:semantics-async-qout.
	(semantics_async_allow_ack): Remove.
	(component_semantics_allow): Remove #x:semantics-allow-async, async_not_pending,
	async_pending.
	(component_comm): Remove #x:component-comm-async, async_not_pending,
	async_pending.
	(component_allow): Remove #x:component-allow-async, async_not_pending,
	async_pending.
	(component_rename): Remove #x:component-rename-async, async_not_pending,
	async_pending.
	(component): Remove #x:component-hide-async, async_not_pending,
	async_pending.
	* dzn/templates/makreel/queue-proc@component (req_and_queue_parallel):
	Remove async.
	(req_and_queue_allow): Remove async_not_pending, async_pending.
	* dzn/templates/makreel/no-queue-proc@component (req_and_queue): Remove
	async.
	* dzn/templates/makreel/semantics-async-flush@port: Remove #x:semantics_async_allow_ack.
	* dzn/templates/makreel/semantics-provides-unblocked-replies@port:
	Remove async_not_pending, and async_pending case.
	* dzn/templates/makreel/semantics-provides-skip-blocked-replies@port:
	Remove async_not_pending.
	* dzn/templates/makreel/async-parallel-port@port,
	dzn/templates/makreel/component-allow-async@port,
	dzn/templates/makreel/component-comm-async@port,
	dzn/templates/makreel/component-hide-async@port,
	dzn/templates/makreel/component-rename-async@port,
	dzn/templates/makreel/semantics-allow-async@port,
	dzn/templates/makreel/semantics-async-allow-ack@component,
	dzn/templates/makreel/semantics-async-qin@port,
	dzn/templates/makreel/semantics-async-qout@port,
	dzn/templates/makreel/semantics-no-async@component,
	dzn/templates/makreel/semantics-provides-blocked-async@port,
	dzn/templates/makreel/semantics-provides-blocked-qmt-async@port: Remove
	templates.
	* dzn/code/makreel.scm (ast:async-port*?, ast:have-requires+async?,
	ast:have-no-requires+async?): Remove.

	cs: Remove async.
	* dzn/templates/cs.scm (async-port-declare, async-port-init,
	async-port-declare-delegate, async-signature-name): Remove template
	definitions.
	* dzn/templates/cs/model@component: Remove #x:async-port-declare-delegate,
	 #x:async-port-declare x:async-port-init #x:async-event-slot
	 #x:async-req-event-slot, and #x:async-clr-event-slot.
	* dzn/templates/cs/model@shell-system,
	dzn/templates/cs/model@system: Remove #x:system-rank.
	* dzn/templates/cs/async-clr-event-slot@trigger,
	dzn/templates/cs/async-event-slot@trigger,
	dzn/templates/cs/async-port-declare-delegate@interface,
	dzn/templates/cs/async-port-declare@port,
	dzn/templates/cs/async-port-init@port,
	dzn/templates/cs/async-req-event-slot@trigger,
	dzn/templates/cs/system-rank@port: Remove templates.
	* dzn/code/cs.scm (cs:arguments, cs:model): Do not cater for async.
	(cs:async-interface*, cs:async-signature-name): Remove.
	* runtime/cs/dzn/meta.cs (dzn.Meta.rank): Remove.
	(dzn.MetaHelper.rank): Remove.
	 (dzn.async_base, dzn.async): Remove.
	* runtime/cs/dzn/runtime.cs (call-out): Do not cater for async.

	javascript: Remove incomplete async remnants.
	* dzn/templates/javascript/model@component: Remove #x:async-member-initializer.
	* dzn/templates/javascript/async-member-initializer@port: Remove template.

	scheme: Remove async feature.
	* dzn/templates/scheme/model@component: Remove #x:async-member-initializer
	and #x:async-port-instance-declare.
	* dzn/templates/scheme/model@system: Remove #x:system-rank.
	* dzn/templates/scheme/async-member-initializer@port,
	dzn/templates/scheme/async-port-instance-declare@port,
	dzn/templates/scheme/declare-async-clr-method@trigger,
	dzn/templates/scheme/declare-async-method@trigger,
	dzn/templates/scheme/declare-async-req-method@trigger
	dzn/templates/scheme/system-rank@port: Remove templates.
	* dzn/templates/scheme.scm (async-port-instance-declare,
	declare-async-method, declare-async-req-method,
	declare-async-clr-method): Remove template definitions.
	(scheme:async-req, scheme:async-clr): Remove methods.
	* runtime/scheme/dzn/runtime.scm (<dzn:component-model>)[rank]: Remove field.
	(dzn:rank): Remove.

	dot: Remove async.
	* dzn/code/dot.scm (dot:connection*, dot:requires-port*): Do not cater
	for async.

	wfc: Remove dzn.async deprecation warning.
	* dzn/wfc.scm (wfc<port>): Remove async check and warning.

	parse: Remove async.
	* dzn/parse/ast.scm (parse-tree->ast): Remove handling of async port
	type.
	(async-interface-name, make-async-refine-interface): Remove.
	(annotate-ast): Remove creation of async namespace and interfaces and
	move to...
	* dzn/parse.scm (parse-tree-alist->ast)[add-builtin-types]: ...this
	inner function.  Update caller.
	* test/all/parse_locations/baseline/parse.out: Update accordingly.

	peg: Do not allow port in behavior.
	* dzn/parse/peg.scm (peg:parse): Remove port from behavior-statements.

	config: Remove async feature.
	* dzn/config.scm.in (%feature-alist): Remove "async".
	* test/dzn/dzn.scm (features): Remove check.

	test: Remove async.
	* test/all/hello_async: Remove.
	* test/all/local.mk (HELLO_TESTS): Remove it.
	* test/all/async_async_prio,
	test/all/async_blocking,
	test/all/async_blocking_missing_ack,
	test/all/async_blocking_ranking_disorder,
	test/all/async_blocking_verify,
	test/all/async_calling_context,
	test/all/async_cancel,
	test/all/async_context,
	test/all/async_flush,
	test/all/async_multiple_provides,
	test/all/async_order,
	test/all/async_order2,
	test/all/async_prio,
	test/all/async_prio2,
	test/all/async_prio3,
	test/all/async_provides,
	test/all/async_rank,
	test/all/async_ranking,
	test/all/async_shell,
	test/all/async_simple,
	test/all/async_synccb,
	test/all/async_synccb2,
	test/all/async_sync_prio,
	test/all/async_types,
	test/all/blocking_race_async,
	test/all/collateral_blocking_async,
	test/all/compliance_async,
	test/all/compliance_blocking_async_race,
	test/all/determinism_async,
	test/all/illegal_async_req,
	test/all/livelock_async,
	test/all/livelock_async_cancel,
	test/all/livelock_async_choice: Remove.
	* test/all/local.mk (REGRESSION_TESTS): Remove them.
	(XFAIL_VERIFY, XFAIL_SIMULATE): Update accordingly.
	(XFAIL_CODE_ASYNC): Remove.
	(XFAIL_TESTS): Remove it.

2022-08-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: complex_int: Make temporary go out of range.
	* test/all/complex_int/complex_int.dzn (complex_int): Instead of
	interleaving inc and dec: increment twice, decrement twice.
	(ihello): Update accordingly.

2022-08-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update integer expressions.
	* doc/dezyne.texi (Expressions): Add missing bool-variable to
	bool-expression, enum-variable to enum-expression, and subint-variable
	to int-expression.  Also add parenthes and unary minus to
	int-expression.

2022-08-01  Paul Hoogendijk  <paul@dezyne.org>

	Add internal unbounded integer type <int>.
	* dzn/goops.scm (<int>): New class.
	(<subint>): Inherit from it.
	* dzn/parse/ast.scm (annotate-ast): Add <int> to global types.
	* dzn/ast.scm (ast:full-name<int>): Cater for <subint>.
	(ast:expression->type): Return <int> instead of <subint>.
	(ast:literal-value->type): Likewise.
	(ast:type<int-expr>): Return <int> instead of ast:expression->type.
	(ast:type<subint>): Change to...
	(ast:type<int>): ..this.  Return <int> instead of <subint>.
	(ast:type<subint>): New specialization.
	* dzn/code/dzn.scm (dzn:define-type): Also remove <int>.
	(dzn:type<int>): New specialization.
	(dzn:type<model>, dzn:type<type>): New
	specilizations.  Split-off from...
	(dzn:type<top>): ...here.  Refactor.
	* dzn/code.scm (code:reply-type<subint>): Extend specialization to...
	(code:reply-type<int>): ...this.
	* dzn/code/makreel.scm (tick-names-): Add case for <int>.
	(makreel:type-constructor): Add case dor <int>.
	(as-int): Use ast:expression->type instead of ast:type.
	(makreel:type-bound): Avoid type-check for unbounded integer variables.
	* dzn/code/scheme.scm (scheme:reply-name<subint>): Change to...
	scheme:reply-name<int>): ...this.
	* dzn/wfc.scm (equal-type?, wfc<greater-equal>, wfc<greater>,
	wfc<less-equal>, wfc<less>, wfc<plus>, wfc<minus>): Extend <subint> to
	<int>.
	* dzn/templates/dzn/type@int: New template.
	* dzn/templates/c++/foreign-reply@subint: Rename to...
	* dzn/templates/c++/foreign-reply@int: ...this.
	* dzn/templates/c++/reply-member-declare@subint: Rename to...
	* dzn/templates/c++/reply-member-declare@int: ...this.
	* dzn/templates/c++/reply-member-initializer@subint: Rename to...
	* dzn/templates/c++/reply-member-initializer@int: ...this.
	* dzn/templates/c++/reply@subint: Rename to...
	* dzn/templates/c++/reply@int: ...this.
	* dzn/templates/makreel/basic-type@subint: Rename to...
	* dzn/templates/makreel/basic-type@int: ...this.
	* dzn/templates/c/reply-member-declare@subint: Rename to...
	* dzn/templates/c/reply-member-declare@int: ...this.
	* dzn/templates/c/reply@subint: Rename to...
	* dzn/templates/c/reply@int: ...this.
	* dzn/templates/cs/foreign-reply@subint: Rename to...
	* dzn/templates/cs/foreign-reply@int: ...this.
	* dzn/templates/cs/reply-member-declare@subint: Rename to...
	* dzn/templates/cs/reply-member-declare@int: ...this.
	* dzn/templates/cs/reply@subint: Rename to...
	* dzn/templates/cs/reply@int: ...this.
	* dzn/templates/cs/return-type@subint: Rename to...
	* dzn/templates/cs/return-type@int: ...this.
	* dzn/templates/scheme/reply-member-initializer@subint: Rename to...
	* dzn/templates/scheme/reply-member-initializer@int: ...this.
	* dzn/templates/scheme/reply@subint: Rename to...
	* dzn/templates/scheme/reply@int: ...this.
	* test/all/parse_defer/baseline/verify.err,
	test/all/parse_locations/baseline/parse.out,
	test/all/wf_expressionExpected/baseline/verify.err,
	test/all/wf_expressionExpected/baseline/verify.err,
	test/all/wf_replyOnType/baseline/verify.err: Update baseline.

	goops: Rename <int> into <subint>.
	* dzn/goops.scm (<int>): Rename to...
	(<subint>): ...this.
	* dzn/ast.scm,
	dzn/code.scm,
	dzn/parse/ast.scm,
	dzn/code/c++-exception-wrappers.scm,
	dzn/code/c++.scm,
	dzn/code/c.scm,
	dzn/code/makreel.scm,
	dzn/code/scheme.scm,
	dzn/verify/pipeline.scm
	dzn/vm/util.scm,
	dzn/wfc.scm,
	test/all/wf_expressionExpected/baseline/verify.err: Update users.
	* dzn/templates/c++/foreign-reply@int: Rename to...
	* dzn/templates/c++/foreign-reply@subint: ...this.
	* dzn/templates/c++/reply-member-declare@int: Rename to...
	* dzn/templates/c++/reply-member-declare@subint: ...this.
	* dzn/templates/c++/reply-member-initializer@int: Rename to...
	* dzn/templates/c++/reply-member-initializer@subint: ...this.
	* dzn/templates/c++/reply@int: Rename to...
	* dzn/templates/c++/reply@subint: ...this.
	* dzn/templates/c/reply-member-declare@int: Rename to...
	* dzn/templates/c/reply-member-declare@subint: ...this.
	* dzn/templates/c/reply@int: Rename to...
	* dzn/templates/c/reply@subint: ...this.
	* dzn/templates/cs/foreign-reply@int: Rename to...
	* dzn/templates/cs/foreign-reply@subint: ...this.
	* dzn/templates/cs/reply-member-declare@int: Rename to...
	* dzn/templates/cs/reply-member-declare@subint: ...this.
	* dzn/templates/cs/reply@int: Rename to...
	* dzn/templates/cs/reply@subint: ...this.
	* dzn/templates/cs/return-type@int: Rename to...
	* dzn/templates/cs/return-type@subint: ...this.
	* dzn/templates/dzn/define-type@int: Rename to...
	* dzn/templates/dzn/define-type@subint: ...this.
	* dzn/templates/dzn/global@int: Rename to...
	* dzn/templates/dzn/global@subint: ...this.
	* dzn/templates/makreel/basic-type@int: Rename to...
	* dzn/templates/makreel/basic-type@subint: ...this.
	* dzn/templates/scheme/reply-member-initializer@int: Rename to...
	* dzn/templates/scheme/reply-member-initializer@subint: ...this.
	* dzn/templates/scheme/reply@int: Rename to...
	* dzn/templates/scheme/reply@subint: ...this.

2022-08-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Remove dead code.
	* dzn/code/c++.scm (c++:type-name<top>): Remove.

2022-09-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: complex_int: Add new action comparison case.
	* test/all/complex_int/complex_int.dzn (ihello.bye): New event.
	(iworld): New variable.
	(complex_int): Use iworld and use it to add test on h.bye ().

2022-08-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: complex_int: Add complex plus-minus expression.
	* test/all/complex_int/complex_int.dzn (ihello.goodbye): New event.
	(complex_int): Use it to test complex plus-minus expression.

	test: hello_expression: Use unary minus.
	* test/all/hello_expression/hello_expression.dzn (hello_expression): Use
	unary minus.

	peg: Support unary minus.
	* dzn/parse/peg.scm (peg:parse)[UMINUS]: New terminal.
	[minus-expression]: Use it in new rule.
	[plus-min-expression]: Use it.

	test: hello_expression: Use plus-minus expressions.
	* test/all/hello_expression/hello_expression.dzn
	(hello_expression.count): New type.
	(hello_expression.c): Use it for new member.
	Use it in plus-minus expression in guards.

2022-08-01  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Support arbitrary plus/minus expressions without parentheses.
	* dzn/parse/peg.scm (peg:parse)[plus-min-expression]: Recurse instead of
	using not-expression.

2022-08-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Add -U,--no-unreachable option.
	* dzn/commands/verify.scm (parse-opts): Add -U,--no-unreachable.
	(main): Use it to parameterize verification.
	* dzn/commands/code.scm (parse-opts): Likewise.
	(main): Likewise.
	* dzn/code/makreel.scm (makreel:om): Only tag-imperative-blocks when
	using unreachable code check.
	* dzn/verify/pipeline.scm (in-out:aut->verify-interface,
	in-out:aut->verify-component): Likewise, only add --unreachable when
	using unreachable code check.
	(mcrl2:verify-interface-asserts, mcrl2:verify-component-asserts):
	Likewise, only report unreachable assert when using unreachable code
	check.
	* doc/dezyne.texi (Invoking dzn code): Document it.
	(Invoking dzn traces): Likewise.
	(Invoking dzn verify): Likewise.

2022-08-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	transform: Add tag-imperative-blocks.
	* dzn/normalize.scm (triples:tag-blocks): Remove.
	(normalize:state+illegals): Remove caller.
	(add-tag, tag-blocks): Refactor into ...
	(tag-imperative-blocks): ...this new transformation.
	* dzn/code/makreel.scm (makreel:om): Use it.
	(%no-unreachable?): Move parameter...
	* dzn/transform.scm: Re-export it, making it available as
	transformation.
	* dzn/normalize.scm (%no-unreachable?): Move parameter...
	* dzn/code/makreel.scm (%no-unreachable): ...here.
	* dzn/commands/traces.scm: Remove (dzn normalize) include.

2022-08-16  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: Add unreachable code tests.
	* test/all/unreachable_component/baseline/verify.err,
	test/all/unreachable_component/unreachable_component.dzn,
	test/all/unreachable_defer/baseline/verify.err,
	test/all/unreachable_defer/unreachable_defer.dzn,
	test/all/unreachable_function/baseline/verify.err,
	test/all/unreachable_function/unreachable_function.dzn,
	test/all/unreachable_if/baseline/verify.err,
	test/all/unreachable_if/unreachable_if.dzn,
	test/all/unreachable_interface/baseline/verify.err,
	test/all/unreachable_interface/unreachable_interface.dzn,
	test/all/unreachable_shared/baseline/verify.err,
	test/all/unreachable_shared/unreachable_shared.dzn: New files.
	* test/all/local.mk (HELLO_TESTS): Add unreachable_component.
	(REGRESSION_TESTS): Add other tests.

2022-08-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Document unreachable code check.
	* doc/dezyne.texi (A Simple State Machine): Update example verification
	output.
	(Formal Verification): Mention unreachable code check and document it.

2022-08-16  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Add unreachable code check.
	* dzn/verify/pipeline.scm (in-out:aut->verify-interface,
	in-out:aut->verify-component): Also perform --unreachable check.
	(model-tags): New function: report list of tags present in model.
	(unmemoized-verify-pipeline):   Use it to initialize this ...
	(<options>)[tags]: ...new field.
	(pretty-verify-pipeline)[flags->string]: New inner define.  Use it to
	print --no-unreachable.
	(get-line, get-trace): Allow requested key not to be present.
	(report-fail)[tag->message]: New inner define.  Use it to handle the
	unreachable check.
	(mcrl2:verify-interface-asserts) [report-assert]: Add optional
	parameters skip? and trace.  Add reporting of unreachable check.
	(mcrl2:verify-component-asserts) [report-assert]: Add optional
	parameters skip? and trace.  Add reporting of unreachable check.
	* test: Update all baselines.
	* dzn/normalize.scm (%no-unreachable?): New parameter.
	(normalize:state+illegals): Use it to omit unreachable tags.
	* dzn/commands/traces.scm (main): Set it to omit unreachable tags.
	* test/all/and_not_guards: Rename to ...
	* test/all/unreachable_determinism: ...this.  Add baseline.

2020-04-03  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	makreel: Add add tags for unreachable code check.
	* dzn/goops.scm (<tag>): New class.
	* dzn/commands/traces.scm (lts-hide-internal-labels): Also hide tag
	labels.
	* dzn/normalize.scm (add-tag): New function: add tag in front of
	statement.
	(tag-blocks): New function: add tag for branches of if, function, and
	defer.
	(triples:tag-blocks): New function: lift tag-blocks to triples; add tag
	to statement part of triple.
	(normalize:state+illegals): Use it to add unreachable tags.
	(%no-unreachable?): New parameter.
	* dzn/commands/traces.scm (main): Set it to omit unreachable tags.
	* dzn/lts.scm (parse-label): Parse tag.
	* dzn/verify/pipeline.scm (compliance-taus): Add tag to list of taus.
	(hide-internal-labels): Also hide tag labels.
	(in-out:aut->aut-weak-trace): Likewise.
	(pretty-verify-pipeline)[flags->string]: New
	inner define.  Use it to print --no-unreachable.
	* dzn/code/makreel.scm (makreel:line-column): New method.
	* dzn/templates/makreel.scm (makreel:line-column): Use it in new
	template definition.
	* dzn/templates/dzn/statement@tag: New template; needed for pretty printing.
	* dzn/templates/makreel/statement@tag: New template.
	* dzn/templates/makreel/external-proc@port,
	dzn/templates/makreel/model@component,
	dzn/templates/makreel/proc@interface,
	dzn/templates/makreel/queue-proc@component: Also allow tag.
	* dzn/templates/makreel/proc@tag: Add self transition with tag label.
	* dzn/templates/makreel/source@root: Define tag action.
	* test/all/livelock_component/baseline/verify.out,

2022-08-16  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	lts: Add unreachable code check.
	* dzn/commands/lts.scm (parse-opts): New option --unreachable.
	(main)[report-result-unreachable[: New inner define.  Use it to report
	unreachable errors.
	When reporting failures (for preparing for ltscompares) also exclude tag
	self transitions; otherwise unwanted tau loops will harm ltscompare.
	* dzn/lts.scm (assert-unreachable): New function: report list of tags
	which are not present in lts.
	(remove-tag-edges): New function.
	(remove-state-edge): Rename to...
	(remove-info-edges): ..this.  Remove both tag and state edges for
	lts.
	(deadlock-nodes, lts->traces): Update accordingly.

2022-07-19  Paul Hoogendijk  <paul@dezyne.org>

	verify: Replace parameters model-type and model-name by model.
	* dzn/verify/pipeline.scm (report-ok report-fail, report-skip, report):
	Change parameters model-type and model-name to model.  Change all calls
	accordingly.
	(mcrl2:verify-interface, mcrl2:verify-component): Change parameter
	model-name to model.  Change all calls accordingly.

2022-08-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: LegoBallSorter: Remove unreachable code.
	* test/all/LegoBallSorter/ConstrainedAxis.dzn
	(ConstrainedAxis.startAbsoluteMove): Remove function.
	* test/all/LegoBallSorter/Conveyor.dzn (Conveyor): Remove motor.arrived
	handler.
	* test/all/LegoBallSorter/EndConstrainedAxis.dzn
	(EndConstrainedAxis.startAbsoluteMove): Remove function.
	* test/all/LegoBallSorter/HomeConstrainedAxis.dzn
	(HomeConstrainedAxis.startAbsoluteMove): Remove function.
	* test/all/LegoBallSorter/MaterialHandler.dzn (Handle.finalizeBatch):
	Remove function.
	* test/all/LegoBallSorter/MaterialHandler.dzn (Handle.prepareInputTransfer):
	Make unreachable case illegal.

2022-07-26  Paul Hoogendijk  <paul@dezyne.org>

	test: Remove unreachable code.
	* test/all/alpha_local/alpha_local.dzn,
	test/all/blocking_cancel_race/blocking_cancel_race.dzn,
	test/all/blocking_cancel_race_bool/blocking_cancel_race_bool.dzn,
	test/all/complex_and/complex_and.dzn,
	test/all/complex_assign/complex_assign.dzn,
	test/all/complex_expressions/complex_expressions.dzn,
	test/all/complex_not/complex_not.dzn,
	test/all/complex_or/complex_or.dzn,
	test/all/deadlock_port_blocked/deadlock_port_blocked.dzn,
	test/all/defer_twice_noisy/defer_twice_noisy.dzn,
	test/all/enum_expressions/enum_expressions.dzn,
	test/all/equal_binary/equal_binary.dzn,
	test/all/function_early_return/function_early_return.dzn,
	test/all/hello_alpha/hello_alpha.dzn,
	test/all/hello_block/hello_block.dzn,
	test/all/hello_else/hello_else.dzn,
	test/all/hello_expression/hello_expression.dzn,
	test/all/hello_ifelse/hello_ifelse.dzn,
	test/all/hello_local_assign/hello_local_assign.dzn,
	test/all/hellocheckcompbindings/hellocheckcompbindings.dzn,
	test/all/hellochecksystembindings/hellochecksystembindings.dzn,
	test/all/illegal_interface_incomplete/illegal_interface_incomplete.dzn,
	test/all/inevitable_multiple_requires/inevitable_multiple_requires.dzn,
	test/all/integer_expressions/integer_expressions.dzn,
	test/all/parse_call_before_var/parse_call_before_var.dzn: Remove
	unreachable code.
	* test/all/deadlock_port_blocked/baseline/simulate.err,
	test/all/deadlock_port_blocked/baseline/simulate.out,
	test/all/illegal_interface_incomplete/baseline/simulate.err,
	test/all/illegal_interface_incomplete/baseline/simulate.out: Update baseline.

2022-07-29  Paul Hoogendijk  <paul@dezyne.org>

	test: hello_no_compliance deterministic: Remove non-determinism.
	* test/all/hello_no_compliance/hello_no_compliance.dzn
	(hello_no_compliance): Remove second handling of h.stop.

2022-08-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: simplify_guards: Cater for unreachable code check.
	Rewrite without unreachable code, and so that the ast:equal? <field> bug
	is still triggered

	* test/all/simplify_guards/simplify_guards.dzn (iworld): New type.
	(simplify_guards.h): Rename to...
	(simplify_guards.h0): ...this.
	(simplify_guards.h1): New port.
	(simplify_guards.state1): Rename to...
	(simplify_guards.state0): ...this.
	(simplify_guards.state2): Rename to...
	(simplify_guards.state1): ...this.
	Update accordingly.

2022-09-13  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Add a modicum of type safety.
	Replace void* with dzn::component* for every component pointer.
	* runtime/c++/dzn/pump.hh (struct pump),
	* runtime/c++/dzn/runtime.hh (struct runtime): In the declarations here...
	* runtime/c++/pump.cc,
	runtime/c++/runtime.cc: ..and in the definitions here.
	* dzn/templates/c++/header-model@component,
	dzn/templates/c++/header-model@foreign,
	dzn/templates/c++/header-model@shell-system,
	dzn/templates/c++/header-model@system,
	runtime/c++/dzn/container.hh,
	test/all/foreign_handwritten/c++/Foreign.hh,
	test/all/hello_namespace_foreign/c++/library_foreign.hh: Add component
	base class.
	* dzn/templates/c++-exception-wrappers/port-wrapper@port: Refactor.
	dzn/templates/c++-exception-wrappers/provides-port-initializer@port,
	dzn/templates/c++-exception-wrappers/requires-port-initializer@port:
	Initialize port field.
	* dzn/templates/c++-exception-wrappers/system-wrapper@system: Add base
	class and remove extraneous field initialization.

2022-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Handle integers on interface trail.
	* dzn/vm/util.scm (string->trail): Use format to also convert integers
	to string.

2022-10-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.16.2.
	* guix/pack/dezyne.scm (dezyne): Update to 2.16.2.

	doc: Update `NEWS'.
	* NEWS (UNRELEASED): Rename to...
	(Changes in 2.16.2 since 2.16.1): ...this.  Mention new bug fixes.

2022-10-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Silence blocking-q warning.
	This is a follow-up to commit
	    198dcaf5000c1bff11ddcd3a2d71663984dc6e69
	    peg: Support blocking qualifier on port.

	* dzn/parse/tree.scm (tree:record): Add blocking-q.
	* dzn/parse/tree.scm (tree:port-qualifier?): Add it, return 'blocking.

2022-10-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: system: Generate diagram for incomplete systems.
	Reported by Michael van de Ven <michael.van.de.ven@thermofisher.com> via
	IRC.

	* dzn/ast.scm (ast:instance-model*): Use filter-map to not return #f
	models.
	* dzn/vm/ast.scm (ast:async?): Robustify against missing interface.
	* dzn/vm/runtime.scm (ast->runtime:instance): Robustify against missing type.

2022-10-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Document compound namespace definition.
	* doc/dezyne.texi (Namespaces): Use compound-identifier instead of
	identifier.

	test: Add compound.space.
	* test/all/compound.space: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	parse: Handle compound name space definition.
	* dzn/parse/ast.scm (parse-tree->ast): Unfold compound namespace into
	nested namespaces.

2022-10-11  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add parse_formal_shadow_type.
	* test/all/parse_formal_shadow_type: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2022-10-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Disallow shadowing type with non-type identifier.
	* dzn/wfc.scm (re-definition)[get-previous]: New inner define.  Use it
	to disallow shadowing type.
	* test/all/parse_duplicate_definition/baseline/verify.err: Update baseline.

2022-10-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: action_type: Add bool variable initialization and assigment.
	* test/all/undefined/component/action_type/action_type.dzn
	(ihello.goodbye):
	(ihello.bye): New events.
	(parse_action_unkonwn_type): Use them to test bool variable
	initialization and assignment.

2022-10-13  Paul Hoogendijk  <paul@dezyne.org>

	wfc: Gracefully handle action with undefined type in bool assignment.
	* dzn/wfc.scm (assign): Check that expression is named
	when displaying its name.  Remove skip.

2022-10-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: action_type: Add variable initialization and assigment.
	* test/all/undefined/component/action_type/action_type.dzn (ihello.hello):
	Rename to...
	(ihello.hi): ...this.
	(ihello.hello, ihello.hey): New events.
	(parse_action_unkonwn_type): Use them to test variable initialization
	and assignment.

2022-10-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Gracefully handle action with undefined type in assignment.
	Reported by Michael van de Ven <michael.van.de.ven@thermofisher.com> via
	IRC.

	* dzn/wfc.scm (assign): Handle action with undefined type.
	* test/all/wf_undefined/baseline/verify.err: Update baseline.

2022-10-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_tick: Do not shadow type with variable identifier.
	* test/all/hello_tick/hello_tick.dzn (hello_tick): Rename variables to
	avoid shadowing enum r.

2022-10-11  Rutger van Beusekom  <rutger@dezyne.org>

	ast: Avoid recursion in formal type lookup.

2022-10-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add inline-functions.
	* test/all/inline-functions: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2022-10-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	transform: inline-functions: Fix names parameter, function bodies.
	This is a follow-up to commit
	    4cdcdeabb5b312510f216c0a423eddd1ce4ec3cc
	    transform: Parameters on inline-functions.

	* dzn/transform.scm (inline-functions)[skip?]: Oops, rename to...
	[transform?]: ...this and refactor.
	Negate its usage.  Also transform function bodies.

2022-10-10  Rutger van Beusekom  <rutger@dezyne.org>

	test: stress_comment: Add enum with comments.
	* test/all/stress_comment/stress_comment.dzn (E): New type.

2022-10-10  Rutger van Beusekom  <rutger@dezyne.org>

	parse: Fix crash on comment on enum field.
	Reported by Michael van de Ven <michael.van.de.ven@thermofisher.com> via
	IRC.

	* dzn/parse/ast.scm (parse-tree->ast): Avoid cloning of <string>.

2022-10-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: mono: Add missing patch.
	This is a follow-up to commit
	    348875e16294e50d02890538fe1430bc2849efc0
	    guix: Add mono.

	* guix/mono-mdoc-timestamping.patch: New file.

2022-10-06  Paul Hoogendijk  <paul@dezyne.org>

	test: wf_functionReturnValue: Test illegal instead of reply.
	* test/all/wf_functionReturnValue/wf_functionReturnValue.dzn: Move all
	functions to component; add case where <illegal> is last executed
	statement of valued function,
	* test/all/wf_functionReturnValue/baseline/verify.err: Update baseline
	accordingly.

2022-10-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Also consider "illegal" when checking for missing replies.
	* dzn/wfc.scm (missing-reply)[step]: End at <illegal>.

	code: Avoid duplicate header includes for interfaces.
	* dzn/code.scm (code:interface-include): Remove duplicates.

2022-09-30  Rutger van Beusekom  <rutger@dezyne.org>

	runtime cs: Avoid crash reading from empty timer list.
	* runtime/cs/dzn/pump.cs (pump.run): Change pump condition for
	conditional wait, avoids using empty timer list.

	runtime c++: Avoid crash reading from empty timer list.
	* runtime/c++/pump.cc (pump::operator()): Change pump condition for
	conditional wait, avoids using empty timer list.

	simulate: Zip forking traces.
	* dzn/simulate.scm (check-provides-compliance): For error trace, reset
	statement after zipping.
	[check-provides-fork-and-zip]: New inner
	define.  Use it to zip after a fork error.
	* test/all/compliance_fork_provides/baseline/simulate.err: Update
	baseline.

2022-09-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	json: Resurrect.
	Verum-Dezyne uses dzn graph, not code -l json.

	This is a followup to commit
	    b0b8409514e132d348d128980a73f16e19b10859
	    graph: Support --model option for --backend=system --format=json.

	* dzn/code/json.scm (ast->): Instead of model name, pass model as
	parameter to system-diagram.

2022-09-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add and_not_guards.
	* test/all/and_not_guards/and_not_guards.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-09-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Avoid crash with overlapping synthesized guard.
	This is a follow-up to commit
	    062cd7921a87ecab47d0fecd0a98f3107cc0d576
	    ast: Fix ast:equal? for <field-test>.

	* dzn/normalize.scm (add-illegals): Oops, set parent of guard.

2022-09-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: wf_functionValueDiscarded: Add valued function in "if".
	* test/all/wf_functionValueDiscarded/wf_functionValueDiscarded.dzn (Test):
	Add valued function in if.
	* test/all/wf_functionValueDiscarded/baseline/verify.err: Update baseline.

	test: wf_actionValueDiscarded: Add valued action in "if".
	* test/all/wf_actionValueDiscarded/wf_actionValueDiscarded.dzn (Test):
	Add valued action in if.
	* test/all/wf_actionValueDiscarded/baseline/verify.err: Update baseline.

	wfc: Report valued actions and calls used in an "if".
	* dzn/wfc.scm (call-context): Also report discarded value when direct
	parent is not an if's expression.

	normalize: Avoid extracting valued action statement from "if".
	* dzn/normalize.scm (temporaries): Do not look at <if>s #:then or #else
	statement.

2022-09-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	dzn: Cater for variable reference as statement.
	A variable reference as statement is not valid Dezyne syntax, but let's
	not crash on it.

	* dzn/templates/dzn/else@var,
	dzn/templates/dzn/statement@var,
	dzn/templates/dzn/then@var: New templates.

2022-09-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	traces: Honor --output=-: write traces to stdout.
	* dzn/lts.scm (generate-trace): When out is "-", write traces to stdout.

2022-08-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	traces: Remove unused option.
	* dzn/commands/traces.scm (parse-opts): Remove 'debug.

2022-09-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Use "=" with long option.
	* dzn/verify/pipeline.scm (in-out:aut->verify-interface-nondet): Use "="
	instead of space separator.

2022-09-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Remove -B,--no-blocking option.
	* dzn/commands/code.scm (parse-opts): Remove usused -B,--no-blocking
	option.

2022-09-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (UNRELEASED): Mention action with undefined type.

	test: Add undefined/component/action_type.
	* test/all/undefined/component/action_type: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

	wfc: Gracefully handle action with undefined type.
	* dzn/wfc.scm (typed-expression): Handle action with undefined type.
	(no-extern-expression): Likewise.

2022-09-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Fix typo in 'NEWS'.
	* NEWS (Noteworthy bug fixes): Typo.

2022-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_port_qualifier.
	* test/all/parse_port_qualifier: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2022-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Reject "external" and "injected" on provides port.
	Reported by Michiel Fortuin <mfortuin@kns.com> via bug-dezyne@nongnu.org.

	* dzn/wfc.scm (wfc<port>): Return error for external or injected
	provides port.
	* doc/dezyne.texi (External): Explicitly mention that external is for
	requires ports.

2022-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Post-release update.
	* Makefile.am (gen-announce): Update previous version.

	doc: Remove duplicate, stale entries from `ROADMAP'.
	* ROADMAP (Release 2.19): Use LTS-based testing.
	(Release 2.20): Use Module based testing.  Add active system entry.
	(Release 3.0): Update javascript, scheme entries, remove lookup library
	entry.
	(Release 2.18): Remove stale, duplicate entry.
	(Release 2.19): Likwewise.
	(Release 3.0): Likewise.

2022-09-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.16.1.
	* guix/pack/dezyne.scm (dezyne): Update to 2.16.1.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.16.1 since 2.16.0): Mention performance regression
	fix and C++ compile warning fix.

2022-09-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	runtime c++: Avoid unused variable warning with -DNDEBUG.
	Reported by Michael van de Ven <michael.van.de.ven@thermofisher.com> via
	IRC.

	* runtime/c++/pump.cc (find_self)[NDEBUG]: Remove declaration of count
	and asserts.

2022-09-13  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add blocking_function_reply2.
	Test another reset skip-block regression.

	* test/all/blocking_function_reply/blocking_function_reply.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-09-13  Rutger van Beusekom  <rutger@dezyne.org>

	runtime cs: Use skip-block implementation from c++.
	This moves the runtime skip_block list to individual component's
	skip-block info.

	* runtime/cs/dzn/runtime.cs (Runtime.skip_block): Remove member.
	(Runtime.State)[skip]: New field.
	(Runtime.reset_skip_block): Rewrite to use it.
	(Runtime.port_release): Add component parameter, pass it to...
	(Runtime.release): ...here.  Likewise.
	(Runtime.skip_block, Runtime.set_skip_block): New methods.
	(Runtime.block): Use them.
	(Runtime.call_in): Use them.
	* dzn/templates/cs/main-event-map-in@trigger,
	dzn/templates/cs/main-event-map-valued-in@port-pair,
	dzn/templates/cs/main-event-map-valued-in@trigger,
	dzn/templates/cs/main-event-map-void-requires-in@trigger,
	dzn/templates/cs/port-release@reply: Update accordingly.

2022-09-13  Rutger van Beusekom  <rutger@dezyne.org>

	runtime c++: Fix skip blocking regression.
	This is a follow-up to commit
	    e28b849d8f78843c48959d289020fa4a874a10ad
	    c++: Move skip_block to runtime.

	* runtime/c++/dzn/runtime.hh (runtime::call_helper): Oops, pass
	component "c" to reset_skip_block, instead of "this"

2022-09-12  Paul Hoogendijk  <paul@dezyne.org>

	makreel: Fix performance regression in lps2lts.
	* dzn/templates/makreel/model@component (semantics_provides_unblocked,
	semantics_provides_blocking, semantics_provides_skip_blocked,
	semantics_provides_blocked, semantics_async): Remove unneeded
	synchronisation with requires "in" and "reply".
	* dzn/templates/makreel/semantics-comm-requires@port: Do not communicate
	"in" and "reply".
	* dzn/templates/makreel/semantics-allow-requires@port: Remove tick from
	"in" and "reply".
	* dzn/templates/makreel/semantics-rename-requires@port: Remove rename of
	"in'" and "reply'".
	* dzn/templates/makreel.scm (semantics-requires-action,
	semantics-requires-reply): Remove template definitions.
	* dzn/templates/makreel/semantics-requires-action@port,
	dzn/templates/makreel/semantics-requires-reply@port: Remove templates.

2022-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.16.1.rc1.
	* guix/pack/dezyne.scm (dezyne): Update to 2.16.1.rc1.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.16.1 since 2.16.0): Mention skip-block regression,
	and simulator bug fix.

2022-09-06  Rutger van Beusekom  <rutger@dezyne.org>

	cs: Move skip_block to runtime.
	* dzn/templates/cs/async-event-slot@trigger,
	dzn/templates/cs/event-slot@trigger,
	dzn/templates/cs/foreign-event-slot@trigger,
	dzn/templates/cs/foreign-valued-event-slot@trigger,
	dzn/templates/cs/valued-event-slot@trigger: Move skip-block code ...
	* runtime/cs/dzn/runtime.cs (call_in, call_in<R>): ... here, using ...
	* runtime/cs/dzn/pump.cs (dzn)[reset_skip_block]: ... this new function.

	c++: Move skip_block to runtime.
	* dzn/templates/c++/async-event-slot@trigger,
	dzn/templates/c++/event-slot@trigger,
	dzn/templates/c++/foreign-event-slot@trigger: Move skip_block ...
	* runtime/c++/dzn/runtime.hh (call_helper): ... here,
	(struct runtime::state)[skip]: Merge skip into state,
	(struct runtime)[set_skip_block, reset_skip_block]: Add functions.
	(struct runtime)[port_release]: Add component, remove port parameter.
	* runtime/c++/runtime.cc (runtime::set_skip_block): Add component
	parameter, runtime/c++/runtime.cc (runtime::external, runtime::handling
	runtime::blocked, runtime::deferred, runtime::queue,
	runtime::performs_flush): Rename scope parameter to component,
	(runtime::skip_block, runtime::set_skip_block): Add functions.
	* dzn/templates/c++/main-event-map-in@trigger,
	dzn/templates/c++/main-event-map-valued-in@port-pair,
	dzn/templates/c++/main-event-map-valued-in@trigger,
	dzn/templates/c++/main-event-map-void-requires-in@trigger,
	dzn/templates/c++/port-release@reply: Add component argument.
	* test/all/foreign_handwritten/c++/Foreign.cc (Foreign::Foreign): Remove
	skip_block call.
	* test/all/hello_namespace_foreign/c++/library_foreign.cc
	(foreign::foreign): Likewise.

2022-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: Add mono.
	The mono package contains many prebuilt binaries that cannot be
	bootstrapped from source

	    https://lists.gnu.org/archive/html/guix-devel/2022-09/msg00009.html

	* guix/pack/mono.scm: New file, import from guix.

2022-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add defer_priority.
	* test/all/defer_priority/defer_priority.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add compliance_blocking_illegal.
	* test/all/compliance_blocking_illegal: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	simulate: Report compliance error for illegal blocking event.
	* dzn/simulate.scm (check-provides-compliance)[first-non-match]: Do not
	shorten illegal port-trail.

	test: hello_hello_block: Move reply to function
	* test/all/hello_hello_block/hello_hello_block.dzn
	(hello_hello_block.h_reply): New function.  Use it for one of the
	replies to show the need for a reset of skip-block.

2022-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Avoid skip-block from previous port release.
	This partially reverts commit
	    78926733d9c410cfbb33d5fa6374d03dd14105c4
	    runtime: cs: Refactor skip-block.

	* dzn/templates/cs/async-event-slot@trigger,
	dzn/templates/cs/foreign-event-slot@trigger,
	dzn/templates/cs/foreign-valued-event-slot@trigger,
	dzn/templates/cs/valued-event-slot@trigger: Reset skip-block.
	* dzn/templates/cs/event-slot@trigger: No change, the revert was
	erroneously applied in commit
	    ec84102d7d38d7da12f6af8ef37cde146f9b353c
	    cs: Support formal-binding on synchronous out event.

2022-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Avoid skip-block from previous port release.
	This partially reverts commit
	    12bd650c7c839579ecb92ddc9f54389e698469b3
	    runtime: c++: Refactor skip-block.

	* dzn/templates/c++/async-event-slot@trigger,
	dzn/templates/c++/event-slot@trigger,
	dzn/templates/c++/foreign-event-slot@trigger: Reset skip-block.

2022-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_hello_block.
	Reported by Michael van de Ven <michael.van.de.ven@thermofisher.com> via
	IRC.

	* test/all/hello_hello_block/hello_hello_block.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Avoid releasing non-blocked event, leading to skip-block.
	* dzn/code.scm (code:blocking?): New function, factored-out from...
	(code:port-release): ...here.  Release only for requires triggers,
	blocking provides triggers, provides triggers reply on other provides
	port, or in function context.

2022-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Avoid unused pump variable when not using async.
	Reported by Michael van de Ven <michael.van.de.ven@thermofisher.com> via IRC.

	This is a follow-up to commit
	    e96a1d7d875be7efa0203408729d608057082845
	    code: Refactor code:pump?.

	* dzn/code/c++.scm (c++:pump-for-async?): New method.
	* dzn/templates/c++.scm (pump): Use it.  Rename to...
	(pump-for-async): ...this.
	* dzn/templates/c++/model@component: Update caller.
	* dzn/templates/c++/pump@component: Rename to...
	* dzn/templates/c++/pump-for-async@component: ...this.

2022-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid crash in compliance check and deadlock check.
	* dzn/simulate.scm (check-provides-compliance)[run-provides-modeling]:
	Also reset statement.
	* dzn/simulate.scm (event-traces-alist)[event-label>traces,
	provides-event->label-traces, requires-event->label-traces]: Likewise.

	script: Refactor module retrieval.
	* dzn/script.scm (script:command): New function, factor-out from...
	(main): ...here.
	(script:command-module): New function, factor-out from...
	(run-command): ...here.

	test: Add hello_import.
	* test/all/hello_import: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

	test: import_path: Rename from importPath.

	test: Remove wf_importPathErr.
	* test/all/wf_importPathErr: Remove.
	* test/all/local.mk (PARSER_TESTS): Remove it.

	test: wf_importPathErr: Remove unused file.
	* test/all/wf_importPathErr/II.dzn: Remove.

	test: Add compliance_provides_enum.
	* test/all/compliance_provides_enum: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: compliance_provides_bool: Canonicalize.
	* test/all/compliance_provides_bool/compliance_provides_bool.dzn
	(ibool, ibool.a, ibool.b): Rename to ...
	(ihello, ihello.cruel, ihello.world): ...this.
	* test/all/compliance_provides_bool/compliance_provides_bool.dzn
	(compliance_provides_bool): Update accordingly.
	(compliance_provides_bool.p): Rename to ...
	(compliance_provides_bool.h): ...this.
	* test/all/compliance_provides_bool/trace: Update accordingly.
	* test/all/compliance_provides_bool/baseline/simulate.out,
	test/all/compliance_provides_bool/baseline/simulate.err,
	test/all/compliance_provides_bool/baseline/verify.err,
	test/all/compliance_provides_bool/baseline/verify.out: Update baseline.

2022-09-06  Rutger van Beusekom  <rutger@dezyne.org>

	test: compliance_provides_bool: Remove from REGRESSION_TESTS.
	* test/all/local.mk (REGRESSION_TESTS): Remove compliance_provides_bool.

2022-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	DRAFT traces: Remove dead code.
	* dzn/verify/pipeline.scm (pretty-verify-pipeline): Remove unused
	options.

2022-08-26  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: After reorder_end return to behavior.

2022-08-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: LegoBallSorter: Fix compliance error in Motor.
	This fixes a compliance error with this unused event.

	* test/all/LegoBallSorter/Motor.dzn (IMotor.pulse): Remove event.
	(Move): Update accordingly.
	(Move.pulsing): Remove.

2022-08-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.16.1.rc0.
	* guix/pack/dezyne.scm (dezyne): Update to 2.16.1.rc0.

2022-08-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.16.1 since 2.16.0): New section.

2022-08-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add foreign_injected.
	Reported by Joran Jessurun <joran@ajmail.nl> via IRC.

	* test/all/foreign_injected/c++/Foreign.hh,
	test/all/foreign_injected/c/Foreign.c,
	test/all/foreign_injected/c/Foreign.h,
	test/all/foreign_injected/cs/Foreign.cs,
	test/all/foreign_injected/foreign_injected.dzn,
	test/all/foreign_injected/ilog.dzn,
	test/all/foreign_injected/iworld.dzn,
	test/all/foreign_injected/javascript/Foreign.js,
	test/all/foreign_injected/scheme/Foreign.scm,
	test/all/foreign_injected/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2022-08-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Support requires injected in foreign component.
	* dzn/templates/cs/model@foreign: Add #:injected-member-initializer.

2022-08-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: injected_foreign: Rename from foreign_injected.
	* test/all/foreign_injected: Rename to...
	* test/all/injected_foreign: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: Add foreign_requires.
	* test/all/foreign_requires/META,
	test/all/foreign_requires/c++/Foreign.hh,
	test/all/foreign_requires/c++/main.cc,
	test/all/foreign_requires/c/Foreign.c,
	test/all/foreign_requires/c/Foreign.h,
	test/all/foreign_requires/cs/Foreign.cs,
	test/all/foreign_requires/cs/main.cs,
	test/all/foreign_requires/foreign_requires.dzn,
	test/all/foreign_requires/ihello.dzn,
	test/all/foreign_requires/javascript/Foreign.js,
	test/all/foreign_requires/javascript/main.js,
	test/all/foreign_requires/scheme/Foreign.scm,
	test/all/foreign_requires/scheme/main.scm,
	test/all/foreign_requires/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	test: foreign_optional: Remove newline from javascript tracing.
	* test/all/foreign_optional/javascript/main.js (main): Remove newline.

	simulate: Support system with foreign and compliance error.
	* dzn/vm/util.scm (trigger->system-trigger<runtime:component>): Change
	specialization to...
	(trigger->system-trigger<runtime:component-model>): ...this, to also
	support <runtime:foreign>.
	* dzn/simulate.scm (check-provides-compliance): Use it.

2022-08-22  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Avoid crash for foreign.
	* dzn/simulate.scm (check-deadlock): Add foreign in predicate.
	* dzn/vm/step.scm (begin-step<runtime:foreign>): Add specialistation for
	foreign using make-implicit-illegal,
	(step<initial-compound>): Refactor into ...
	* dzn/vm/util.scm (make-implicit-illegal): ...this new function.

2022-08-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Support foreign component with requires injected port.
	* dzn/vm/util.scm (labels): Filter-out requires injected ports from
	labels.

	graph: Support foreign component with provides and requires ports.
	* dzn/vm/run.scm (run-requires): Check instance before using it.

2022-08-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Add missing injected requires port declaration in foreign.
	This is a follow-up to commit
	    85d168d9bb3f7d9b741557f21e8cce41dd3f261b
	    c++: Remove warning in injection initialization order.

	* dzn/templates/c++/header-model@foreign: Add #x:injected-port-declare.

2022-08-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add foreign_multiple_provides.
	* test/all/foreign_multiple_provides/META,
	test/all/foreign_multiple_provides/c++/Foreign.hh,
	test/all/foreign_multiple_provides/c/Foreign.c,
	test/all/foreign_multiple_provides/c/Foreign.h,
	test/all/foreign_multiple_provides/cs/Foreign.cs,
	test/all/foreign_multiple_provides/foreign_multiple_provides.dzn,
	test/all/foreign_multiple_provides/ihello.dzn,
	test/all/foreign_multiple_provides/javascript/Foreign.js,
	test/all/foreign_multiple_provides/scheme/Foreign.scm,
	test/all/foreign_multiple_provides/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	test: hello_foreign: Cleanups.
	* test/all/hello_foreign/dzn: Remove symlink.
	* test/all/hello_foreign/javascript/Foreign.js (Foreign): Do not set
	_dzn.flushes.  Cleanup whitespace.

2022-08-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Post-release update.
	* NEWS (Changes in 2.16.0 since 2.15.3): Rename to...
	(Changes in 2.16.0 since 2.15.4): ...this.
	* doc/announce/ANNOUNCE-2.16.0: Update checksums by running make
	sum-announce.  Update from NEWS.
	* Makefile.am (gen-announce): Update previous version.

	guix: dezyne: Update to 2.16.0.
	* guix/pack/dezyne.scm (dezyne): Update to 2.16.0.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.16): Move open items to...
	(Release 2.17): ...here.  Move shared-state to...
	(Release 2.18): ...here.  Mention wip-parent.  Move stitch and many misc
	suggestions to...
	(Release 2.19): ...here, and...
	(Release 3.0): ...here.  Move Data and Hierarchical behaviors to..
	(Release 2.21): ...here, and ...
	(Release 2.22): ...here, and ...
	(Release 2.19): Move module to...
	(Release 2.20): ...here.
	(After Release 3.0): Add General purpose language.

2022-08-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add defer_data.
	Reported by Joran Jessurun <joran@ajmail.nl> via IRC.

	* test/all/defer_data/defer_data.dzn,
	test/all/defer_data/trace,
	test/all/defer_data/trace.2,
	test/all/defer_data/main.cc,
	test/all/defer_data/main.cs,
	test/all/defer_data/main.scm: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2022-08-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: parse_defer: Also add defer argement errors.
	* test/all/parse_defer/parse_defer.dzn (parse_defer): Add an undefined identifier,
	a data member variable, and a local variable.
	* test/all/parse_defer/baseline/verify.err: Update baseline.

	doc: Mention that data members do not cancel defer.
	* doc/dezyne.texi (Component Defer): Mention that changing the value of
	a data member variable does not cancel defer.

2022-08-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Also check arguments of defer statement.
	This is a follow-up to commit
	    e7513d5a7c6323d2d28659802cdda1327ab36d64
	    wfc: Also check defer statement.

	* dzn/wfc.scm (wfc-defer-argument): New function.
	(wfc<defer>): Use it.

2022-08-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Ignore data members for canceling of defer.
	* dzn/code/cs.scm (cs:member-equality-variable*): New method.  Filter-out data
	members.
	* dzn/templates/cs.scm (member-equality): Use it.

	code: Ignore data members for canceling of defer.
	* dzn/code.scm (code:member-equality): New method.  Filter-out data
	members.
	* dzn/templates/code.scm (member-equality): Use it.

2022-08-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.16.0.rc3.
	* guix/pack/dezyne.scm (dezyne): Update to 2.16.0.rc3.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.16.0 since 2.15.3): Mention
	simplify-guard-expressions.

	normalize: Avoid splitting simple expressions.
	* dzn/normalize.scm (noisy-temporaries): Filter-out simple expressions.

	test: wf_typeerror: Add complex expression test.
	* test/all/wf_typeerror/wf_typeerror.dzn (wf_typeerror): Test integer
	expression in bool variable initialization.
	* test/all/wf_typeerror/baseline/verify.err: Update baseline.

	ast: Fix type deduction of expression.
	* dzn/ast.scm (ast:expression->type): Progress upward in expression,
	instead of jumping to <assign>, <call>, or <variable>.

	wfc: Cleanups.
	* dzn/wfc.scm (typed-binary): Use left, right instead of expr-1 expr-2.
	(binary-equal-no-extern-type): Likewise.

2022-08-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add simplify_guards.
	Reported by Joran Jessurun <joran.jessurun@ajmail.nl> via IRC.

	* test/all/simplify_guards/simplify_guards: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2022-08-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Fix ast:equal? for <field-test>.
	* dzn/ast.scm (ast:equal?<field-test>): Oops, compare variable too.

	transform: Add simplify-guard-expressions.
	* dzn/normalize.scm (simplify-guard-expressions): New normalization.
	* dzn/transform.scm: Re-export it as new transformation.

2022-08-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Run simulate stage before lts.
	* test/dzn/dzn.scm (%default-stages): Move simulate before lts.
	(run-test): Likewise.

2022-08-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Do not unnecessarily create temporary.
	* dzn/normalize.scm (temporaries)[add-temporary?]: Check there is
	actually an action or call when listing potential temporaries.

2022-08-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Do not synthesize false guards.
	* dzn/normalize.scm (add-illegals): Omit false guards.

2022-08-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Refactor rewrite-formals-and-locals.
	* dzn/normalize.scm (rewrite-formals-and-locals): Refactor.

	normalize: Refactor triples:split-multiple-on.
	* dzn/normalize.scm (triples:split-multiple-on): Refactor.

	normalize: Whitespace cleanup.
	* dzn/normalize.scm (add-defer-end): De-orphanize parentheses.

	code: Remove commented code.
	* dzn/code.scm: here.

2022-08-16  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Remove comments.
	* dzn/wfc.scm: Throughout, remove comments.

2022-08-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: Resurrect package build.
	This is a follow-up to commit
	    8e0e04531fef685ce60fe96d7dcfe3d2ed1f9454
	    guix: dezyne: Use new package style.

	* guix/pack/dezyne.scm (dezyne)[arguments]: Assoc using bash-minimal,
	guile-next, and mcrl2-minimal.

2022-08-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.16.0.rc2.
	* guix/pack/dezyne.scm (dezyne): Update to 2.16.0.rc2.

	test: Add system_defer.
	* test/all/system_defer/hello_defer.dzn: New symlink.
	* test/all/system_defer/system_defer.dzn,
	test/all/system_defer/META: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2022-08-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Fix eligible <defer> for system.
	This fixes deadlock or missing label from eligibles.

	* dzn/simulate.scm (event-traces-alist)[system-event-traces-alist]: Add
	defer-traces.

2022-08-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_defer.
	* test/all/parse_defer/parse_defer.dzn,
	test/all/parse_defer/baseline/verify.err: New files.
	* test/all/local.mk (PARSER_TESTS): Add test.

	wfc: Also check defer statement.
	* dzn/wfc.scm (wfc<defer>): New method.

2022-07-28  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_locals.

	code: Support using local variables in defer statement.
	* dzn/code.scm (code:capture-local): Filter-out defer-local variables.

2022-07-28  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Avoid crash on trailing line-comment in DOS-format.
	This is a follow-up to commit
	    a12e90e96c0d0aa5229a0f9ed18af1629ca7720d
	    peg: Preserve newlines between subsequent line-comments.

	* dzn/parse/peg.scm (peg-line): Also allow "\r\n".

2022-07-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Oops, re-enable memoization.
	This is a follow-up to commit
	    8ad6ff4149713086cb0114f98d30cf476939cff3
	    simulate: Detect defer livelock.

	* dzn/vm/run.scm (run-to-completion): Remove memoization short-circuit.

2022-07-21  Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Also disable forking checks when skipping compliance check.
	* dzn/simulate.scm (check-provides-compliance): Skip
	check-provides-fork, check-requires-provides-fork
	when (%compliance-check) is false.

2022-07-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Remove dead code.
	* dzn/simulate.scm (check-provides-compliance): Remove some dead code.

2022-07-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Debug sut-trail printing fix.
	This is a follow-up to commit
	    77d01da16484ce4e41ba5150d3ea83247193ad30
	    verify: Error traces end with <error> event.

	* dzn/simulate.scm (check-provides-compliance): Use "<illegal>".

2022-07-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Refactor and fix ast:function.
	* dzn/ast.scm (ast:call-statement): Move to...
	(ast:function*)[calls]: ...here, and refactor: Simplify and do not
	assume calls and actions are simple expressions.  Update caller.

2022-07-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Remove dead code.
	* dzn/ast.scm (ast->): Remove function from other era.

2022-07-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Refactor code:component-include.
	* dzn/code.scm (code:component-include): Use let and cute instead of
	lambda.

	code: Refactor code:interface-include.
	* dzn/code.scm (code:interface-include): Refactor.

2022-07-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: wf_importPathErr: Fix include paths.
	* test/all/wf_importPathErr/run: Point to wf_importPathErr directory.

2022-07-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Refactor code:pump?.
	* dzn/code.scm (code:pump?): Refactor, split-out from...
	* dzn/code/scheme.scm (scheme:use-module): ...here.

	templates: Ignore template-accessor false too.
	* dzn/code/makreel.scm (makreel:process-argument-stack?): Return
	function instead of false.
	* dzn/templates/makreel/process-argument-stack@boolean: Rename to...
	* dzn/templates/makreel/process-argument-stack@function: ...this.
	* dzn/templates.scm (compile)[display-o]: Also ignore #f.

	peg: Remove redundant use-module.
	* dzn/parse/peg.scm: Do not use (dzn parse ast).

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.16.0.rc1.
	* guix/pack/dezyne.scm (dezyne): Update to 2.16.0.rc1.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.16.0 since 2.15.3): Mention detection of V-fork.
	Mention issue #67.

	javascript: Remove redundant braces at toplevel of on.
	* dzn/templates/javascript/methods@on: Remove braces.

	c++: Remove redundant braces at toplevel of on.
	* dzn/templates/c++/methods@on: Move braces...
	* dzn/templates/c++/expand-on@compound: ...here.
	* dzn/templates/c/statement@compound: Replace by symlink to ../c++.

2022-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	test: defer_shadow: Add second data parameter and second local.
	* test/all/defer_shadow/defer_shadow.dzn (ihellocruelworld)[hello,
	world]: Add second data parameter.
	(defer_shadow): Add second local.

	makreel: Comma-separate defer locals.
	* dzn/templates/makreel.scm (deferred-locals-sort, deferred-locals): Use
	comma-infix.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Split-up XFAIL_TESTS into categories.
	This enables a partial make check like

	    make check RUN_FLAGS=--stage=code XFAIL_VERIFY=

	to succeed.

	* test/all/local.mk (XFAIL_TESTS): Split-up into...
	(XFAIL_PARSE, XFAIL_VERIFY, XFAIL_SIMULATE, XFAIL_CODE_ASYNC): ...these
	new variables.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Annotate blocking on ports.
	This is a follow-up to commit
	    6221aae465f6d6f5b68892e57c33398ed44dcd05
	    test: Annotate blocking on ports.

	* test/all/async_blocking_verify/async_blocking_verify.dzn: Annotate
	blocking on ports.

2022-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	test: c++: Disable some warnings for generated code.
	Disable some warnings for generated code, possibly originating from the
	model.

	* test/lib/build.c++.make (NOWARN_FLAGS): New variable.
	($(OUT)/%.o): Use it in rule for generated code.

2022-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	test: c++: Compile using -Wall -Wextra.
	* test/lib/build.c++.make (WARN_FLAGS): New variable.
	(CXXFLAGS): Use it.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: calling_context: Fix warnings in handwritten main.
	* test/all/calling_context/main.cc (main): Remove parameters.
	[sut.w.in.world]: Cast "i" to void.

	test: Fix bug in "--debug" flag check.
	* test/all/blocking_binding/main.cc (main): Compare string literal with
	std::string.
	* test/all/collateral_blocking_multiple_provides0/main.cc (main):
	Likewise.
	* test/all/sync_out_reply_binding/main.cc (main): Likewise.

	c++: Avoid strcmp.
	* dzn/templates/c++/main@component (main): Use == with std::string.

	test: foreign_optional: Fix warning in handwritten main.
	* test/all/foreign_optional/c++/main.cc (main): Remove parameters.

	test: hello_namespace_foreign: Remove dead c++ code.
	* test/all/hello_namespace_foreign/c++/library_foreign.cc (foreign::set_state):
	Remove.

	c++: Avoid -Wempty-body.
	* dzn/templates/c++/statement@skip: Change to compound.

	c++: Cast formals to void in generated main port function stub.
	* dzn/templates/c++.scm (formals-cast-void): New template definition.
	* dzn/templates/c++/formals-cast-void@formal: New template.
	* dzn/templates/c++/main-port-connect-in@trigger: Use it.

	code: Do not define in-formals as out-formal.
	* dzn/code.scm (code:main-out-arg-define): Filter on ast:inout or ast:out?.

2022-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	test: assign_formal: Remove -Wunused-but-set-parameter.
	* test/all/assign_formal/assign_formal.dzn (iworld): Remove.
	(assign_formal): Rewrite.
	[f]: Return assigned-to formal.

	test: alpha_local: Remove -Wmaybe-uninitialized.
	* test/all/alpha_local/alpha_local.dzn (alpha_local): Initialize local
	data.

	c++: Remove warning in injection initialization order.
	* dzn/ast.scm (ast:requires-no-injected-port*): New method.
	* dzn/templates/c++.scm (requires-port-declare): Use it.
	(injected-port-declare): New template definition.
	* dzn/templates/c++/header-model@component: Use it.
	* dzn/templates/code.scm (requires-member-initializer): Use
	ast:requires-no-injected-port*.
	(injected-member-initializer): New template definition.
	* dzn/templates/c++/model@component: Use it.
	* dzn/templates/c++/injected-port-declare@port: New symlink.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Reduce baseline depth and eliminate name repetition.
	Run:
	    build-aux/migrate-baseline.sh

	* build-aux/migrate-baseline.sh: New script.
	* test/bin/update.sh: Update accordingly.
	* test/bin/rename: Likewise.
	* .gitignore: Update accordingly.
	* test/dzn/dzn.scm (error-model?): Update accordingly.
	(run-verify): Do not pass #:baseline parameter to...
	(run-baseline): ...here.  Update accordingly.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: dzn: Cleanups.
	* test/dzn/dzn.scm (run-code, run-traces, run-build, run-execute,
	run-simulate-trace, run-lts): Uniformize out and out-lang
	initialization.

	test: blocking_shell: Avoid warning in C++.
	* test/all/blocking_shell/blocking_shell.dzn (blocked): Add member,
	assign to that instead of to unused local variable.

2022-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Cleanup runtime and remove compiler warnings.
	Replace abbreviated ids with unabbreviated identifiers.

	* runtime/c++/dzn/container.hh (struct container)[flush]: Remove member.
	* dzn/templates/c++/main-port-connect-out@trigger: Update accordingly.
	* test/all/async_calling_context/c++/main.cc: Likewise.
	* dzn/templates/c++/main@component: Add debugging.
	* runtime/c++/dzn/pump.hh (struct pump)[id]: Rename to...
	[current_coroutine): ...this.
	* runtime/c++/pump.cc (pump::blocked_p, defer, prune_deferred,
	coroutine_id, port_block, port_release, pump::block): Use long parameter
	names.
	(pump::collateral_block): Likewise.  Uniformise order of parameters.
	* runtime/c++/dzn/runtime.hh: Update prototypes.  Remove parameter names.
	(runtime::call_helper)[c]: Rename to...
	[component]: ...this.
	(runtime::call_in, runtime::call_out, runtime::defer): Use long
	parameter names.
	(runtime::defer): Remove void *component parameter and refactor.
	* runtime/c++/runtime.cc (dzn::trace, dzn::trace_out, dzn::trace_qin,
	dzn::trace_qout, dzn::runtime::enqueue): Use long parameter names.
	* runtime/c++/dzn/runtime.hh

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_call_before_var.
	* test/all/parse_call_before_var: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2022-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Fix parsing of call after formal parameter with same name.
	* dzn/parse/peg.scm (peg:parse): Add debugging for variable-stack.
	Promote call before var in precedence.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Remove obsolete script.
	* bin/import-test.sh: Remove.

2022-07-19  Paul Hoogendijk  <paul@dezyne.org>

	test: Add compliance_fork_blocking_bypass.
	* test/all/compliance_fork_blocking_bypass: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Dectect forking on blocked trace.
	* dzn/simulate.scm (check-provides-fork): Cater for blocking trace by
	using PC of first provides trigger.
	(check-provides-compliance): Also run check-provides-fork for requires
	event.
	* dzn/vm/report.scm (final-error-messages): Use location of statement.

2022-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Defer add selection.
	* doc/dezyne.texi (Component On): Update argument-list syntax for
	optional argument list on defer, update defer with optional argument list.
	(Component Action): Update accordingly.
	* doc/examples/defer-selection.dzn: New file.
	* doc/dezyne.texi (Component Defer): Use it to document semantics of the
	optional argument list.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Add it.
	* doc/examples/defer.dzn (ihelloworld): Update.

	test: Add defer_empty_selection.
	* test/all/defer_empty_selection: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Detect defer livelock.
	* dzn/vm/run.scm (run-defer-event)[livelock?]: New inner function.  Use
	it to defect livelock.
	* dzn/vm/report.scm (report): If error traces are present, report one of
	those.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid defer livelock in strict mode.
	This is a follow-up to commit
	    simulate: Allow <defer> on trail.

	XXX TODO: detect livelock in non-stict mode?

	* dzn/vm/run.scm (run-to-completion*): Do not interleave <defer> and
	requires trigger in strict mode.

2022-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Fix defer_empty_selection LTS equality.
	* dzn/templates/makreel/semantics-async-defer-flush@ast,
	dzn/templates/makreel/semantics-async-defer@ast,
	dzn/templates/makreel/semantics-blocked-rtc-defer@ast,
	dzn/templates/makreel/semantics-main@ast,
	dzn/templates/makreel/semantics-provides-blocked-defer@ast,
	dzn/templates/makreel/semantics-provides-blocking-defer@ast,
	dzn/templates/makreel/semantics-provides-skip-blocked-defer@ast: Replace
	"defer_q_empty . semantics_main + semantics_provides" with
	"semantics_main".

	test: Add defer_selection.
	* test/all/defer_selection/defer_selection.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	makreel: Explicit selection of variables on defer.
	* dzn/ast.scm (ast:argument*<defer>): New specialization.
	(ast:defer-variable*): Use it instead of grazing expressions from
	guards.
	* dzn/parse/peg.scm (peg:parse): Allow optional arguments on defer.
	* test/all/defer_cancel_call/defer_cancel_call.dzn (defer_cancel_call):
	Remove "if" again.
	* test/all/defer_loop/defer_loop.dzn (defer_loop): Likewise.
	* test/all/defer_queuefull/defer_queuefull.dzn (defer_queuefull):
	Likewise.
	* test/all/defer_queuefull/baseline/simulate/defer_queuefull,
	test/all/defer_queuefull/baseline/simulate/defer_queuefull.stderr:
	Update baseline.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	peg: Support arguments on defer.
	* dzn/goops.scm (<defer>)[arguments]: New field.
	* dzn/parse/ast.scm (parse-tree->ast): Cater for defer with arguments.
	* test/all/defer_parallel/defer_parallel.dzn (defer_parallel): Add
	defer parameters.

2022-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_nested_parallel.
	* test/all/defer_nested_parallel: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add defer_parallel.
	* test/all/defer_parallel: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	code: Add state selection to defer.
	* dzn/code.scm (code:capture-member<component>): Remove specialization.
	Move implementation...
	(code:capture-member<defer>): ...here.
	* dzn/code.scm (code:default-true): Cater for #:arguments being #f.
	(code:defer-condition): Likewise.

	simulate: Add state selection to defer.
	* dzn/vm/util.scm (get-members): New method.  Factored-out from...
	(prune-defer): ...here.
	(get-locals): New method.
	(graft-locals): Use it in new method.
	* dzn/vm/run.scm (run-defer-event): Use it to support state selection,
	only reset locals from defer-pc.

	makreel: Add state selection to defer.
	* dzn/ast.scm (ast:defer-variable*): New method.
	* dzn/templates/makreel.scm (defer-select-variable): Use it in new
	template definition.
	* dzn/templates/makreel/defer-predicate@variable: Use it in new template.
	(defer-select-member, defer-predicate, defer-predicate-true): New
	template definitions.
	* dzn/templates/makreel/defer-predicate-true@component,
	dzn/templates/makreel/defer-select-member@variable,
	dzn/templates/makreel/defer-select-variable@variable: New templates.
	* dzn/templates/makreel/model@component (StateLocals): Rename to...
	(DeferContext): ...this.  Add selection.
	(prune_deferred): Update user.  Use selection in predicate.
	(defer_qin, defer_qin', defer_head, defer_tail, defer_queue): Update
	users.
	* test/all/defer_cancel_call/defer_cancel_call.dzn (defer_cancel_call):
	Add "if" to update for new semantics.
	* test/all/defer_loop/defer_loop.dzn (defer_loop): Likewise.
	* test/all/defer_queuefull/defer_queuefull.dzn (defer_queuefull):
	Likewise.
	* test/all/defer_queuefull/baseline/simulate/defer_queuefull,
	test/all/defer_queuefull/baseline/simulate/defer_queuefull.stderr:
	Update baseline.

	test: defer_nested: Simplify.
	* test/all/defer_nested/defer_nested.dzn (ihello): Remove "cruel".
	(defer_nested): Simplify, remove parallel defer.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Support lonely variable in if branch.
	* dzn/code/scheme.scm (wrap-lonely-variable): Remove special case for
	compound, only wrap variable if parent is not a compound.

	build: Add check-smoke, check-semantics, check-hello targets.
	* Makefile.am (check-smoke, recheck-smoke, check-semantics,
	recheck-semantics, check-hello, recheck-hello): New targets.

	test: run: Add --language, --skip, and --stage options.
	* Makefile.am (LOG_COMPILER): Propagate RUN_FLAGS.
	* HACKING (Regression test): Document usage.
	* test/bin/run.in (parse-opts): New function.
	(main): Make "test/all/" prefix optional.  Use parse-opts to override
	languages and pass stages to...
	* test/dzn/dzn.scm (run-test): ...new parameter #:stages.
	[skip]: New inner define.  Use them to skip stages.
	(%default-stages): New variable.

2022-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Fix running of (multiple) defer(s) at EOT.
	* dzn/vm/run.scm (flush-defer): New method.
	* dzn/simulate.scm (run-sut): Use it at EOT.

	simulate: Avoid crash upon empty trace set.
	* dzn/simulate.scm (event-traces-alist): Do not merge singleton list.
	(labels-filter-blocked-ports): Likewise, no lset-intersection.
	* dzn/vm/report.scm (report): Cater for missing pc.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid crash when using foreign trigger on trail.
	* dzn/simulate.scm (check-provides-compliance): Use ast:provides on
	component-trigger.

	c++: Support formal-binding on synchronous out event.
	* dzn/code.scm (code:port-reply): New method.
	* dzn/templates/code.scm (port-reply): Use it in new template
	definition.
	* runtime/c++/pump.cc (dzn::port_release): Remove out_binding
	parameter.  Move out-binding evaluation to...
	* dzn/templates/c++/port-reply@port: ...this new template.
	* dzn/templates/c++/statement@reply: Use it.
	* dzn/templates/c++/event-slot@trigger: Likewise.
	* dzn/templates/c++/port-release@reply: Update caller.
	* runtime/c++/dzn/runtime.hh (dzn::port_release): Update prototype.
	* dzn/templates/javascript/statement@reply: Change symlink to file with
	original content.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.16.0 since 2.15.3): Mention build updates, complex
	expressions, new transformations, mCRL2 and well-formedness bugfixes.

	test: Add complex_member.
	* test/all/complex_member/complex_member.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	c: Support component-local integer in function.
	* dzn/templates/c.scm (function-return-type): Use c:type-name.

	parse: Mark member assignment as noisy.
	* dzn/parse/silence.scm (silence<assign>): Assignment to member is
	"noisy" too.
	* test/dzn/silence.scm ("noisy assign"): Test it.

	test: Add complex_int.
	* test/all/complex_int/complex_int.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c: Evaluate noisy expressions left to right.
	Evaluation order of argument lists and non-boolean expressions is
	unspecified in C; argument lists are commonly evaluated right to left.
	Cater for that by using only one noisy call per expression or argument
	list.

	* dzn/code/c.scm (ast->): Use code:om+determinism instead of code:om.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Evaluate noisy expressions left to right.
	Evaluation order of argument lists and non-boolean expressions is either
	undefined or unspecified in C++; argument lists are commonly evaluated
	right to left.  Cater for that by using only one noisy call per
	expression or argument list.

	* dzn/code.scm (code:om+determinism): New function.
	* dzn/code/c++.scm (ast->): Use it.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	shell-util: Have block-format respect end of sentence.
	* dzn/shell-util.scm (block-format): Add extra space at end of sentence.
	* dzn/normalize.scm (normalize:event): Add missing comma.

	transform: Add add-determinism-temporaries.
	* dzn/normalize.scm (noisy-temporaries): New method.
	(%noisy-ordering?): New parameter.
	(add-temporary?): If set, return first of noisy-temporaries when there
	are more than one.
	(split-complex?): If set, return false.
	(add-determinism-temporaries): Set it, call add-explicit-temporaries.
	* dzn/transform.scm: Make transformation available by re-exporting it.

	test: Add silence.
	* test/dzn/silence.scm: New file.
	* test/dzn/local.mk (UNIT_TESTS): Add it.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Annotate function's noisiness.
	Mostly resurrected from

	    3312f6178a647422ef9d282fa64d847504a12317
	    Remove silence feature.

	but instead of marking <on>'s #:silence?, mark <function>'s noisy?  When
	noisiness cannot be determined statically, #:noisy? true.  Also cater
	for <action>/<call> in <assign> and for complex expressions.

	* dzn/goops.scm (<function>)[noisy?]: New field.
	* dzn/parse/silence.scm: New file.
	* dzn/parse/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/parse/ast.scm (annotate-functions): Use it in new method.
	(parse-tree->ast): Use it instead of...
	(set-recursive<behavior-node>): ...this.  Remove.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add complex_arguments.
	* test/all/complex_arguments/complex_arguments.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add complex_assign.
	* test/all/complex_assign/complex_assign.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add complex_expressions.

	test: Add complex_not.

	test: Add complex_or.

	test: Add complex_and.

	normalize: Support complex expressions.
	* dzn/normalize.scm (temporaries): New function.
	(add-temporary): Use it.
	temp-name): New function, factored-out from...
	(add-explicit-temporaries): ...here.  Refactor and use
	split-complex-expressions to support complex expressions.
	* dzn/wfc.scm (call-context): Remove "complex expression" check.
	* test/all/wf_actionInExpression,
	test/all/wf_functionInExpression: Remove tests.
	* test/all/local.mk (PARSER_TESTS): Remove them.
	* doc/dezyne.texi (Action used in a complex expression): Remove.
	(Call used in a complex expression): Remove.
	(List of Well-formedness Checks): Remove references.
	(Component Action): Mention usability in any
	expression.  Update note.
	(Component If): Likewise.
	(Function Call): likewise.
	(If): Fikewise.
	(Well-formedness -- Valued Actions and Calls): Reword.

	transform: Add split-complex-expressions.
	* dzn/normalize.scm (complex?): New function.
	(add-temporary?): New function, factored-out from...
	(add-explicit-temporaries): ...here.
	(split-complex-expressions): New function.
	* dzn/transform.scm: Make it available by re-exporting it.

	normalize: Factor-out split-variable.
	* dzn/ast.scm (ast:default-value): New method.
	* dzn/normalize.scm (split-variable): Use it in new method, factored-out
	from...
	* dzn/transform.scm (inline-functions): ...here.

	test: Add normalize.
	* test/dzn/normalize.scm: New file.
	* test/dzn/local.mk (UNIT_TESTS): Add it.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: simplify-expression: Cater for action and call.
	An expression with an action or call, even when statically equal, is not
	dynamically equal, e.g., "foo () && foo ()" must not reduce to "foo ()".

	* dzn/normalize.scm (simplify-expression<bool-expr>)[static?]: New inner
	define.  Use it when comparing to reduce left and right.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.15.4 since 2.15.3): New section.

	simulate: Omit <rtc> labels when blocked on <trigger-return>.
	* dzn/vm/util.scm (rtc-labels): Return the empty list if
	blocked-on-boundary-port's statement is a <trigger-return>.

	simulate: Also collaterally block on handling top component.
	* dzn/vm/step.scm (begin-step): Remove blocked-on-boundary? restriction.

	test: blocking_release: Remove dead code.
	* test/all/blocking_release/main.scm (log-out): Remove.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Also group expressions in functions.
	This is a follow-up to commit
	    46965432709f6d880ccc90a5a8601513e16ede61
	    normalize: Cleanup and simplify expressions.

	* dzn/normalize.scm (normalize:state, normalize:state+illegals,
	normalize:event, normalize:event+illegals): Also call group-expressions
	on functions.

2022-07-19  Rutger van Beusekom  <rutger@dezyne.org>

	test: Extend enum_expressions with enum conditional function.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Select only let/ec from (ice-9 control).
	* dzn/templates/scheme/source@root: Add selector for let/ec.

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Pass <defer> on trace into JSON.
	This is a follow-up to commit
	    c2c79d22658488724653ccaab19188f5097385da
	    simulate: Allow <defer> on trail.

	* dzn/trace.scm (trace:steps->json)[instance->lifeline]: Also accept
	"<defer>".

2022-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add unused_assign.
	* test/all/unused_assign/unused_assign.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-07-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Generate correct mCRL2 code for lonely assignments.
	* dzn/code/makreel.scm (last-statement?): Always return true when
	statement is not in a compound.
	(makreel:assign-call-parameter): Instead of checking equality of
	assignment and variable's parent scopes, check whether variable is in
	scope at assignment's continuation.

	test: parse_duplicate_definition: Add allowed shadowing cases.
	* test/all/parse_duplicate_definition/hello.dzn: Test shadowing in
	compound and if.

	wfc: Allow shadowing in branches of if-statement.
	* dzn/goops.scm (<formals>): Inherit from <scope> too.
	(<if>): Likewise.
	* dzn/ast.scm (.type<formal>): Step out of formals scope before calling
	ast:lookup.
	(ast:declaration*<if>): New specialization.
	(ast:variable*<statement>, ast:variable*<variable>): New
	specializations.
	* dzn/wfc.scm (decl-scope): Remove.
	(re-definition): Use parent <scope> instead.
	* dzn/vm/util.scm (range-error): Fix parent.

2022-07-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	display: Display broken AST, better error message.
	* dzn/display.scm (display-slots): Dissolve inner-IF into COND, add type
	to error message, display broken content.

2022-07-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Fix memoization of locals.
	* dzn/code/makreel.scm (makreel:locals): Add model to memoize key.

2022-07-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	dzn: Do not crash if dzn file lacks top comment.
	This is a follow-up to commit
	    6eeba944ee27d0e8b29bcace7f9ee0cde6edc19e
	    dzn: Preserve root comment.

	* dzn/code/dzn.scm (dzn:comment<ast>): Change to...
	(dzn:comment<top>): ...this.

2022-07-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Minor cleanups in compliance check.
	* dzn/simulate.scm (check-provides-compliance)[run-provides-port]: Add
	instance and pc to %debug.  Remove redundant interface assignment,
	remove redundant let*.

2022-07-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid crash in compliance check.
	This is a follow-up to commits
	    30837f29168f22d93c6eded3fd1741f1d64d2a61
	    vm: Maintain reply per instance.

	and

	    a1b3409a109d0a55c0e49f43419d25e1d9ef30c0
	    vm: Support reply value per blocked port.

	* dzn/simulate.scm (check-provides-compliance): Do not discard new port
	pc with reset instance, statement and trail values.

2022-07-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	templates: Refactor file-name.

2022-06-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Compile scheme files.
	* build-aux/pre-inst-env.in (GUILE_TOOLS): Substitute and export new
	variable.
	* test/lib/build.scheme.make (abs_top_srcdir, GUILEC_FLAGS): New
	conditional variables
	%.go: New rule.
	$(OUT)/test: Add dependencies on go-files.

2022-06-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: foreign_import_system: Fix for scheme build.
	Foreigns in Scheme need their port class, which leads to a cyclic
	dependency if the port class is defined alongside the system class.

	* test/all/foreign_import_system/hello_foreign.dzn (iworld): Move to...
	* test/all/foreign_import_system/iworld.dzn: ...here.

2022-06-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: empty_dollars: Skip build for scheme too.
	* test/all/empty_dollars/META (skip): Add "scheme:build".

2022-07-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Document formal-binding in synchronous out event context.
	* doc/dezyne.texi (Component On): Mention synchronous out event
	context. for formal binding.
	(Component Reply): Likewise.
	(Formal Binding): Likewise for tagline.  Add synchronous examples.

	test: Add sync_out_reply_binding.
	* test/all/sync_out_reply_binding: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	cs: Support formal-binding on synchronous out event.
	* runtime/cs/dzn/pump.cs (dzn.pump.port_release): Remove
	out-binding parameter.  Move out-binding evaluation to...
	* dzn/templates/cs/port-reply@port: ...this new template.
	* dzn/templates/cs/statement@reply: Use it.
	* dzn/templates/cs/declare-method@trigger: likewise.
	* dzn/templates/cs/port-release@reply: Update caller.
	* dzn/templates/cs/method@on: Remove formal-bindings helpers.
	* dzn/templates/cs/expand-statement@blocking-compound: Move formal-bindings...
	* dzn/templates/cs/statement@out-bindings: ...here.
	* dzn/templates/cs/event-slot@trigger,
	dzn/templates/cs/valued-event-slot@trigger: Use it.
	* dzn/code/cs.scm (cs:formal-bindings): New method.
	(cs:formal-binding<out-bindings>): New specialization.
	* dzn/templates/cs/main-event-map-in@trigger,
	dzn/templates/cs/main-event-map-valued-in@port-pair,
	dzn/templates/cs/main-event-map-valued-in@trigger,
	dzn/templates/cs/main-event-map-void-requires-in@trigger: Update
	callers.

	scheme: Support formal-binding on synchronous out event.
	* runtime/scheme/dzn/pump.scm (port-release): Remove out-binding
	parameter.  Move out-binding evaluation to...
	* dzn/templates/scheme/port-reply@port: ...this new template.
	* dzn/templates/scheme/statement@reply: Use it.
	* dzn/templates/scheme/declare-method@trigger: likewise.
	* dzn/templates/scheme/port-release@reply: Update caller.

	c++: Support formal-binding on synchronous out event.
	* dzn/code.scm (code:port-reply): New method.
	* dzn/templates/code.scm (port-reply): Use it in new template
	definition.
	* runtime/c++/pump.cc (dzn::port_release): Remove out_binding
	parameter.  Move out-binding evaluation to...
	* dzn/templates/c++/port-reply@port: ...this new template.
	* dzn/templates/c++/statement@reply: Use it.
	* dzn/templates/c++/event-slot@trigger: Likewise.
	* dzn/templates/c++/port-release@reply: Update caller.
	* runtime/c++/dzn/runtime.hh (dzn::port_release): Update prototype.
	* dzn/templates/javascript/statement@reply: Change symlink to file with
	original content.
	* dzn/templates/c++/main-event-map-in@trigger,
	dzn/templates/c++/main-event-map-valued-in@port-pair,
	dzn/templates/c++/main-event-map-valued-in@trigger,
	dzn/templates/c++/main-event-map-void-requires-in@trigger: Update
	callers.

	test: blocking_binding: Cleanup handwritten mains.
	* test/all/blocking_binding/main.cc,
	test/all/blocking_binding/main.cs: Rewrite.

2022-07-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_binding: Resurrect actual test.
	This is a follow-up to commits
	    14047c9488f7a5cf148aa0b8036fc106959835e5
	    c++ container: Make all actions blocking in generated main.

	and

	    c617a77c80c06ff3f9be5188ffe0df7abe0b817c
	    cs container: Make all actions blocking in generated main.

	that, instead of updating the handwritten main.cc and main.cc, removed
	them "the test still passes".

	It also adds a scheme test.

	* test/all/blocking_binding/main.cc,
	test/all/blocking_binding/main.cs,
	test/all/blocking_binding/main.scm: New files.

2022-07-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Actually call formal-binding lambda.
	* runtime/scheme/dzn/pump.scm (dzn:release): Thinko.

2022-06-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Compile fix for generated main without ports.
	This fixes parse_block_comment_import which uses an empty system.

	* dzn/templates/scheme/main@component (fill-event-alist): Avoid empty
	"when".

2022-07-13  Rutger van Beusekom  <rutger@dezyne.org>

	dzn: Expand defer in if too.
	* dzn/templates/dzn/then@defer: New file.

2022-07-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Fix feature-skipping for test with multiple features.
	This is a follow-up to commit
	    7af5ad8449ce4a334b7c641b4cbec468ec21c401
	    test: Skip test with unsupported features programmatically.

	* test/dzn/dzn.scm (features-missing): Do not clear missing when a
	feature is supported.

2022-07-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Fix typos in configure.
	* configure.ac: Fix two typos.

2022-07-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Distribute doc/examples/hello_foreign.dzn.
	This is a follow-up to commit
	    0b1787908ac61eb5f952cdd9b71887bec695c109
	    doc: Add section "Foreign Component".

	* doc/examples/local.mk (DEZYNE_EXAMPLES): Add hello_foreign.dzn.

2022-07-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Publish development manual.
	* Makefile.am (SITE): Update to new layout.
	(DEVEL_SITE): New variable.
	(publish-devel): Use it in new target.
	(LOCAL_DEVEL_SITE): New variable.
	(publish-local-devel): Use it in new target.

	doc: Typos.
	* doc/dezyne.texi (Component Defer): Fix two typos.

2022-07-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update menus.
	This is a follow-up to commit
	    b4763954a68839148e84c33b384de2522aa619e0
	    doc: Document defer.

	* doc/dezyne.texi: Run M-x texinfo-all-menus-update.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.16.0.rc0.
	* guix/pack/dezyne.scm (dezyne): Update to 2.16.0.rc0.

	doc: Add ANNOUNCE-2.16.0.
	* doc/announce/ANNOUNCE-2.16.0: New file.

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.16): Move done items...
	(DONE): ...here.
	(Release 2.17,2.18): Swap stitch and shared state, add model based
	testing.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.16.0 since 2.15.2): New section.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	test: async_shell: Remove tss.
	* test/all/async_shell/META: Remove.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: Move dezyne to (pack) namespace.
	Now that Dezyne is distributed in GNU Guix, let's not shadow the guix
	module.

	* guix/gnu/packages/dezyne.scm: Move to...
	* guix/pack/dezyne.scm: ...here.
	* guix.scm: Update accordingly.
	* Makefile.am (EXTRA_DIST, release, update-hash): Update accordingly.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Update for the Verum-Dezyne (IDE) rename.
	Run:

	sed -i                                          \
	    -e 's,Dezyne-IDE,Verum-Dezyne,'g            \
	    -e 's,Dezyne IDE,Verum-Dezyne,'g            \
	    -e 's,dezyne-ide,verum-dezyne,'g            \
	    -e 's,dezyne_ide,verum_dezyne,'g            \
	  $(git grep -li dezyne.ide)

	* .texinfo/htmlxref.cnf,
	build-aux/copyright-header.scm,
	doc/dezyne.texi,
	doc/images/README: Updated.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "runtime: cs: Add timeout to container waiting for input."
	The cs language pack keeps failing one or two defer tests under load

	    ** stage: execute: cs test/all/defer_cancel_call/out/traces/defer_cancel_call.trace.1
	    test/all/defer_cancel_call/out/cs/test
	    status: 134
	    stdout:
	    * Assertion at gc.c:867, condition `finalizer_thread_exited' not met

	This reverts commit 6128af697a70ffff8080d3366002d0ca593d09fb.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove obsolete symlinks.
	Symlinks from a different era, test selection now using `run' or
	standard GNU mechanism, see HACKING.

	* test/async/livelock_async_cancel,
	test/compliance/compliance_failures_optional,
	test/error/compliance_failures_optional,
	test/error/livelock_async_cancel,
	test/error/livelock_iterator,
	test/hello/component_modeling_loop,
	test/regression/compliance_failures_optional,
	test/regression/livelock_async_cancel,
	test/regression/livelock_iterator: Remove.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Enable scheme when configuring --with-courage.
	* configure.ac: Move adding of scheme down to after $courageous is set.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	normalize: Add doc-string.
	* dzn/normalize.scm (normalize:state, normalize:event, purge-data,
	add-function-return, remove-otherwise, add-explicit-temporaries): Add
	doc-string.
	* dzn/vm/normalize.scm (normalize:compounds): Add doc-string.

	transform: Block format transformation doc-strings.
	* dzn/shell-util.scm (block-format): New function.
	* dzn/script.scm (parse-opts): Use here to format transformation
	function doc-strings.

	transform: Add doc-string.
	* dzn/transform.scm (normalize:compounds-wrap, inline-functions): Add
	doc-string.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	transform: Parameters on inline-functions.
	Try:

	    ./pre-inst-env dzn -d --transform='inline-functions(f)' code -l dzn -o- \
	      test/all/hello_function/hello_function.dzn

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	transform: Add inline-functions.
	* dzn/ast.scm (ast:values): New method.  Factor-out from...
	* dzn/ast.scm (ast:return-values): ...here.
	* dzn/transform.scm (inline-void-functions): Use it in new function.
	* test/all/blocking_queuefull_reply/baseline/simulate/blocking_queuefull_reply:
	Update baseline.

	ast: Rename function #:recursive to #:recursive?.
	* dzn/goops.scm (<function>)[recursive]: Rename to...
	[recursive?]: ...this.
	* dzn/parse/ast.scm (set-recursive): Update accordingly.
	* dzn/wfc.scm (tail-recursion): Likewise.

	dzn: Add -t,--transform option.
	* dzn/commands/parse.scm (parse): Pass transform to...
	* dzn/parse.scm (file->ast, string->ast): ...new #:transform parameter
	here.  Apply them.
	(string->transformation): New function.
	* dzn/command-line.scm (multi-options): Add 'transform.
	* dzn/script.scm (parse-opts): Add -t,--transform option.
	* dzn/transform.scm: New file.
	* dzn/local.mk (dist_%C%_scm_DATA): Add it.
	* doc/dezyne.texi (Invoking dzn): Document it.

	transform: normalize:compounds: Remove empty or superflous compounds.
	* dzn/vm/normalize.scm (normalize-compounds): Rename to...
	(normalize:compounds): ...this.  Add #:wrap-imperative? parameter.  Also
	remove empty compounds, and unless wrap-imperative? also remove
	superflous compounds.

	transform: remove-otherwise: Adapt for transformation.
	* dzn/vm/normalize.scm (remove-otherwise): Un-curry definition.
	* dzn/code.scm (code:om): Update caller.
	* dzn/code/cs.scm (cs:om): Update caller.
	* dzn/code/makreel.scm (makreel:om): Update caller.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	transform: Add normalize:event transformation.
	Avoid adding explicit illegals during transformation.

	* dzn/normalize.scm (triples:->on-guard*): Add #:otherwise? parameter.
	(normalize:event): Rename to ...
	(normalize:event+illegals): ...this.  Use it.
	(normalize:event): New function.
	* dzn/code.scm (code:om): Update caller.
	* dzn/code/cs.scm (cs:om): Update caller.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	transform: Add normalize:state transformation.
	Avoid adding explicit illegals during transformation.

	* dzn/normalize.scm (normalize:state): Rename to ...
	(normalize:state+illegals): ...this.
	(normalize:state): New function.
	* dzn/code/makreel.scm (makreel:om): Update caller.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	transform: add-explicit-temporaries: Use "_" in tmp name.
	* dzn/normalize.scm (add-explicit-temporaries): Use "_" instead of "'"
	in temp name.

	scheme: Preserve root comment.
	* dzn/code/scheme.scm (comment-mangler): New method.
	(scheme:mangle-comment): Use it in new method.
	* dzn/templates/scheme.scm (mangle-comment): Use it in new template
	definition.
	* dzn/templates/scheme/comment@comment: Use it in new template.
	* dzn/templates/scheme/source@root: Expand root comment.

	c: Preserve root comment.
	* dzn/templates/c/header@root,
	dzn/templates/c/source@root: Expand root comment
	* dzn/templates/c/comment@comment: New template symlink.

	javascript: Preserve root comment.
	* dzn/templates/javascript/source@root: Expand root comment
	* dzn/templates/javascript/comment@comment: New template symlink.

	cs: Preserve root comment.
	* dzn/templates/cs/source@root: Expand root comment
	* dzn/templates/cs/comment@comment: New template symlink.

	c++: Preserve root comment.
	* dzn/templates/c++/header@root,
	dzn/templates/c++/source@root: Expand root comment
	* dzn/templates/c++/comment@comment: New template symlink.

	dzn: Preserve root comment.
	* dzn/code/dzn.scm (dzn:comment): New method.
	* dzn/templates/dzn.scm (comment): Use it in new template.
	* dzn/templates/dzn/source@root: Use it.
	* dzn/templates/dzn/comment@comment: New template file.

	ast: Cleanup parse-tree->ast, preserve some comments.
	* dzn/parse/ast.scm (parse-tree->ast)[helper]: Split inner-define
	into...
	[strip,tree->ast>]: ...these.  Preserve some comments.

	test: parse_peg_locations: Add action, function.
	* test/all/parse_peg_locations/ihello.dzn (ihello): Add "world".
	* test/all/parse_peg_locations/parse_peg_locations.dzn (hello): Use it.
	Add function.
	* test/all/parse_peg_locations/baseline/parse_peg_locations: Update
	baseline.

	test: parse_locations: Add action, function.
	* test/all/parse_locations/ihello.dzn (ihello): Add "world".
	* test/all/parse_locations/parse_locations.dzn (hello): Use it.  Add
	function.
	* test/all/parse_locations/baseline/parse_locations: Update baseline.

	test: stress_comment: Identify all individual comments.
	* test/all/stress_comment/stress_comment.dzn: Make all comments unique.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add comment_traceability.
	Not all comments reach the parse tree, until then mark as XFAIL.

	* test/all/comment_traceability/comment_traceability.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS, XFAIL_TESTS): Add it.
	* test/all/comment_traceability/run: New script.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Preserve comments in AST.
	* dzn/goops.scm (<locationed>)[comment]: New field.
	* dzn/parse/ast.scm (parse-tree->ast): Set it.
	* test/all/parse_locations/baseline/parse_locations,
	test/all/parse_peg_locations/baseline/parse_peg_locations: Update
	baseline.

	peg: Preserve newlines between subsequent line-comments.
	* dzn/parse/peg.scm (peg-line): Add newline to line comment, except when
	encountering EOF.

	parse: In --debug mode, output unserialized AST.
	* dzn/commands/parse.scm (main): When debug?, use ast:pretty-print
	instead of pretty-printing serialized ast.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Cleanup: Remove obsolete root field from <import>.
	This is a follow-up to commit
	    d22e193b13ce8aacb05bcb43636bced937ff1e43
	    goops: Cleanup: Remove obsolete root field from <import>.

	* dzn/parse/ast.scm (parse-tree->ast): Remove setting for root for
	<import-node>.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Remove obsolete template.
	* dzn/templates/code.scm (version-assert): Remove template definition.
	* dzn/templates/c++/source@root: Remove its usage.
	* dzn/templates/c++/version-assert@ast: Remove template.

	wfc: Deprecate dzn.async.
	* dzn/goops.scm (<message>): New class.
	(<error>, <info>): Inherit from it.
	(<warning>): New class>
	* dzn/parse.scm (parse:handle-exceptions): Update caller.
	* dzn/wfc.scm (wfc:report-error): Rename to...
	(wfc:report-message): ...this.
	(ast:wfc): Cater for warnings.
	(wfc-warning): New function.
	(wfc<port>): Remove async TODO, create deprecation <warning> instead.
	test/all/async_provides/baseline/simulate/async_provides.stderr,
	test/all/compliance_async/baseline/simulate/compliance_async.stderr,
	test/all/compliance_async/baseline/verify/compliance_async.stderr,
	test/all/compliance_blocking_async_race/baseline/simulate/compliance_blocking_async_race.stderr,
	test/all/compliance_blocking_async_race/baseline/verify/compliance_blocking_async_race.stderr,
	test/all/determinism_async/baseline/simulate/determinism_async.stderr,
	test/all/determinism_async/baseline/verify/determinism_async.stderr,
	test/all/illegal_async_req/baseline/simulate/illegal_async_req.stderr,
	test/all/illegal_async_req/baseline/verify/illegal_async_req.stderr,
	test/all/livelock_async/baseline/simulate/livelock_async.stderr,
	test/all/livelock_async/baseline/verify/livelock_async.stderr,
	test/all/livelock_async_cancel/baseline/simulate/livelock_async_cancel.stderr,
	test/all/livelock_async_cancel/baseline/verify/livelock_async_cancel.stderr,
	test/all/livelock_async_choice/baseline/simulate/livelock_async_choice.stderr,
	test/all/livelock_async_choice/baseline/verify/livelock_async_choice.stderr:
	Update baseline.

	test: Allow chatter on standard error in absence of simulate baseline.
	* test/dzn/dzn.scm (run-simulate-trace): Do not fail when there is error
	output.

	test: Add defer_twice_noisy.
	* test/all/defer_twice/defer_twice_noisy.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add defer_twice.
	* test/all/defer_twice/defer_twice.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Keep <defer> in lts.
	* test/dzn/dzn.scm (run-lts): Remove <defer> from taus.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Allow <defer> on trail.
	Using <defer> on the trail is not necessary for correctly consuming a
	strict trace, but for interactive use it is necessary to steer the
	execution.

	* dzn/simulate.scm (check-provides-compliance): Cater for "<defer>" event.
	* dzn/vm/run.scm (run-defer-event): Do not add "<defer>" event to trail.
	* dzn/vm/util.scm (string->trail): Do not filter "<defer>" from trail.
	(defer-labels): New method.
	(label?): Use it.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Always output <defer> on trace, trail.
	* dzn/vm/report.scm (pc-event?<defer-qout>): Change to #t.
	(pc-arrow?<defer-qout>, pc->arrow<defer-qout>): New methods.
	* test/all/compliance_defer/baseline/simulate/compliance_defer,
	test/all/compliance_failures_defer/baseline/simulate/compliance_failures_defer,
	test/all/defer_queuefull/baseline/simulate/defer_queuefull: Update baseline.
	* test/dzn/dzn.scm (run-simulate-trace): Do not filter-out <defer> from input.

	trace: Cater for <defer>.
	* dzn/trace.scm (steps->trail): Keep <defer> on the trail.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_nested.
	* test/all/defer_nested: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add defer_shadow.
	* test/all/defer_shadow/defer_shadow.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add defer_double.
	* test/all/defer_double/defer_double.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	config: cs: Support defer.
	* dzn/config.scm.in (%feature-alist): Add "cs" to "defer".

	cs: Implement defer.
	* dzn/templates/cs/capture-member-value@capture-variable,
	dzn/templates/cs/capture-member@capture-variable,
	dzn/templates/cs/default-true@defer,
	dzn/templates/cs/defer-condition@defer,
	dzn/templates/cs/member-equality@capture-variable,
	dzn/templates/cs/statement@defer: New templates.
	* runtime/cs/dzn/container.cs (perform): Skip "<defer>".
	(run): Flush on "<defer>".
	* runtime/cs/dzn/pump.cs (pump.defer, pump.prune_deferred): New
	functions.
	(pump.deferred): New member variable.
	(pump.run)[worker]: Also service deffered queue.
	(pump.defer, pump.deferred): New methods.
	* runtime/cs/dzn/runtime.cs (Runtime.defer): Rename to...
	(Runtime.enqueue): ...this.
	(Runtime.call_in, Runtime.calL_out): Call pump.prune_deferred.

	cs: pump: Reduce diff with c++.
	* runtime/cs/dzn/runtime.cs (Runtime.coroutine_id): Move to...
	* runtime/cs/dzn/pump.cs (pump.coroutine_id): ...here.
	* dzn/templates/cs/flush@trigger: Update accordingly.

	config: scheme: Support defer.
	* dzn/config.scm.in (%feature-alist): Add "scheme" to "defer".

	scheme: Implement defer.
	* dzn/code/scheme.scm (scheme:use-module): Include pump when using
	defer.
	* dzn/templates/scheme/capture-grammar,
	dzn/templates/scheme/capture-member@variable,
	dzn/templates/scheme/capture-member-value@variable,
	dzn/templates/scheme/capture-prefix,
	dzn/templates/scheme/defer-condition@component,
	dzn/templates/scheme/member-equality@variable,
	dzn/templates/scheme/statement@defer: New templates.
	* dzn/templates/scheme/main@component (fill-event-alist): Cater for
	<defer> event.
	* runtime/scheme/dznpump.scm (<dzn:pump>)[deferred]: Add field.
	(<deferred>): New class.
	* runtime/scheme/dznpump.scm (dzn:pump): Process deferred.
	(flush-defer): New method.
	(dzn:finalize): Use it.
	(dzn:defer, dzn:run-defer): New methods.
	(dzn:prune-deferred): New method.
	* runtime/scheme/dznruntime.scm (dzn:prune-deferered): Use it
	in new method.
	(call-in, call-out): Use it.
	(defer): Rename to...
	(enqueue): ...this.
	(call-out): Update caller.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Add locals to defer statement.
	* dzn/vm/run.scm (run-defer-event): Update variables from defer-pc to
	include locals.
	* dzn/vm/step.scm (statement-continuation): Pop them at <defer-qout>.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Add locals to defer capture.
	* dzn/code.scm (code:capture-local): New method.
	* dzn/templates/code.scm (capture-local): Use it in new template.
	* dzn/templates/c++/statement@defer: Use it to capture locals.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Fix pruning of deferred queue.
	defer_skip must remove all deferred statements.

	* dzn/templates/makreel/model@component (prune_deferred): New map, eqn.
	(defer_queue): Use it.
	* dzn/templates/makreel/proc@defer-end: Add missing defer_skip before
	behavior end.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Add locals to defer statement.
	* dzn/code/makreel.scm (makreel:process-index): Remove unused overload,
	(makreel:locals-): Extend for defer.
	* dzn/templates/makreel.scm (defer-locals-sort),
	(defer-locals): New template declarations,
	(defer-assignment): Remove obsolete template declaration.
	* dzn/templates/makreel/defer-assignment@assign: Remove.
	* dzn/templates/makreel/defer-locals-sort@defer,
	* dzn/templates/makreel/defer-locals@defer: New template definitions.
	* dzn/templates/makreel/defer-qout@defer: Pass locals.
	* dzn/templates/makreel/defer-skip@the-end: Rename accessor.
	* dzn/templates/makreel/model@component (State): New sort, rename
	accessor, pass locals.
	* dzn/templates/makreel/proc@defer: Rename accessor, pass locals.
	* dzn/templates/makreel/semantics-async-defer-flush@ast,
	* dzn/templates/makreel/semantics-async-defer@ast,
	* dzn/templates/makreel/semantics-blocked-rtc-defer@ast,
	* dzn/templates/makreel/semantics-provides-blocked-defer@ast,
	* dzn/templates/makreel/semantics-provides-blocking-defer@ast,
	* dzn/templates/makreel/semantics-provides-skip-blocked-defer@ast: Pass locals.
	* dzn/lts.scm (parse-label): Parse and ignore locals.

	doc: Document defer.
	* doc/dezyne.texi (Keywords): Add defer.
	(Async Ports): Deprecate, remove use of defer identifier.
	(Component On): Extend grammar.
	(Component Imperative Statements): Add defer.
	(Component Defer): Add defer section.
	* doc/examples/defer-cancel.dzn,
	* doc/examples/defer.dzn: New example.
	* doc/images/defer-cancel.png,
	* doc/images/defer.png: New state diagram image.

	test: Add compiance_failures_defer.
	* test/all/compliance_failures_defer/compliance_failures_defer.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* test/all/compliance_failures_defer/trace: Add trace.
	* test/all/compliance_failures_defer/baseline/simulate/compliance_failures_defer,
	test/all/compliance_failures_defer/baseline/simulate/compliance_failures_defer.stderr,
	test/all/compliance_failures_defer/baseline/verify/compliance_failures_defer,
	test/all/compliance_failures_defer/baseline/verify/compliance_failures_defer.stderr:
	Add baseline.

	test: Add compliance_defer.
	* test/all/compliance_defer/compliance_defer.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* test/all/compliance_defer/baseline/verify/compliance_defer,
	* test/all/compliance_defer/baseline/verify/compliance_defer.stderr: Add baseline.

	test: Add defer_loop.
	* test/all/defer_loop: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_queuefull.
	This test was derived from illegal_async_req.

	* test/all/defer_queuefull: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_blocking.
	This test was derived from async_blocking.

	* test/all/defer_blocking: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_cancel_call.
	* test/all/defer_cancel_call: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add defer_collateral_blocking.
	* test/all/defer_collateral_blocking: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add defer_if.
	* test/all/defer_if: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add defer_cruel.
	* test/all/defer_cruel: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add defer_cancel.
	* test/all/defer_cancel: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add hello_defer.
	* test/all/hello_defer: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	test: Implement defer.
	Throughout: Prefer "cute" over "cut".

	* test/dzn/dzn.scm (filter-<defer>): New function.
	(run-execute): Use it here.
	(run-simulate-trace): And here.
	(run-lts): Ignore <defer-qout> when ltscompare-ing.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	config: Add feature "defer".
	* dzn/config.scm.in (%feature-alist): Add "defer".
	* test/dzn/dzn.scm (features): Check for it.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	explore: Implement defer.
	* dzn/vm/goops.scm (<defer-qout>): New statement.
	* dzn/vm/util.scm (pc->string): Add #:defer queue and <defer>,
	<defer-qout> statement locatations.
	* dzn/vm/step.scm (step<program-counter><defer-qout>): New method.
	(step<program-counter><reply>): Robustify against missing rtc-trigger.
	(continuation<program-counter><statement>): Cater for <defer-qout>.
	* dzn/vm/run.scm (run-defer-event): Set <defer-qout> as next statement.
	* dzn/vm/report.scm (pc-event?<program-counter><defer-qout>,
	pc->event<program-counter><defer-qout>): New specializations.
	* dzn/explore.scm (run-to-completion**): Cater for 'defer event.
	(pc->rtc-lts)[run-label]: Run run-flush on defer
	traces.  Add 'defer to labels.
	[run-labels]: Prune defer queue after each run

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Implement defer.
	* dzn/vm/goops.scm (<program-counter>)[defer,running-defer?]: New fields.
	(write): Print defer queue.
	* dzn/vm/util.scm  (block): Update #:defer.
	(blocked-on-boundary-switch-context, collateral-block): Reset #:running-defer?
	(defer-event?, prune-defer): New methods.
	* dzn/vm/run.scm (run-defer-event): New method.
	(run-to-completion*): Use it to service defer queue.
	(defer-run-to-completion-rtc): New method.
	(run-to-completion*-context-switch): Use it to continue and flush after
	defer.
	(run-to-completion*-context-switch): New method.
	* dzn/vm/step.scm (step<program-counter><defer>): New method.
	(step<program-counter><reply>): Robustify against missing rtc-trigger.
	(continuation<program-counter><statement>): Cater for defer.
	(statement-continuation): Likewise.
	* dzn/simulate.scm (check-provides-compliance+): Do not skip for return
	event.
	(run-sut): Prune defer before each event.  Flush defer queue at end of
	trail.
	(end-report): For failures, use PCs for last TRACES if available and
	cater for defer queue.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Implement defer.
	* dzn/templates/code.scm (capture-member, member-equality, default-true,
	defer-condition, member): New template definitions.
	* dzn/templates/c++/capture-grammar,
	dzn/templates/c++/capture-member-value@variable,
	dzn/templates/c++/capture-member@variable,
	dzn/templates/c++/default-true@defer,
	dzn/templates/c++/defer-condition@defer,
	dzn/templates/c++/member-equality@variable,
	dzn/templates/c++/statement@defer,
	dzn/templates/dzn/defer@statement: Use them in new templates.
	* runtime/c++/runtime.cc (runtime::defer): Rename to...
	(runtime::enqueue): ..this.
	* runtime/c++/dzn/runtime.hh: Likewise for declaration.
	* runtime/c++/pump.cc (dzn::defer, dzn::prune_deferred): New functions.
	* runtime/c++/dzn/runtime.hh (dzn::defer, dzn::prune_deferred): Declare them.
	(runtime::call_helper, runtime::call_out): Call prune_deferred.
	* runtime/c++/dzn/pump.hh (pump::deferred): New member.
	* runtime/c++/pump.cc (pump::operator ()): Service deferred queue.
	(pump::defer, pump::prune_deferred): New member functions.
	* runtime/c++/pump.hh (pump::defer, pump::prune_deferred): Declare them.

	verify: Implement defer.
	* dzn/templates/makreel/model@component (component_semantics): Expose
	defer-qout event.
	* dzn/lts.scm (parse-label): Convert defer-qout to <defer-qout>.
	* dzn/verify/pipeline.scm (compliance-taus): Ignore <defer-qout> when ltscompare-ing.

	makreel: Implement defer.
	* test/all/illegal_external_nonsynchronous: Update baseline.
	* dzn/templates/makreel.scm (component-behavior-rename
	semantics-requires-flush): Remove template declaration.
	component-behavior-allow-provides, component-behavior-allow-requires,
	component-behavior-rename-requires, defer-semantics, defer-qout,
	provides-flush, requires-reply, defer-assignment,
	defer-skip, state-vector, state-member, construct-state-vector,
	state-var, semantics-main, semantics-async-defer,
	semantics-async-defer-flush, semantics-async-requires-flush,
	semantics-provides-blocking-defer,
	semantics-provides-skip-blocked-defer, semantics-provides-blocked-defer,
	semantics-blocked-rtc-defer, semantics-provides-action,
	semantics-requires-action, semantics-requires-reply): New template
	declarations.
	* dzn/templates/makreel/semantics-requires-flush@port: Remove.
	dzn/templates/dzn/statement@defer-end,
	dzn/templates/dzn/statement@defer,
	dzn/templates/makreel/component-behavior-allow-provides@port,
	dzn/templates/makreel/component-behavior-allow-requires@port,
	dzn/templates/makreel/construct-state-vector@behavior,
	dzn/templates/makreel/defer-qout@defer,
	dzn/templates/makreel/defer-semantics@port,
	dzn/templates/makreel/defer-skip@the-end,
	dzn/templates/makreel/proc@defer-end,
	dzn/templates/makreel/proc@defer,
	dzn/templates/makreel/provides-flush@action,
	dzn/templates/makreel/requires-reply@action,
	dzn/templates/makreel/semantics-async-defer-flush@ast,
	dzn/templates/makreel/semantics-async-defer@ast,
	dzn/templates/makreel/semantics-async-requires-flush@port,
	dzn/templates/makreel/semantics-blocked-rtc-defer@ast,
	dzn/templates/makreel/semantics-main@ast,
	dzn/templates/makreel/semantics-provides-action@port,
	dzn/templates/makreel/semantics-provides-blocked-defer@ast,
	dzn/templates/makreel/semantics-provides-blocking-defer@ast,
	dzn/templates/makreel/semantics-provides-skip-blocked-defer@ast,
	dzn/templates/makreel/semantics-requires-action@port,
	dzn/templates/makreel/semantics-requires-reply@port,
	dzn/templates/makreel/state-member@variable,
	dzn/templates/makreel/state-var@variable,
	dzn/templates/makreel/state-vector@behavior,
	dzn/templates/makreel/statement-process-identifier@ast: New template
	files.
	* dzn/ast.scm (ast:provides?): New function.
	* dzn/code/makreel.scm (makreel:behavior->defer-qout): New accessor.
	(makreel:proc): New overload for <defer>.
	(makreel:locals-): Skip recursion at <defer>.
	(variables-in-scope makreel:continuation, makreel:stack?,
	makreel:stack-empty?, makreel:type-check): Extend for defer.
	(makreel:om): Add defer-end to AST.
	* dzn/goops.scm (<defer-end>): Define defer-end.
	* dzn/normalize.scm (add-defer-end): Implement AST transform..
	(add-explicit-temporaries): Extend for defer.
	* dzn/templates/makreel/model@component: Add defer_queue to
	component_behavior. Rename semantics to semantics_main, add defer and
	comm, allow and hide.
	* dzn/templates/makreel/semantics-rename-requires@port: Rename defer actions.
	dzn/templates/makreel/proc@behavior: Add defer-qout.
	dzn/templates/makreel/proc@the-end: Add defer-skip.
	* dzn/templates/makreel/semantics-comm-requires@port: Synchronize
	action and reply.
	* dzn/templates/makreel/semantics-allow-requires@port: Tick reply in allow.
	* dzn/templates/makreel/semantics-provides-skip-blocked-replies@port:
	Extend for defer.
	* dzn/templates/makreel/semantics-provides-unblocked-replies@port,
	dzn/templates/makreel/semantics-requires@port: Use new semantics-main.
	* dzn/templates/makreel/semantics-provides@port: Add provides actions.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	complete: Support defer.
	* dzn/parse/complete.scm (complete:statements): Add "defer".
	* test/dzn/language.scm ("component5": "component6": "component6a":
	"component6b": "component10": "component10a": "import statemement":
	"component-incomplete-port on": "component-incomplete-action on"):
	Update baseline.

	tree: Support defer.
	* dzn/parse/tree.scm (tree:imperative): Add defer.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Support defer.
	* dzn/parse/peg.scm (peg:parse): Parse "defer".
	* dzn/goops.scm (<defer>): New class.
	* dzn/parse/ast.scm (parse-tree->ast): Use it for 'defer.
	* dzn/templates/dzn/statement@defer: New template.
	* dzn/code/dzn.scm (dzn:expand-statement): Support it.
	* dzn/ast.scm (ast:declaration*<defer>): New specialization.
	(.event.direction): Cater for <defer>.

	peg: Break long lines.
	* dzn/parse/ast.scm (parse-tree->ast): Break long lines.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	test: Remove use of defer identifier.
	In preparation of introducing the defer keyword ...

	* test/all/async_cancel/async_cancel.dzn,
	test/all/async_provides/async_provides.dzn,
	test/all/async_types/async_types.dzn,
	test/all/async_types/interference.dzn,
	test/all/hello_async/hello_async.dzn: Rename defer to async.

2022-07-02  Rutger van Beusekom  <rutger@dezyne.org>

	test: hello_async: Canonicalize.
	* test/all/hello_async/hello_async.dzn: Use canonical names.

	test: Prevent c++ -Wunused-variable warning.
	* test/all/data_full/data_full.dzn (data_full_): Rewrite to avoid
	self-assignment and unused-variable warnings.

	test: Prevent c++ -Wself-assignment warning.
	* test/all/hello_nondet_reply/hello_nondet_reply.dzn: Remove self-assign.

	c++: Reduce c++ compiler warnings at -Wextra.
	* dzn/templates/c++/meta@component,
	dzn/templates/c++/model@system: Move meta pointer vector
	initialisation from initializer list to constructor body for systems.
	* dzn/templates/c++/statement@skip: Add newline before ';' to silence
	skip statement warning in if-then.
	* runtime/c++/dzn/pump.hh (struct deadline): Add parentheses around &&.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build-aux/copyright-header.scm: Update author-unique.
	* build-aux/copyright-header.scm (author-unique): Fix typo.  Cater
	for (janneke), (regtur).

	explore: Move resetting of PC to run-label.
	* dzn/explore.scm (pc->rtc-lts): Move #:collateral-instance reset to...
	[run-label]: ...this inner define.

	test: collateral_blocking_multiple_provides0: Canonicalize.
	* test/all/collateral_blocking_multiple_provides0/collateral_blocking_multiple_provides0.dzn
	(mp): Rename to...
	(top): ..this
	(b): Rename to...
	(bottom): ..this

	makreel: Remove dead templates.
	* dzn/templates/makreel.scm (semantics-provides-blocked-qmt,
	semantics-provides-blocked-qmt-async): Remove template definitions.
	* dzn/templates/makreel/semantics-provides-blocked-qmt-async@port,
	dzn/templates/makreel/semantics-provides-blocked-qmt@port: Remove
	templates.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Run javascript and scheme tests using interpreter.
	This removes the need for a custom workaround when building in a (GNU
	Guix) container.  In a development environment the "test" scripts can
	still be executed directly.

	* configure.ac (NODEJS): Rename to...
	(NODE): ...this.
	* build-aux/pre-inst-env.in (GUILE, NODE): New exported variables.
	* test/lib/test.scm: New template script.
	* test/lib/local.mk (EXTRA_DIST): Add it.
	* test/lib/build.scheme.make ($(OUT)/test): Use it to create test
	executable.
	(GUILE, TEST_SCRIPT): Remove.
	* test/lib/build.javascript.make ($(OUT)/test): Substitute configured
	value of NODE.

2022-07-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Compile and install scheme runtime.
	* runtime/local.mk: Move scm files to...
	* runtime/scheme/dzn/local.mk: ...this new file.  Make scm files
	compilable and installable.
	* Makefile.am: Include it.
	(GUILEC_FLAGS): Add runtime/scheme to load path.
	(install-data-hook): Update version annotation for scheme.
	* build-aux/pre-inst-env.in (GUILE_LOAD_COMPILED_PATH): Add toplevel
	runtime/scheme.
	(GUILE_LOAD_PATH): Likewise.

2022-06-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	config: scheme: Support collateral.
	* dzn/config.scm.in (%feature-alist): Add "scheme" to "collateral.

2022-06-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_race_async: Support scheme.
	* test/all/blocking_race_async/main.scm: New file.

	test: collateral_blocking_release: Support scheme.
	* test/all/collateral_blocking_release/main.scm: New file.

	test: collateral_blocking_double_release: Support scheme.
	* test/all/collateral_blocking_double_release/main.scm: New file.

2022-06-22  Rutger van Beusekom  <rutger@dezyne.org>

	test: c++: collateral_blocking_multiple_provides0.
	* test/all/collateral_blocking_multiple_provides0/main.cc (main): Fix
	port initialization and remove custom tracing.

2022-06-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Support collateral block.
	* runtime/scheme/dzn/runtime.scm (%dzn:id): New parameter.
	(dzn:handle): Use it to set handling?.
	(<dzn:runtime-pump>): New class.
	(dzn:blocked?, dzn:collateral-block): New methods.
	(call-in): Use them to support collateral-block.
	(call-out): fix order of logging and call.
	* runtime/scheme/dzn/pump.scm (<dzn:pump>)[collateral, id]: New fields.
	(<coroutine>): New class.
	(write<coroutine>): New method.
	(next-id, set-id, enqueue!): New methods.
	(%debug): Prefix with %dzn-id.
	(<dzn:pump>): Inherit from <dzn:runtime:pump>.
	(dzn:pump): Parameterize %dzn:id.  Releaze everything in a loop.
	[worker]: Add optional component parameter.  Handle collateral-block
	prompt.  Update to use enqueue! and <coroutine>.
	(dzn:block): When continuing, reset .blocked instead of .released.
	(dzn:release): Use enqueue! and <coroutine>.
	(dzn:blocked?, dzn:collateral-block): New methods.

2022-06-28  Rutger van Beusekom  <rutger@dezyne.org>

	scheme: Cleanup and fix logging.
	* dzn/templates/scheme/main@component (consume-synchronous-out-events):
	Refactor.
	(log-in, log-out, log-valued): Take port parameter.  Use dzn:trace
	functions instead of custom tracing.
	* dzn/templates/scheme/main-port-connect-in-valued@trigger,
	dzn/templates/scheme/main-port-connect-in-void@trigger,
	dzn/templates/scheme/main-port-connect-out@trigger: Update caller.

2022-06-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_namespace_foreign: Update scheme.
	* test/all/hello_namespace_foreign/scheme/library/hello.scm: Update.

2022-06-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	runtime javascript: Remove <external> qout tracing.
	* runtime/javascript/dzn/runtime.js (runtime.trace_qin): For external
	qin use trace_out.
	(runtime.trace_qout): Suppress for external qout.

	runtime c: Remove <external> qout tracing.
	* runtime/c/runtime.c (runtime_trace_qin): For external
	qin use runtime_trace_out.
	(runtime_trace_qout): Suppress for external qout.

	runtime cs: Remove <external> qout tracing.
	* runtime/cs/dzn/runtime.cs (Runtime.traceQin): For external qin use
	traceOut.
	(Runtime.traceQout): Suppress for external qout.

2022-06-28  Rutger van Beusekom  <rutger@dezyne.org>

	runtime scheme: Remove <external> qout tracing.
	* runtime/scheme/dzn/runtime.scm (dzn:trace-qin): For external qin, use
	regular trace-out.
	(dzn:trace_qout): Suppress for external qout.

	runtime c++: Remove <external> qout tracing.
	* runtime/c++/runtime.cc (runtime::trace_qin): For external qin use
	trace_out.
	(runtime::trace_qout): Suppress for external qout.

2022-06-22  Rutger van Beusekom  <rutger@dezyne.org>

	test: collateral_blocking_shell2: Fix main and trace.
	* test/all/collateral_blocking_shell2/main.cc (main): Fix port
	initialialization and remove custom tracing.
	* test/all/collateral_blocking_shell2/main.cs: Likewise.
	* test/all/collateral_blocking_shell2/trace: Update accordingly.

2022-06-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	runtime cs: Fix qin tracing.
	* runtime/cs/dzn/runtime.cc (Runtime.traceQin): Remove switch on
	<external> and mixing of port names.

2022-06-22  Rutger van Beusekom  <rutger@dezyne.org>

	runtime c++: Fix qin tracing.
	* runtime/c++/runtime.cc (runtime::trace_qin): Remove switch on
	<external> and mixing of port names.

2022-06-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Fix external-qin code -> event.
	* dzn/trace.scm (step->event): Fix external-qin

2022-06-22  Rutger van Beusekom  <rutger@dezyne.org>

	cs: Remove component stack.
	* runtime/cs/dzn/runtime.cs (Runtime.State.blocked): New member
	variable.
	(Runtime.component_stack, blocked_port_component_stack): Remove.
	(Runtime.Action, Runtime.call_in, Runtime.call_out): Remove component
	stack.
	* runtime/cs/dzn/pump.cc (pump.collateral_block): Use runtime.blocked
	instead of component stack to lookup blocked port.
	(pump.collateral_release): Remove component stack.
	(pump.block): Likewise.  Set, and reset blocked.
	(pump.release): Remove component stack.

2022-06-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Remove component stack.
	* runtime/c++/dzn/runtime.hh (runtime::state::blocked): New member
	variable.
	(runtime::component_stack, blocked_port_component_stack): Remove.
	(runtime::blocked): New member.
	(call_helper, call_out): Remove component stack
	* runtime/c++/runtime.cc (runtime::blocked): Implement it.
	* runtime/c++/pump.cc (pump::collateral_block): Use runtime::blocked
	instead of component stack to lookup blocked port.
	(pump::collateral_release): Remove component stack.
	(pump::block): Likewise.  Set, and reset blocked.
	(pump::release): Remove component stack.

2022-06-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add bool_expressions.
	* test/all/bool_expressions: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-06-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Add parentheses around <and> and <or> for code.
	* dzn/normalize.scm (normalize:event): Parethesise <and> and <or> to
	avoid compiler warnings.

2022-06-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Remove redundant parentheses from expressions.
	* dzn/normalize.scm (group-expressions): New function.
	triples:group-expressions): Use it in new function.
	(normalize:state): Use it.
	(normalize:event): Likewise.
	* dzn/templates/c++/expression@expressions,
	dzn/templates/javascript/expression@and,
	dzn/templates/javascript/expression@greater,
	dzn/templates/javascript/expression@greater-equal,
	dzn/templates/javascript/expression@less,
	dzn/templates/javascript/expression@less,
	dzn/templates/javascript/expression@less-equal,
	dzn/templates/javascript/expression@less-equal,
	dzn/templates/javascript/expression@minus,
	dzn/templates/javascript/expression@not,
	dzn/templates/javascript/expression@not-equal,
	dzn/templates/javascript/expression@or,
	dzn/templates/javascript/expression@plus,
	dzn/templates/makreel/expression@expressions: Remove parentheses.

	normalize: Cleanup and simplify expressions.
	* dzn/goops.scm (<literal>, <var>
	<variable>,<enum-literal>,<formal>,<action>,<action-or-call>,<call>,<argument>):
	Inherit from <unary>.
	* dzn/normalize.scm (group-expression, and-expressions, or-expressions):
	New methods.
	(guard-not-or): Rename to...
	(not-or-guards): ...this and rewrite.
	(combine-not): Rename to...
	(and-not-guards): ...this and rewrite.
	(combine): Remove.
	(add-illegals): Update caller.
	(triples:->triples): Add triples:simplify-guard.
	(simplify): Rename to...
	(simplify-expression): ...this and extend functionality.
	(simplify-toplevel-expression, simplify-guard): New methods.
	* dzn/normalize.scm (triples:simplify-guard): Update caller.
	(remove-otherwise): Update caller.
	* dzn/vm/normalize.scm (annotate-otherwise): Update caller.
	* dzn/ast.scm (ast:equal?<unary<unary>): New method.

	code: Dump normalized root with -dd.
	* dzn/code.scm (code:om): When debugity > 1, print root.
	* dzn/commands/verify.scm (main): Move debug printing of root
	* dzn/code/makreel.scm (makreel:om): ...here.

	c: Expression template cleanups.
	* dzn/templates/c++/formal-grammar,
	dzn/templates/c++/formal-grammar: Symlink to ../dzn.
	* dzn/templates/c++/expression-expand@expression,
	dzn/templates/cs/expression@field-test,
	dzn/templates/cs/expression@variable: Symlink to ../c++.

2022-06-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	javascript: Expression template cleanups.
	* dzn/templates/c++/formal-grammar,
	dzn/templates/scheme/expand-statement@statement,
	dzn/templates/c++/expression-expand@expression,
	dzn/templates/javascript/expression@and,
	dzn/templates/javascript/expression@argument,
	dzn/templates/javascript/expression@equal,
	dzn/templates/javascript/expression@greater,
	dzn/templates/javascript/expression@greater-equal,
	dzn/templates/javascript/expression@less,
	dzn/templates/javascript/expression@less-equal,
	dzn/templates/scheme/expression@literal,
	dzn/templates/javascript/expression@minus,
	dzn/templates/javascript/expression@not,
	dzn/templates/javascript/expression@not-equal,
	dzn/templates/javascript/expression@or,
	dzn/templates/javascript/expression@plus,
	dzn/templates/scheme/expression@var,
	dzn/templates/cs/expression@void,
	dzn/templates/c++/formal-grammar,
	dzn/templates/c++/formal-grammar,
	dzn/templates/c++/expression-expand@expression,
	dzn/templates/c++/expression-expand@expression,
	dzn/templates/cs/type-infix: Symlink to ../dzn.

	scheme: Expression template cleanups.
	* dzn/templates/scheme/expand-statement@statement,
	dzn/templates/c++/expression-expand@expression,
	dzn/templates/scheme/expression@literal,
	dzn/templates/scheme/expression@var: Symlink to ../dzn.

	cs: Expression template cleanups.
	* dzn/templates/cs/expression-expand@void,
	dzn/templates/cs/expression@void,
	dzn/templates/c++/expression-expand@expression,
	dzn/templates/c++/expression-expand@expression,
	dzn/templates/cs/type-infix: Symlink to ../dzn.
	* dzn/templates/cs/expression@data,
	dzn/templates/cs/expression@field-test,
	dzn/templates/cs/expression@formal,
	dzn/templates/cs/expression@variable: Symlink to ../c++.
	dzn/templates/cs/variable-name@ast: Add newline.

	c++: Expression template cleanups.
	* dzn/templates/c++/expression-expand@expression,
	dzn/templates/c++/formal-grammar,
	dzn/templates/c++/variable-name@formal: Symlink to ../dzn.
	* dzn/templates/c++/variable-name@argument,
	dzn/templates/c++/variable-name@formal,
	dzn/templates/c++/variable-name@formal-binding,
	dzn/templates/c++/variable-name@variable: Remove, replace with...
	* dzn/templates/c++/variable-name@ast: ...this new template.

2022-06-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	dzn: Remove redundant template overloads.
	* dzn/templates/dzn/variable-name@argument,
	dzn/templates/dzn/variable-name@formal,
	dzn/templates/dzn/variable-name@out-formal,
	dzn/templates/dzn/variable-name@variable: Remove, replace with...
	* dzn/templates/c++/variable-name@ast: ...this new template.

2022-06-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_double_blocked_out: Remove obsolete handwritten mains.
	* test/all/collateral_double_blocked_out/main.cc,
	test/all/collateral_double_blocked_out/main.cs: Remove.

2022-06-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: async_shell: Remove obsolete handwritten mains.
	* test/all/async_shell/c++/main.cc,
	test/all/async_shell/cs/main.cs: Remove.

2022-06-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	runtime: cs: Refactor skip-block.
	* dzn/templates/cs/async-event-slot@trigger,
	dzn/templates/cs/event-slot@trigger,
	dzn/templates/cs/foreign-event-slot@trigger,
	dzn/templates/cs/foreign-valued-event-slot@trigger,
	dzn/templates/cs/valued-event-slot@trigger: Move resetting of
	skip_block...
	* runtime/cs/pump.cs (pump.block): ...here.

2022-06-10  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Refactor skip-block.
	* dzn/templates/c++/async-event-slot@trigger,
	dzn/templates/c++/event-slot@trigger,
	dzn/templates/c++/foreign-event-slot@trigger: Move resetting of
	skip_block...
	* runtime/c++/pump.cc (pump::block): ...here.

2022-06-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs container: Make all actions blocking in generated main.
	* runtime/cs/dzn/container.cs (single_threaded): Remove member.
	(match): Remove synchronization error.
	(perform): New method.
	(match_return): Remove.
	(trail_expect): Add synchonisation.
	(run): Check full trail by blocking and releasing actions.
	* dzn/ast.scm (ast:return-values<trigger>): New specialization.
	(ast:provides-in-void-triggers, ast:provides-in-valued-triggers,
	ast:requires-in-void-triggers): New methods.
	* dzn/makreel.scm (<port-pair>, .port.name, .other.name): Move to ...
	* dzn/code.scm (<port-pair>, .port.name, .other.name): ...here.
	* dzn/templates/code.scm (main-event-map-out
	main-event-map-void-provides-in, main-event-map-valued-provides-in,
	main-event-map-void-requires-in, main-event-map-valued-in): New
	templates.
	* dzn/templates/cs/main-event-map-flush@port,
	dzn/templates/cs/main-event-map-valued@trigger: Add match.
	* dzn/templates/cs/and-infix: New grammar.
	* dzn/templates/cs/main-event-map-in@trigger,
	dzn/templates/cs/main-event-map-out@trigger,
	dzn/templates/cs/main-event-map-valued-in@port-pair,
	dzn/templates/cs/main-event-map-valued-in@trigger,
	dzn/templates/cs/main-event-map-valued-provides-in@trigger,
	dzn/templates/cs/main-event-map-void-requires-in@trigger: New templates.
	* dzn/templates/cs/main-port-connect-in@trigger: Add block.
	* dzn/templates/cs/main@component: Use new templates here.
	* dzn/templates/cs/main-event-map-valued@trigger,
	dzn/templates/cs/main-event-map-valued@trigger,
	dzn/templates/cs/main-event-map-void@trigger,
	dzn/templates/cs/main-requires-port-name@port: Remove.
	* test/all/async_calling_context/cs/main.cs,
	test/all/async_shell/cs/main.cs,
	test/all/blocking_shell/cs/main.cs,
	test/all/calling_context/main.cs,
	test/all/shell_injected/cs/main.cs: Update accordingly.
	* test/all/blocking_binding/main.cc: Remove.

	cs: pump: Add pause, resume and flush.
	* runtime/cs/dzn/pump.cs (pump.paused): New member.
	(pump.pump): Initialize it.
	(pump.pause, pump.resume, pump.flush): New methods.

2022-06-13  Rutger van Beusekom  <rutger@dezyne.org>

	c++ container: Make all actions blocking in generated main.
	* runtime/c++/dzn/container.hh (single_threaded): Remove member.
	(match): Remove synchronization error.
	(perform): New method.
	(match_return): Remove.
	(trail_expect): Add synchonisation.
	(operator ()): Check full trail by blocking and releasing actions.
	* dzn/ast.scm (ast:return-values<trigger>): New specialization.
	(ast:provides-in-void-triggers, ast:provides-in-valued-triggers,
	ast:requires-in-void-triggers): New methods.
	* dzn/makreel.scm (<port-pair>, .port.name, .other.name): Move to ...
	* dzn/code.scm (<port-pair>, .port.name, .other.name): ...here.
	* dzn/templates/code.scm (main-event-map-out
	main-event-map-void-provides-in, main-event-map-valued-provides-in,
	main-event-map-void-requires-in, main-event-map-valued-in): New
	templates.
	* dzn/templates/c++/main-event-map-flush@port,
	dzn/templates/c++/main-event-map-valued@trigger: Add match.
	* dzn/templates/c++/and-infix: New grammar.
	* dzn/templates/c++/main-event-map-in@trigger,
	dzn/templates/c++/main-event-map-out@trigger,
	dzn/templates/c++/main-event-map-valued-in@port-pair,
	dzn/templates/c++/main-event-map-valued-in@trigger,
	dzn/templates/c++/main-event-map-valued-provides-in@trigger,
	dzn/templates/c++/main-event-map-void-requires-in@trigger: New templates.
	* dzn/templates/c++/main-port-connect-in@trigger: Add block.
	* dzn/templates/c++/main@component: Use new templates here.
	* dzn/templates/c++/main-event-map-valued@trigger,
	dzn/templates/c++/main-event-map-valued@trigger,
	dzn/templates/c++/main-event-map-void@trigger,
	dzn/templates/c++/main-requires-port-name@port: Remove.
	* test/all/async_calling_context/c++/main.cc,
	test/all/async_shell/c++/main.cc,
	test/all/blocking_shell/c++/main.cc: Update accordingly.
	* test/all/blocking_binding/main.cc,
	test/all/shell_injected/c++/main.cc: Remove.

2022-06-10  Rutger van Beusekom  <rutger@dezyne.org>

	c++: pump: Add pause, resume and flush.
	* runtime/c++/pump.cc (pump::pause, pump::resume, pump::flush): New
	methods.
	* runtime/c++/dzn/pump.hh (struct pump): Declare them.
	* runtime/c++/dzn/pump.hh (pump::paused): New member.
	* runtime/c++/pump.cc (pump::pump): Inialize it.

2022-06-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	templates: Update to provides, requires naming.
	Use provides, requires throughout for template names.

	* dzn/templates/c++-exception-wrappers/provided-port-event-wrappers@port: Rename to...
	* dzn/templates/c++-exception-wrappers/provides-port-event-wrappers@port: ...this
	* dzn/templates/c++-exception-wrappers/provided-port-in-event-wrapper@trigger: Rename to...
	* dzn/templates/c++-exception-wrappers/provides-port-in-event-wrapper@trigger: ...this.
	* dzn/templates/c++-exception-wrappers/provided-port-initializer@port: Rename to...
	* dzn/templates/c++-exception-wrappers/provides-port-initializer@port: ...this.
	* dzn/templates/c++-exception-wrappers/provided-port-out-event-wrapper@trigger: Rename to...
	* dzn/templates/c++-exception-wrappers/provides-port-out-event-wrapper@trigger: ...this.
	* dzn/templates/c++-exception-wrappers/required-port-event-wrappers@port: Rename to...
	* dzn/templates/c++-exception-wrappers/requires-port-event-wrappers@port: This.
	* dzn/templates/c++-exception-wrappers/required-port-in-event-wrapper@trigger: Rename to...
	* dzn/templates/c++-exception-wrappers/requires-port-in-event-wrapper@trigger: ...this.
	* dzn/templates/c++-exception-wrappers/required-port-initializer@port: Rename to...
	* dzn/templates/c++-exception-wrappers/requires-port-initializer@port: ...this.
	* dzn/templates/c++-exception-wrappers/required-port-out-event-wrapper@trigger: Rename to...
	* dzn/templates/c++-exception-wrappers/requires-port-out-event-wrapper@trigger: ...this.
	* dzn/templates/c++-exception-wrappers/valued-required-in-return@trigger: Rename to...
	* dzn/templates/c++-exception-wrappers/valued-requires-in-return@trigger: ...this.
	* dzn/templates/c++/bind-provided@end-point: Rename to...
	* dzn/templates/c++/bind-provides@end-point: ...this.
	* dzn/templates/c++/bind-required@end-point: Rename to...
	* dzn/templates/c++/bind-requires@end-point: ...this.
	* dzn/templates/c++/main-provided-port-init@port: Rename to...
	* dzn/templates/c++/main-provides-port-init@port: ...this.
	* dzn/templates/c++/main-required-port-init@port: Rename to...
	* dzn/templates/c++/main-requires-port-init@port: ...this.
	* dzn/templates/c++/main-required-port-name@port: Rename to...
	* dzn/templates/c++/main-requires-port-name@port: ...this.
	* dzn/templates/c++/provided-member-initializer@port: Rename to...
	* dzn/templates/c++/provides-member-initializer@port: ...this.
	* dzn/templates/c++/provided-port-declare@port: Rename to...
	* dzn/templates/c++/provides-port-declare@port: ...this.
	* dzn/templates/c++/provided-port-instance-declare@port: Rename to...
	* dzn/templates/c++/provides-port-instance-declare@port: ...this.
	* dzn/templates/c++/provided-port-reference-declare@port: Rename to...
	* dzn/templates/c++/provides-port-reference-declare@port: ...this.
	* dzn/templates/c++/provided-port-reference-initializer@port: Rename to...
	* dzn/templates/c++/provides-port-reference-initializer@port: ...this.
	* dzn/templates/c++/required-port-declare@port: Rename to...
	* dzn/templates/c++/requires-port-declare@port: ...this.
	* dzn/templates/c++/required-port-instance-declare@port: Rename to...
	* dzn/templates/c++/requires-port-instance-declare@port: ...this.
	* dzn/templates/c++/required-port-reference-declare@port: Rename to...
	* dzn/templates/c++/requires-port-reference-declare@port: ...this.
	* dzn/templates/c++/required-port-reference-initializer@port: Rename to...
	* dzn/templates/c++/requires-port-reference-initializer@port: ...this.
	* dzn/templates/c++/required-member-initializer@port: Rename to...
	* dzn/templates/c++/requires-member-initializer@port: ...this.
	* dzn/templates/c++/shell-provided-in@trigger: Rename to...
	* dzn/templates/c++/shell-provides-in@trigger: ...this.
	* dzn/templates/c++/shell-provided-meta-initializer@port: Rename to...
	* dzn/templates/c++/shell-provides-meta-initializer@port: ...this.
	* dzn/templates/c++/shell-provided-out@trigger: Rename to...
	* dzn/templates/c++/shell-provides-out@trigger: ...this.
	* dzn/templates/c++/shell-required-in@trigger: Rename to...
	* dzn/templates/c++/shell-requires-in@trigger: ...this.
	* dzn/templates/c++/shell-required-meta-initializer@port: Rename to...
	* dzn/templates/c++/shell-requires-meta-initializer@port: ...this.
	* dzn/templates/c++/shell-required-out@trigger: Rename to...
	* dzn/templates/c++/shell-requires-out@trigger: ...this.
	* dzn/templates/c/binding-provided@end-point: Rename to...
	* dzn/templates/c/binding-provides@end-point: ...this.
	* dzn/templates/c/binding-required@end-point: Rename to...
	* dzn/templates/c/binding-requires@end-point: ...this.
	* dzn/templates/c/port-initialization-provided@port: Rename to...
	* dzn/templates/c/port-initialization-provides@port: ...this.
	* dzn/templates/c/port-initialization-required@port: Rename to...
	* dzn/templates/c/port-initialization-requires@port: ...this.
	* dzn/templates/c/provided-event-tracing-initialization@port: Rename to...
	* dzn/templates/c/provides-event-tracing-initialization@port: ...this.
	* dzn/templates/c/provided-port-initialization@port: Rename to...
	* dzn/templates/c/provides-port-initialization@port: ...this.
	* dzn/templates/c/required-event-tracing-initialization@port: Rename to...
	* dzn/templates/c/requires-event-tracing-initialization@port: ...this.
	* dzn/templates/c/required-port-initialization@port: Rename to...
	* dzn/templates/c/requires-port-initialization@port: ...this.
	* dzn/templates/cs/bind-provided@end-point: Rename to...
	* dzn/templates/cs/bind-provides@end-point: ...this.
	* dzn/templates/cs/bind-required@end-point: Rename to...
	* dzn/templates/cs/bind-requires@end-point: ...this.
	* dzn/templates/cs/main-provided-port-init@port: Rename to...
	* dzn/templates/cs/main-provides-port-init@port: ...this.
	* dzn/templates/cs/main-required-port-init@port: Rename to...
	* dzn/templates/cs/main-requires-port-init@port: ...this.
	* dzn/templates/cs/main-required-port-name@port: Rename to...
	* dzn/templates/cs/main-requires-port-name@port: ...this.
	* dzn/templates/cs/provided-port-init@port: Rename to...
	* dzn/templates/cs/provides-port-init@port: ...this.
	* dzn/templates/cs/required-port-init@port: Rename to...
	* dzn/templates/cs/requires-port-init@port: ...this.
	* dzn/templates/cs/required-port-meta@port: Rename to...
	* dzn/templates/cs/requires-port-meta@port: ...this.
	* dzn/templates/cs/shell-provided-in@trigger: Rename to...
	* dzn/templates/cs/shell-provides-in@trigger: ...this.
	* dzn/templates/cs/shell-provided-meta-initializer@port: Rename to...
	* dzn/templates/cs/shell-provides-meta-initializer@port: ...this.
	* dzn/templates/cs/shell-provided-out@trigger: Rename to...
	* dzn/templates/cs/shell-provides-out@trigger: ...this.
	* dzn/templates/cs/shell-required-in@trigger: Rename to...
	* dzn/templates/cs/shell-requires-in@trigger: ...this.
	* dzn/templates/cs/shell-required-meta-initializer@port: Rename to...
	* dzn/templates/cs/shell-requires-meta-initializer@port: ...this.
	* dzn/templates/cs/shell-required-out@trigger: Rename to...
	* dzn/templates/cs/shell-requires-out@trigger: ...this.
	* dzn/templates/dzn/provided-port@port: Rename to...
	* dzn/templates/dzn/provides-port@port: ...this.
	* dzn/templates/dzn/required-port@port: Rename to...
	* dzn/templates/dzn/requires-port@port: ...this.
	* dzn/templates/javascript/bind-provided@end-point: Rename to...
	* dzn/templates/javascript/bind-provides@end-point: ...this.
	* dzn/templates/javascript/bind-required@end-point: Rename to...
	* dzn/templates/javascript/bind-requires@end-point: ...this.
	* dzn/templates/javascript/main-provided-flush-init@port: Rename to...
	* dzn/templates/javascript/main-provides-flush-init@port: ...this.
	* dzn/templates/javascript/main-provided-port-init@port: Rename to...
	* dzn/templates/javascript/main-provides-port-init@port: ...this.
	* dzn/templates/javascript/main-required-port-init@port: Rename to...
	* dzn/templates/javascript/main-requires-port-init@port: ...this.
	* dzn/templates/javascript/main-required-flush-init@port: Rename to...
	* dzn/templates/javascript/main-requires-flush-init@port: ...this.
	* dzn/templates/javascript/provided-member-initializer@port: Rename to...
	* dzn/templates/javascript/provides-member-initializer@port: ...this.
	* dzn/templates/javascript/required-member-initializer@port: Rename to...
	* dzn/templates/javascript/requires-member-initializer@port: ...this.
	* dzn/templates/scheme/bind-provided@end-point: Rename to...
	* dzn/templates/scheme/bind-provides@end-point: ...this.
	* dzn/templates/scheme/bind-required@end-point: Rename to...
	* dzn/templates/scheme/bind-requires@end-point: ...this.
	* dzn/templates/scheme/main-provided-flush-init@port: Rename to...
	* dzn/templates/scheme/main-provides-flush-init@port: ...this.
	* dzn/templates/scheme/main-provided-port-init@port: Rename to...
	* dzn/templates/scheme/main-provides-port-init@port: ...this.
	* dzn/templates/scheme/main-required-port-init@port: Rename to...
	* dzn/templates/scheme/main-requires-port-init@port: ...this.
	* dzn/templates/scheme/main-required-flush-init@port: Rename to...
	* dzn/templates/scheme/main-requires-flush-init@port: ...this.
	* dzn/templates/scheme/provided-member-initializer@port: Rename to...
	* dzn/templates/scheme/provides-member-initializer@port: ...this.
	* dzn/templates/scheme/provided-port-instance-declare@port: Rename to...
	* dzn/templates/scheme/provides-port-instance-declare@port: ...this.
	* dzn/templates/scheme/provided-port-reference-declare@port: Rename to...
	* dzn/templates/scheme/provides-port-reference-declare@port: ...this.
	* dzn/templates/scheme/provided-port-reference-initializer@port: Rename to...
	* dzn/templates/scheme/provides-port-reference-initializer@port: ...this.
	* dzn/templates/scheme/required-port-reference-declare@port: Rename to...
	* dzn/templates/scheme/requires-port-reference-declare@port: ...this.
	* dzn/templates/scheme/required-member-initializer@port: Rename to...
	* dzn/templates/scheme/requires-member-initializer@port: ...this.
	* dzn/templates/scheme/required-port-instance-declare@port: Rename to...
	* dzn/templates/scheme/requires-port-instance-declare@port: ...this.
	* dzn/templates/scheme/required-port-reference-initializer@port: Rename to...
	* dzn/templates/scheme/requires-port-reference-initializer@port: ...this.
	* dzn/code.scm,
	dzn/code/c.scm,
	dzn/templates/c++-exception-wrappers.scm,
	dzn/templates/c++-exception-wrappers/system-wrapper@system,
	dzn/templates/c++.scm,
	dzn/templates/c++/async-member-initializer@port,
	dzn/templates/c++/header-model@component,
	dzn/templates/c++/header-model@foreign,
	dzn/templates/c++/header-model@shell-system,
	dzn/templates/c++/header-model@system,
	dzn/templates/c++/main@component,
	dzn/templates/c++/model@component,
	dzn/templates/c++/model@shell-system,
	dzn/templates/c++/model@system,
	dzn/templates/c++/system-port-connect@binding,
	dzn/templates/c.scm,
	dzn/templates/c/connect-internal-ports@binding,
	dzn/templates/c/initialize@component,
	dzn/templates/c/initialize@foreign,
	dzn/templates/c/main-fill-event-map@component,
	dzn/templates/c/main-fill-event-map@system,
	dzn/templates/code.scm,
	dzn/templates/cs.scm,
	dzn/templates/cs/main@component,
	dzn/templates/cs/model@component,
	dzn/templates/cs/model@foreign,
	dzn/templates/cs/model@shell-system,
	dzn/templates/cs/model@system,
	dzn/templates/cs/system-port-connect@binding,
	dzn/templates/dzn.scm,
	dzn/templates/dzn/source@component,
	dzn/templates/dzn/source@foreign,
	dzn/templates/dzn/source@system,
	dzn/templates/javascript/main@component,
	dzn/templates/javascript/model@component,
	dzn/templates/javascript/system-port-connect@binding,
	dzn/templates/scheme.scm,
	dzn/templates/scheme/async-member-initializer@port,
	dzn/templates/scheme/main@component,
	dzn/templates/scheme/model@component,
	dzn/templates/scheme/model@system,
	dzn/templates/scheme/system-port-connect@binding: Update accordingly.

2022-06-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	traces: Update to provides, requires naming.
	* dzn/commands/traces.scm (model->traces): Use provides, provides-ports.

	wfc: Update to requires naming.
	* dzn/wfc.scm (requires-instances): Use requires-ports,
	requires-bindings.

	ast: Cleanups.
	* dzn/ast.scm (ast:return-values<event>,
	ast:out-triggers-void-in-events, ast:out-triggers-valued-in-events):
	Cleanups.

	ast: Update to provides-out, requires-out naming.
	* dzn/ast.scm (ast:required-out-triggers): Rename to..
	(ast:requires-out-triggers): ...this.
	(ast:in-triggers): Update caller.
	(ast:provided-out-triggers): Rename to...
	(ast:provides-out-triggers): ...this.
	(ast:out-triggers): Update caller.
	* dzn/code/c.scm (c:get-incoming-triggers-from-model): Update callers.
	* dzn/templates/c++.scm (shell-required-out, shell-provided-out): Update
	callers.
	* dzn/templates/c++/model@shell-system: Update callers.
	* dzn/templates/c.scm (call-out-trigger-prototype, call-out-trigger):
	Update callers.
	* dzn/templates/cs.scm (shell-required-out, shell-provided-out): Update
	callers.
	* dzn/templates/cs/model@shell-system: Update callers.

	ast: Update to provides-in, requires-in naming.
	* dzn/ast.scm (ast:provides-in-triggers): Rename to...
	(ast:provides-in-triggers): ...this.
	(ast:in-triggers): Update caller.
	(ast:required-in-triggers): Rename to...
	(ast:requires-in-triggers): ..this.
	(ast:out-triggers): Update caller.
	* dzn/commands/traces.scm (model->traces): Update callers.
	* dzn/templates/c++.scm (shell-provided-in, shell-required-in): Update
	callers.
	* dzn/templates/c++/model@shell-system: Update callers.
	* dzn/templates/c.scm (call-in-trigger-prototype, call-in-trigger):
	Update callers.
	* dzn/templates/c.scm (call-in-trigger-foreign): Update callers.
	* dzn/templates/cs.scm (shell-provides-in, shell-required-in): Update
	callers.
	* dzn/templates/cs/model@shell-system: Update callers.
	* dzn/wfc.scm (requires-instances): Rename to...
	(requires-instances): ...this.
	(cyclic-bindings): Update caller.

2022-06-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	DRAFT runtime scheme: Move locator to (dzn locator) module.
	* runtime/scheme/dzn/runtime.scm (dzn:runtime-locator): New function.
	(<dzn:component-model>): Use it.
	(call-in, call-out): Use "trace".
	(stderr, <dzn:locator>, dzn:clone, dzn:get, dzn:set!,
	locator-key): Move to...
	* runtime/scheme/dzn/locator.scm: ...this new file, and refactor to
	using simple string key and allow lookup by class inheritance.
	* runtime/local.mk (dist_runtime_scheme_dzn_DATA): Add it.

2022-06-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	runtime scheme: Remove dead code.
	This is a follow-up to commit
	    0f388a1cd6247d2e76ca0704fd62a9010715c900
	    scheme: Support non-collateral blocking.

	* runtime/scheme/dzn/runtime.scm (assoc-xref): Remove.
	* runtime/scheme/dzn/pump.scm (dzn:pump)[worker}: Remove support for
	'release prompt.
	(dzn:handle): Fix indentation.

2022-06-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.15.3.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: Update to 2.15.3.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.15.3 since 2.15.2):

2022-06-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add foreign_handwritten.
	* test/all/foreign_handwritten: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-06-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	javascript: Fixup for allow reply on out event.
	This is a follow-up for commit
	    3d60fb59b35521465742b96ba4f2bfc70564add5
	    javascript: Allow reply on out event.

	* runtime/javascript/dzn/runtime.js (dzn.runtime.call_in): Reset
	handling.

2022-06-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Fixup for allow reply on out event.
	This is a follow-up for commit
	    868c8655f3891dbc67b1a9dba029aebd1ea2e703
	    scheme: Allow reply on out event.

	* runtime/scheme/dzn/runtime.scm (call-in): Reset handling?.

2022-06-30  Rutger van Beusekom  <rutger@dezyne.org>

	cs: Fixup for allow reply on out event.
	This is a follow-up for commit
	    a407fa60593c46705891830b169dee6694d47b0f
	    cs: Allow reply on out event.

	* runtime/cs/dzn/runtime.cs (Runtime.call_in): Reset handling.

2022-06-30  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Fixup for allow reply on out event.
	This is a follow-up for commit
	    3175a0faff2269f9eedbe02c140e52157f04ba6f
	    c++: Allow reply on out event.

	* runtime/c++/dzn/runtime.hh (call_helper::~call_helper): Reset
	handling.

2022-06-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Update previous version.
	* Makefile.am (gen-announce): Update previous version.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.15.2.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: Update to 2.15.2.

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.15.1): Move into...
	(Release 2.16): ...here.  Add merging of wip-defer, wip-transform.
	Mention simulation choice for modeling events.
	(Release 3.0): Add event return.  Remove async, windows.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.15.2 since 2.15.1): New section.

	test: Add parse_import_order.
	* test/all/parse_import_order: New test.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Respect order of -I foo, -I bar imports.
	Options are stored as an alist the newest must "win", so the options
	list is reversed.  When using option more than once, they need to be
	reversed again.

	* dzn/command-line.scm (multi-opt): Reverse options.
	(command-line:get): Use it.
	* dzn/commands/language.scm (main): Likewise.
	* dzn/commands/parse.scm (parse): Likewise.
	(preprocess): Likewise.
	* dzn/verify/pipeline.scm (pretty-verify-pipeline): Likewise.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Cleanup block, release.
	* dzn/templates/scheme/block@blocking-compound: Move preamble to...
	* runtime/scheme/dzn/pump.scm (dzn:block<dzn:component>):
	...new specialization.
	* dzn/templates/scheme/port-release@reply: Move preamble to...
	* runtime/scheme/dzn/pump.scm (dzn:release<dzn:component>): ...new
	specialization.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Support non-collateral blocking.
	This fixes the long-standing blocking_system4 problem, and therefore
	full 2.14-compatible non-collateral blocking support.

	* dzn/config.scm.in (%feature-alist): Add "scheme" to "blocking"
	feature.
	* runtime/scheme/dzn/pump.scm (<dzn:pump>)[stack]: Rename to...
	[blocked]: ...this.
	[release]: Rename to
	[released]: ...this and change to an (a)list.
	* runtime/scheme/dzn/pump.scm (dzn:pump): Add (port . continuation) to
	released.  Run continuations using call-with-prompt.
	(dzn:block): For skip-block, check specific port in released.  Also
	remove released after returning from block.
	(dzn:release): Update released list instead of context switching
	directly.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_release: Add main for scheme.
	* test/all/blocking_release/main.scm: New file.

	test: collateral_blocking_multiple_provides0: Rename from blocking_multiple_provides.
	* test/all/blocking_multiple_provides: Rename to...
	* test/all/collateral_blocking_multiple_provides0: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: Add sync_out_reply_enum.
	* test/all/sync_out_reply_enum: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	scheme: Allow reply on out event.
	* dzn/templates/scheme/declare-async-req-method@trigger,
	dzn/templates/scheme/declare-method@trigger: Add dzn:flush.
	* test/all/hello_namespace_foreign/scheme/library/foreign.scm
	(initialize): Add dzn:flush.
	* dzn/templates/scheme/methods@on: Remove return.
	* runtime/scheme/dzn/runtime.scm (dzn:flush): Reset handling?.
	(valued-helper): Remove.
	(defer): Add dzn:flush.
	(dzn:handle): Remove flush.
	(call-in): Set handling?.  Call f directly, do not use dzn:handle.
	(call-out): Add dzn:trace-qout.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	javascript: Allow reply on out event.
	This changes the reply member from reply_bool, reply_int, and
	reply_<enum-name> to reply.  In javascript, event slots are created
	dynamically by calling runtime.runtime.  The event slot now needs to
	return the reply value, but because the type is unknown, typed reply
	members are problematic.

	* dzn/templates/javascript/reply-member-initializer@bool,
	dzn/templates/javascript/reply-member-initializer@enum,
	dzn/templates/javascript/reply-member-initializer@int,
	dzn/templates/javascript/reply@bool,
	dzn/templates/javascript/reply@enum,
	dzn/templates/javascript/reply@int,
	dzn/templates/javascript/reply@void: Remove.
	* dzn/templates/javascript/reply-member-initializer@type,
	dzn/templates/javascript/reply@type: New template.
	* runtime/javascript/dzn/runtime.js (runtime.runtime): Add flush.
	Return reply if set.  On in-events, reset reply.
	(runtime.flush): Reset handling?.
	(runtime.defer): Add flush.
	(runtime.handle): Remove flush.
	(runtime.call_in): Set handling.  Call f directly, do not use
	runtime.handle.
	(runtime.call_out): Add trace_qout.
	* test/all/foreign_injected/javascript/Foreign.js: Use this.reply
	instead of this.reply_bool.
	* test/all/foreign_reply/javascript/Foreign.js: Likewise.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_injected: Update handwritten main.
	* test/all/hello_injected/main.js: Update initializations.

	javascript: Fix logging for injected port.
	* dzn/templates/javascript/injected-require-initializer@port: New template.
	* dzn/templates/javascript/model@component: Use it.

	c: Generate skeleton for single foreign in file.
	* dzn/code/c.scm (c:generate-foreign-skel?): New method.
	(ast->): Use it to generate skeleton.

	c: Fix compile warnings.
	* dzn/templates/c/source-enum-string-function-definition@enum: Use
	INT_MAX as undefined.
	* dzn/templates/c/main-header@component: Likewise.
	* runtime/c/runtime.c (runtime_defer): Do not compare pointer value with
	unsiged 0.

	dzn: Support missing behavior.
	* dzn/templates/dzn/behavior@top: New file.

	dzn: Remove unused templates.
	* dzn/templates/dzn/formals@formal,
	dzn/templates/dzn/out-bindings@formal-binding: Remove.

	dzn: Put closing brace on newline.
	* dzn/templates/dzn/define-function@function,
	dzn/templates/dzn/then@statement: Move brace close to new line.

	dzn: Add newline between toplevel definitions.
	* dzn/templates/dzn/double-newline-postfix: New grammar file.
	* dzn/templates/dzn.scm (import, define-type, global): Use it.

	indent: Also skip whitespace at start of file.
	* dzn/indent.scm (indent): Do not insert newline at start when only
	space seen.

	dzn: Do not output imported foreigns.
	* dzn/code/dzn.scm (dzn:model): Filter-out everything imported.

	dzn: Do not output imported imports.
	* dzn/code/dzn.scm (dzn:import*): New method.
	* dzn/templates/dzn.scm (import): Use it.

	goops: Cleanup: Remove obsolete root field from <import>.
	* dzn/goops.scm (<import>)[root]: Remove.
	* dzn/ast.scm (ast:top*<root>, ast:top*<import>): Remove
	specializations.

	ast: Cleanup: Use srfi-71 instead of ice-9 receive.
	* dzn/ast.scm (ast:top*): Rewrite using srfi-71 let.
	(ast:topological-model-sort): Likewise.

	parse: Preserve <import> in AST.
	* dzn/parse/ast.scm (parse-tree->ast): Do not remove <import>.
	* dzn/parse.scm (parse-tree-alist->ast): Likewise.
	* test/all/parse_locations/baseline/parse_locations: Update baseline.

	dzn: Preserve field-tests.
	* dzn/templates/dzn/expression@field-test: Output as field-test.
	* dzn/templates/makreel/expression@field-test: Change from symlink to
	use equal test.

	dzn: Do not strip scope from function type.
	* dzn/code/dzn.scm (dzn:type<function>): Forward signature to dzn:type
	for possible stripping of scope.

	dzn: Preserve data type definitions.
	* dzn/code/dzn.scm (dzn:=expression<extern>): Rename to...
	(dzn:expression<extern>): ...this.
	(dzn:define-type): New method.
	* dzn/templates/dzn.scm (define-type): Use it.
	* dzn/templates/dzn/define-type@extern: Do not insert an `='.

	dzn: Cleanup: use accessors.
	* dzn/code/dzn.scm (dzn:instance): New accessor.
	* dzn/templates/dzn.scm (instance): Use it.
	(in-event, out-event, provides-port, requires-port): Replace lambda with
	accessor.

	dzn: Display <the-end> as "the-end".
	* dzn/templates/dzn/statement@the-end: Use "the-end;".

	dzn: Support "blocking" port qualifier.
	* dzn/code/dzn.scm (dzn:blocking): New method.
	* dzn/templates/dzn.scm (blocking): Use it in new template.
	* dzn/templates/dzn/provides-port@port,
	dzn/templates/dzn/requires-port@port: Use it.

	dzn: Fix spacing of port qualifiers.
	* dzn/templates/dzn/external@port,
	dzn/templates/dzn/injected@port: Use leading space.
	* dzn/templates/dzn/requires-port@port: Cater for that.

	test: enum_expressions: Also use expression in if.
	* test/all/enum_expressions/enum_expressions.dzn: Copy guard expression
	to if to switch to cruel.

	test: interger_expressions: Test not (!) in complex expressions.
	* test/all/integer_expressions/integer_expressions.dzn: Test not (!) in
	complex expressions and resolve TODOs: more semantic tests.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c: Fix expansion of not (!) in complex expression.
	This fixes hello_implicit_temporaries.

	* dzn/templates/c/expand-statement@statement: Symlink to ../dzn.
	* dzn/templates/c/left@not,
	dzn/templates/c/right@not: Remove.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Annotate blocking on ports.
	This is a follow-up to commit
	    6221aae465f6d6f5b68892e57c33398ed44dcd05
	    test: Annotate blocking on ports.

	* test/all/async_blocking_missing_ack/async_blocking_missing_ack.dzn,
	test/all/async_blocking_ranking_disorder/async_blocking_ranking_disorder.dzn,
	test/all/collateral_blocking_async/collateral_blocking_async.dzn,
	test/all/external_blocking_livelock/external_blocking_livelock.dzn:
	Annotate blocking on ports.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: flush_inevitable_sync_out: Rename from hello_inevitable_sync_out.
	* test/all/hello_inevitable_sync_out: Rename to...
	* test/all/flush_inevitable_sync_out: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update.

	Remove obsolete file.
	* dzn/templates/html.scm: Remove.

	test: Add undefined/foreign/port_type.
	* test/all/undefined/foreign/port_type: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.
	* .gitignore: Update accordingyly.

	wfc: Check ports of foreign.
	* dzn/wfc.scm (wfc<foreign>): Check ports.
	* test/all/parse_duplicate_definition: Update baseline.

	test: Add hello_no_compliance.
	* test/all/helo_no_compliance: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid provides port update without any interaction.
	Reported by Alexander Darmonski <Alexander.Darmonski@sioux.eu>.

	* dzn/simulate.scm (check-provides-compliance): When the compliance
	check is disabled, zip non-compliant port trace without changing the
	port state.
	(end-report): Skip refusals check when %compliance-check? is false.

2022-06-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: blocking_shell: Remove explicit illegals.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c: Update logging to using ":" as enum-field separator.
	* dzn/templates/c/enum-field-else-if@enum-field,
	dzn/templates/c/enum-field-switch-case@enum-field: Use ":" instead of "_"
	as enum-field seprator.

	javascript: Resurrect namespace tests.
	* test/all/imported.space/javascript/imported/ihello.js,
	test/all/imported.space/javascript/imported/imported.space.js,
	test/all/imported.space/javascript/imported/iworld.js,
	test/all/space.import_interface_shadow/javascript/space/space.import_interface_shadow.js,
	test/all/space.import_interface_shadow/javascript/space/space.js,
	test/all/space.interface_shadow/javascript/space/space.interface_shadow.js,
	test/all/space.space/javascript/space/ihello.js,
	test/all/space.space/javascript/space/space.space.js: New symlink.

	javascript: Update logging to using ":" as enum-field separator.
	* dzn/templates/javascript/enum-field-definer@enum-field: Update to use ":"
	enum-field separator.

	test: function_early_return: Change to runnable code.
	* test/all/function_early_return/function_early_return.dzn (ihello): New
	interface.
	(function_early_return): Change into a component.

	scheme: Support early function return.
	* dzn/templates/scheme/source@root: Use (ice9 control).
	* dzn/templates/scheme/functions@function: Wrap in let/ec, defining
	return escape.
	* dzn/templates/scheme/statement@return: Use it.

	scheme: Resurrect namespace tests.
	* test/all/imported.space/scheme/imported/ihello.scm,
	test/all/imported.space/scheme/imported/imported-space.scm,
	test/all/imported.space/scheme/imported/iworld.scm,
	test/all/space.import_interface_shadow/scheme/space/import_interface_shadow.scm,
	test/all/space.import_interface_shadow/scheme/space/space-import_interface_shadow.scm,
	test/all/space.import_interface_shadow/scheme/space/space.scm,
	test/all/space.interface_shadow/scheme/space/space-interface_shadow.scm,
	test/all/space.space/scheme/space/ihello.scm,
	test/all/space.space/scheme/space/space-ihello.scm,
	test/all/space.space/scheme/space/space-space.scm: New symlink.

	scheme: Update logging to using ":" as enum-field separator.
	* runtime/scheme/dzn/runtime.scm (dzn:trace-qin): Fix logging.
	* dzn/templates/scheme/enum-field-definer@enum-field: Update to use ":"
	enum-field seprator.
	* dzn/code/scheme.scm (wrap-lonely-variable): Cater for
	<blocking-compound>.
	* dzn/templates/scheme/main@component: Cater for type mismatch.

	test: Remove async, blocking, flush features skipping from META.
	* test/all/async_async_prio/META,
	test/all/async_blocking/META,
	test/all/async_calling_context/META,
	test/all/async_cancel/META,
	test/all/async_context/META,
	test/all/async_order/META,
	test/all/async_order2/META,
	test/all/async_prio/META,
	test/all/async_prio2/META,
	test/all/async_prio3/META,
	test/all/async_provides/META,
	test/all/async_rank/META,
	test/all/async_ranking/META,
	test/all/async_simple/META,
	test/all/async_sync_prio/META,
	test/all/async_synccb/META,
	test/all/async_synccb2/META,
	test/all/async_types/META,
	test/all/blocking_binding/META,
	test/all/blocking_bottom_system/META,
	test/all/blocking_cancel_race/META,
	test/all/blocking_cancel_race_bool/META,
	test/all/blocking_external/META,
	test/all/blocking_function/META,
	test/all/blocking_function_reply/META,
	test/all/blocking_if_reply/META,
	test/all/blocking_imperative/META,
	test/all/blocking_local/META,
	test/all/blocking_multiple_provides0/META,
	test/all/blocking_normalize/META,
	test/all/blocking_race_async/META,
	test/all/blocking_release/META,
	test/all/blocking_requires/META,
	test/all/blocking_requires_normalize/META,
	test/all/blocking_sync_asynchronous_out/META,
	test/all/collateral_blocking_double_release/META,
	test/all/collateral_blocking_release/META,
	test/all/collateral_blocking_reorder_bypass/META,
	test/all/collateral_blocking_top/META,
	test/all/collateral_double_blocked/META,
	test/all/collateral_double_blocked_out/META,
	test/all/compliance_async/META,
	test/all/compliance_blocking_async_race/META,
	test/all/compliance_failures_blocking_race/META,
	test/all/deadlock_port_blocked/META,
	test/all/double_hello_block/META,
	test/all/hello_async/META,
	test/all/hello_block/META,
	test/all/hello_blocking_asynchronous_sync_out/META,
	test/all/hello_blocking_external/META,
	test/all/hello_blocking_multiple_out/META,
	test/all/hello_inevitable_blocking_sync_out/META,
	test/all/hello_injected/META,
	test/all/illegal_blocking_race/META,
	test/all/indirect_blocking_multiple_external_out/META,
	test/all/indirect_blocking_out/META,
	test/all/match_blocking_race/META: Remove.
	* test/all/async_calling_context/META (skip): Remove.
	* test/all/async_flush/META (skip): Remove.
	* test/all/async_multiple_provides/META (skip): Remove languages.
	* test/all/async_shell/META (skip): Remove "c", "javascript".
	* test/all/blocking_double_release/META (skip): Remove.
	* test/all/blocking_multiple_provides/META (skip): Remove.
	* test/all/blocking_multiple_provides2/META (skip): Remove.
	* test/all/blocking_multiple_provides3/META (skip): Remove.
	* test/all/blocking_shell/META (skip): Remove.
	* test/all/blocking_system/META (skip): Remove.
	* test/all/blocking_system2/META (skip): Remove.
	* test/all/blocking_system3/META (skip): Remove.
	* test/all/blocking_system4/META (skip): Remove.
	* test/all/blocking_system_diamond/META (skip): Remove.
	* test/all/calling_context/META (skip): Remove.
	* test/all/collateral_blocking_async/META (skip): Remove.
	* test/all/collateral_blocking_backdoor/META (skip): Remove.
	* test/all/collateral_blocking_bridges/META (skip): Remove.
	* test/all/collateral_blocking_multiple_provides/META (skip): Remove.
	* test/all/collateral_blocking_multiple_provides2/META (skip): Remove
	languages.
	* test/all/collateral_blocking_reorder/META (skip): Remove.
	* test/all/collateral_blocking_reorder_parallel/META (skip): Remove.
	* test/all/collateral_blocking_shell/META (skip): Remove.
	* test/all/collateral_blocking_shell2/META (skip): Remove languages.
	* test/all/double_collateral_blocking_shell/META (skip): Remove.
	* test/all/flush_inevitable_sync_out/META (skip): Remove.
	* test/all/hello_multiple_out/META (skip): Remove.
	* test/all/hello_sync_out_reply/META: Remove
	* test/all/livelock_async_cancel/META (skip): Remove languages.
	* test/all/second_reply_blocking/META (skip): Remove languages.
	* test/all/shell_injected/META (skip): Remove.

	test: Skip test with unsupported features programmatically.
	* dzn/config.scm.in (%feature-alist): New variable.
	(features, features-missing, feature-skip?): New functions.
	(run-code, run-build, run-execute): Use them to skip if a tested feature
	is missing.
	(list-files): Move to...
	* dzn/shell-util.scm (list-files): Here, and rewrite using...
	(file-is-directory?): This new function.

2022-06-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: double_hello_block: Fix copyright.
	* test/all/double_hello_block/double_hello_block.dzn: Remove duplicate
	line.

	explore: Refactor run-label.
	* dzn/explore.scm (pc->rtc-lts): Make the different cases explicit.

	report: Refactor match error.
	* dzn/vm/report.scm (final-error-messages): Swap then and else, use let value.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Whitespace fixes.
	* dzn/templates/makreel/model@component (component_comm,
	component_allow, component_rename, component): Fix templates indentation.
	* dzn/templates/makreel/semantics-comm-requires@port: Fix indentation.

2022-06-20  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: cs: Add timeout to container waiting for input.
	* runtime/cs/dzn/container.hh (container.trail_expect): Replace wait
	with wait_for.

	runtime: c++: Add timeout to container waiting for input.
	* runtime/c++/dzn/container.hh (container::trail_expect): Replace wait
	with wait_for.

	runtime: c++: Support void* -> component name for debugging.
	* runtime/c++/dzn/meta.hh.in (struct component): Add.
	* runtime/c++/dzn/runtime.hh (component_to_string): Use it here.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	runtime: cs: Refactor port_block and port_release.
	* runtime/cs/dzn/pump.cc (port_block): Move preamble...
	(pump.block): ...here.
	(port_release): Move preamble...
	(pump.release): ...here.

2022-06-20  Rutger van Beusekom  <rutger@dezyne.org>

	runtime: c++: Refactor port_block and port_release.
	* runtime/c++/pump.cc (port_block): Move preamble...
	(pump::block): ...here.
	(port_release): Move preamble...
	(pump::release): ...here.

	c++: Improve execution by skipping tracing when !rdbuf().
	* runtime/c++/runtime.cc (trace, trace_out, trace_qin, trace_qout): Skip
	when os.rdbuf is false.
	* runtime/c++/pump.cc: Avoid debug printing when dbug.rdbuf is false.

	c++: Avoid unnecessary copies.
	* runtime/c++/dzn/locator.hh (struct locator): Make copying explicit
	through clone.
	* dzn/templates/c++/injected-instance-system-initializer@system,
	dzn/templates/c++/model@shell-system: Use it here.
	* runtime/c++/dzn/runtime.hh (struct runtime): Remove copy and move
	constructor.
	* test/all/hello_namespace_foreign/c++/library_foreign.cc (foreign::foreign),
	dzn/templates/c++/async-event-slot@trigger,
	dzn/templates/c++/event-slot@trigger,
	dzn/templates/c++/flush@trigger,
	dzn/templates/c++/foreign-event-slot@trigger,
	dzn/templates/c++/injected-port-require-override@port: To find
	unnecessary copies and fix them by resolving through this->.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Support --model option for --backend=system --format=json.
	* dzn/ast.scm (ast:component-model*<system>): Rename to ...
	(ast:instance-model*): ...this.
	(ast:system*): Update caller.
	(ast:model*<component-model>): New method.
	(ast:model*<interface>, model*<system>): New specializations.
	(ast:system*): Remove self.
	(ast:interface*<component>): Change specialization to...
	(ast:interface*<component-model>): ...this.
	(ast:filter-model): Use ast:model*.
	(ast:used-model*): Remove.
	* dzn/code/json.scm (system-diagram): Filter root for model with its
	dependencies.

	simulate: Bump welcome message to 2022.
	* dzn/config.scm.in (%copyright-info): Update to 2022.

2022-06-20  Rutger van Beusekom  <rutger@dezyne.org>

	peg: Support trigger list using event, optional or inevitable.
	* dzn/parse/peg.scm (peg:parse): Remove '#' in illegal-triggers rule.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Fix typo.
	* doc/examples/inevitable-optional.dzn (inevitable_optional): Typo.

	simulate: Remove redundant import accessor.
	* dzn/simulate.scm (pc->modeling-lts): Remove @-import.

	vm/report: Debugging bugfix.
	* dzn/vm/report.scm (debug:lts->alist): Use different identifiers for
	traces.

	vm/runtime: Remove dead code.
	* dzn/vm/runtime.scm (runtime:get-sut): Remove dead code.

	graph: Sort state-diagram dot output.
	* dzn/explore.scm (state-diagram->dot): Produce sorted output.
	* test/all/state-diagram: Update baseline.

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Deprecate "behaviour", use "behavior" throughout.
	Run

	    sed -i -e s,behaviour,behavior,g \
	        -e s,Behaviour,Behavior,g \
	        -e s,BEHAVIOUR,BEHAVIOR,g \
	        $(find * -type f \
	          | grep -Ev 'NEWS|peg.scm|complete.scm|doc/announce|hello_usuk')

	* doc/dezyne.texi,
	test/all/blocking_function/blocking_function.dzn,
	test/all/blocking_queuefull/blocking_queuefull.dzn,
	test/all/blocking_queuefull_reply/blocking_queuefull_reply.dzn,
	test/all/collateral_blocking_double_release/collateral_blocking_double_release.dzn,
	test/all/collateral_blocking_reply/collateral_blocking_reply.dzn,
	test/all/compliance_blocking_double_release/compliance_blocking_double_release.dzn,
	test/all/compliance_blocking_function/compliance_blocking_function.dzn,
	test/all/compliance_provides_illegal/compliance_provides_illegal.dzn,
	test/all/compliance_sync_action/compliance_sync_action.dzn,
	test/all/space.import_interface_shadow/space.import_interface_shadow.dzn,
	test/all/space.interface_shadow/space.interface_shadow.dzn,
	test/all/wf_blocking_port/wf_blocking_port.dzn: Rename "behaviour" to "behavior".

2022-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Update previous version.
	* Makefile.am (gen-announce): Update previous version.

2022-06-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Add sum-announce for release.
	* Makefile.am (sum-announce): New target.

2022-05-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.15.1.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: Update to 2.15.1.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.15.1 since 2.15.0): New section.

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.15.1): New section.

2022-05-31  Rutger van Beusekom  <rutger@dezyne.org>

	test: system_flush: Fix copyright.
	* test/all/system_flush/system_flush.dzn: Remove duplicate mangled
	header.

	test: Add system_flush_double.

	test: Add system_double_inevitable.
	* test/all/system_double_inevitable: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-05-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Fix flushing of multiple requires out events.
	* dzn/vm/util.scm (flush <program-counter>): Move debug printing...
	(flush <program-counter> instance): ...here.
	(q-empty?<program-counter><top>): New specialization.
	(pop-deferred): Use it.  Only reset deferred if queue is empty.
	* dzn/vm/step.scm (step<end-of-on>)[flush-other]: Remove inner define.
	Simply call flush if queue not empty.  Use pc->stack for livelock
	detection.
	* dzn/vm/run.scm (run-flush<program-counter>): Remove dead optional
	flush recursion.
	(run-flush<pc><runtime:component>): New specialization.
	(run-requires): Use it.

	test: Add double_inevitable.
	* test/all/double_inevitable: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: collateral_blocking_reorder_parallel: Rename from multiple_parallel_blocking.
	* test/all/collateral_blocking_reorder: Rename to...
	* test/all/collateral_blocking_reorder_parallel: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2022-05-31  Paul Hoogendijk  <paul@dezyne.org>

	test: Add compliance_provides_illegal.
	* test/all/compliance_provides_illegal: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-05-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Support simulate-flags in META.
	* test/dzn/dzn.scm (simulate-flags): New procedure.
	(run-simulate-trace): Use it.
	* test/bin/update.sh: Cater for simulate-flags.

2022-05-31  Paul Hoogendijk  <paul@dezyne.org>

	test: Add compliance_blocking_function.
	* test/all/compliance_blocking_function: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add compliance_sync_action.
	* test/all/compliance_sync_action: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-05-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Synthesize missing compliance port action.
	* dzn/vm/report.scm (complete-split-arrows-pcs): When provides port action is
	missing in trace, synthesize it using <void> event.
	* dzn/ast.scm (ast:in?<action>, ast:in?<trigger>
	ast:out?<action>, ast:out?<trigger>): Robustify against event lookup.
	* test/all/compliance_blocking_out,
	test/all/compliance_fork_provides,
	test/all/compliance_provides_out,
	test/all/deadlock_blocking_compliance:: Update baseline.

	test: Add blocking_function.
	* test/all/blocking_function: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	vm: Avoid deadlock for skip-block in function.
	* dzn/vm/util.scm (pc->stack): New method.
	(pc->statements, rtc-pc): Use it.
	* dzn/vm/step.scm (step<reply>): Use it to check stack of statements for
	<blocking>.
	* dzn/vm/util.scm (dzn): Export pc->statements.
	* dzn/simulate.scm (check-deadlock): Fix indendation.
	(end-report): Use pcs from traces if available.

2022-05-31  Paul Hoogendijk  <paul@dezyne.org>

	test: Add deadlock_asynchronous_sync_reply.
	* test/all/deadlock_asynchronous_sync_reply: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-05-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Report deadlock upon non-blocking synchronous void reply.
	* dzn/vm/step.scm (step<reply>): Skip release for non-blocking
	synchronous void reply, also set <deadlock-error> upon non-blocking
	synchronous void reply.

2022-05-31  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add second_reply_sync.
	* test/all/second_reply_sync: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-05-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Report second reply error at return of void event.
	* dzn/vm/step.scm (step<trigger-return>): If void reply is set in
	non-blocking context, set <second-reply-error>.
	* dzn/vm/run.scm (extend-trace): In this case, remove <trigger-return>.

2022-05-31  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add system_double_out.
	* test/all/system_double_out: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-05-31  Paul Hoogendijk  <paul@dezyne.org>

	makreel: Avoid deadlock in skip-block case.
	* dzn/templates/makreel/model@component (semantics_provides_blocking):
	Also cater for case 'skip blocked' and queue_not_empty.

2022-05-31  Rutger van Beusekom  <rutger@dezyne.org>

	vm/run: Prefer "cute" over "cut".
	* dzn/vm/run.scm (extend-trace, run-silent, run-external-modeling,
	run-interface, run-requires, run-async-event, did-provides-out?): Use
	cute instead of cut.

2022-05-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid zipping port-trace twice upon compliance error.
	For certain compliance errors, this would result in a double
	"<external>.h.hello -> " at the start of the trace.

	* dzn/simulate.scm (check-provides-compliance): Do not overwrite trigger
	for zipping.

2022-05-31  Rutger van Beusekom  <rutger@dezyne.org>

	test: Correct incorrect blocking multiple provides models.
	* test/all/blocking_multiple_provides/blocking_multiple_provides.dzn
	(multiple_provides): Cater for more left/right interleaving.
	* test/all/blocking_multiple_provides3/blocking_multiple_provides3.dzn
	(hello_skip_block): Rename to ...
	(multiple_provides): ...this.  Rename ports to "left", "right".  Cater
	for more left/right interleaving.
	(blocking_multiple_provides3): Update accordingly.
	* test/all/blocking_multiple_provides3/trace,
	test/all/blocking_multiple_provides3/main.cs,
	test/all/blocking_multiple_provides3/main.cc: Update accordingly.

2022-05-10  Rutger van Beusekom  <rutger@dezyne.org>

	explore: Fix indentation.
	* dzn/explore.scm (pc->rtc-lts): Run M-q.

2022-05-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Fix alphabetical sort of regression tests.
	* test/all/local.mk (REGRESSION_TESTS): Sort lines.

2022-05-16  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add blocking_sync_asynchronous_out.
	* test/all/blocking_sync_asynchronous_out: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	makreel: Fix combination of blocking, sync out and async out.
	* dzn/templates/makreel/model@component (semantics_provides_skip_blocking):
	Add blocking parameter.  Also allow semantics_blocked_rtc.

2022-05-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update to use guix shell.
	* HACKING (For the dezyne.org website): Use guix shell instead of guix
	environment.
	* README (Requirements): Likewise.
	* doc/dezyne.texi (Building from Git): Likewise.
	* guix.scm: Likewise.

	guix: Bump to 0e9429544fd737079b9c1562de3beb48329350a9.
	* guix.scm: Use --commit=0e9429544fd737079b9c1562de3beb48329350a9.

2022-05-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Use new package style.
	* gui/gnu/packages/dezyne.scm (dezyne)[arguments]: Convert to list of
	G-Expressions.
	[inputs]: Drop labels.
	[native-inputs]: Likewise.

2022-05-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Disable unstable tests.
	The mCRL2 output for these tests is unstable, i.e., varies between
	different builds.  Either workaround the issue via rewriting the LTS or
	fix mCRL2.

	* test/all/local.mk (REGRESSION_TESTS): Move unstable tests...
	(UNSTABLE_TESTS): ...here.
	* ROADMAP (Release 2.16): Mention this.

2022-05-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Post-release udpate.
	* doc/announce/ANNOUNCE-2.15.0: Insert URLs, update checksums.
	* Makefile.am (gen-announce): Update previous version.
	* ROADMAP (Release 2.15): Remove.  Move remaining items...
	(Release 2.16): ...here.

	doc: Post-release udpate.
	* doc/announce/ANNOUNCE-2.15.0: Insert URLs, update checksums.

2022-05-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.15.0.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: Update to 2.15.0.

2022-05-04  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Remove obsolete static dzn::coroutine::s_current.
	This is a follow-up to commit
	    8e9cb483c26ee91e19a3c1430b36a80ea48f4f62
	    c++: Fix illegal caused by deleting and re-instantiating the pump.

	* runtime/c++/dzn/coroutine.hh (coroutine::s_current)
	[HAVE_BOOST_COROUTINE]: Remove declaration.
	(coroutine::yield)[HAVE_BOOST_COROUTINE]: Do not set it.
	* runtime/c++/runtime.cc (s_current)[HAVE_BOOST_COROUTINE]: Remove
	instantiation.

2022-05-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.15.0.rc4.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: Update to 2.15.0.rc4.

2022-05-04  Rutger van Beusekom  <rutger@dezyne.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	test: Add deadlock_reply (thanks Perry).
	Reported by Perry van Wesel <perry.van.wesel@thermofisher.com>.

	* test/all/deadlock_reply: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-05-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	vm: Deadlock on reply outside of provides context.
	* dzn/vm/goops.scm (<q-trigger>)[modeling?]: New field.
	* dzn/vm/step.scm (step-async-action-down, step-action-up): Set it.
	(step)[reply]: Check it to disallow reply in non-blocking modeling
	context.

2022-05-04  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add pump_twice.
	Thanks to (logocp) Joran Jessurun <joran.jessurun@thermofisher.com>.

	* test/all/pump_twice: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-05-04  Rutger van Beusekom  <rutger@dezyne.org>

	cs: Make global coroutine identifiers pump scoped.
	This cleanup brings cs in line with c++ and potentially fixes
	re-instantiating the pump by making global coroutine identifiers pump
	scoped, that might otherwise get assigned a different coroutine id,
	notably using id 0 for the first coroutine.  Id 0 would mean:
	not-handling which causes problems.

	* runtime/cs/dzn/context.cs (get_id): Remove get_id.
	* runtime/cs/dzn/coroutine.cs (coroutine), (get_id): Remove usage.
	* runtime/cs/pump.cs (create_context): Pass id to coroutine constructor.
	* runtime/cs/dzn/runtime.cs (call_in, call_out): Determine coroutine id,
	(defer, flush, handle): Pass it.
	(flush): Add template specialization.
	* dzn/templates/cs/flush@trigger: Determine coroutine id.

2022-05-04  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Fix illegal caused by deleting and re-instantiating the pump.
	This is a follow-up to commit
	    0e44e35c7f4432867d27804646d7a3d93e1d59da
	    c++: Retype handling from bool to coroutine id (size_t).

	This fixes re-instantiating the pump by making global coroutine
	identifiers pump scoped, that might otherwise get assigned a different
	coroutine id, notably using id 0 for the first coroutine.  Id 0 would
	mean: not-handling which causes problems.

	Reported by Joran Jessurun <joran.jessurun@ajmail.nl> via IRC.

	* runtime/c++/dzn/context.hh (get_id): Remove get_id.
	* runtime/c++/dzn/coroutine.hh (coroutine, get_id): Remove usage.
	* runtime/c++/dzn/pump.hh (struct pump): Implement here.
	* runtime/c++/pump.cc (create_context): Pass id to coroutine constructor.
	* runtime/c++/dzn/runtime.hh (call_in, call_out): Determine coroutine id,
	(defer, flush, handle): Pass it.
	(flush): Add template specialization.
	* runtime/c++/runtime.cc (runtime::defer, runtime::flush,
	runtime::handle): Pass coroutine_id.
	* dzn/templates/c++/flush@trigger: Determine coroutine id.

2022-05-04  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add compliance_blocking_async_race.
	* test/all/compliance_blocking_async_race: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	makreel: Allow collateral blocking race after async.

2022-05-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Avoid erroneous state update with non-matching trace.
	Reported by Perry van Wesel <perry.van.wesel@thermofisher.com>.

	By truncating a blocking trace for non-provides triggers, a
	non-compliant trace would--instead of being discarded--cause a state
	update of the provides port.

	* dzn/simulate.scm (check-provides-compliance): Do not truncate trace
	for non-provides trigger.

2022-05-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Debug report check-compliance exit cases.
	* dzn/simulate.scm (check-provides-compliance): %debug print exit cases.

2022-04-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.15.0.rc3.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: Update to 2.15.0.rc3.

	test/language: Add copyright header to component-{bool,data,enum,int}.dzn.
	* test/language/component-bool.dzn,
	test/language/component-data.dzn,
	test/language/component-enum.dzn,
	test/language/component-int.dzn: Add copyright header.  Include extra
	empty lines to allow for new copyright holders without having to update
	all 22 tests.  This adds 50 extra lines.
	* test/dzn/language.scm ("bool literal", "bool local", "bool reply",
	"bool formal", "enum literal", "enum field", "enum local", "enum reply",
	"enum formal", "int literal", "int local", "int reply", "int formal",
	"data literal", "data local", "data formal", "bool var->formal", "enum
	var->formal", "int var->formal", "data var->formal", "data
	arg->formal"): Update accordingly, adding 50 to all line numbers.

2022-04-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	commands: Fail gracefully when using an invalid --queue-size option.
	Reported by Perry van Wesel <perry.van.wesel@thermofisher.com>.

	* dzn/command-line.scm (command): New procedure, factored-out from...
	(command-line:get): ...here.
	(command-line:get-number): Use it in new procedure.
	* dzn/commands/code.scm (main): Use it to fail gracefully if
	--queue-size is not a number.
	* dzn/commands/graph.scm (main): likewise.
	* dzn/commands/simulate.scm (main): Likewise.
	* dzn/code/makreel.scm (root->): Likewise.

2022-04-29  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add match_blocking_race.
	* test/all/match_blocking_race: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-04-29  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid <illegal> upon action from blocked port.
	Reported by Perry van Wesel <perry.van.wesel@thermofisher.com>.

	* dzn/vm/run.scm (run-to-completion*)[modeling?]: New inner define.  Use
	it to filter-out modeling traces when blocked on port, instead of
	also marking an out-action as <illegal> upfront.

2022-04-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	emacs: Add dzn-system (C-c C-s) displaying system view.
	* emacs/dzn-mode.el (dzn-dot-program): New variable.
	(dzn-system): Use it in new function.
	(dzn-mode-map): Bind it to C-c C-s.
	(dzn-command-menu): Add it to menu.

2022-04-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	emacs: Run simulate after verify.
	This resurrects inspecting verification errors by walking through the
	verification trace using the compilation buffer.

	* emacs/dzn-mode.el (dzn-daemon-url): Remove.
	(dzn-command-list): Remove obsolete commands.
	(dzn-pipe): New function.
	(dzn-verify): Use it to run simulate.
	* emacs/pre-inst-env.el: Fix thinko in comment.
	(ide:pre-inst-env): Rename to...
	(pre-inst-env): ..this.

2022-04-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.15.0.rc2.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: Update to 2.15.0.rc2.

	doc: Update `NEWS' and `ANNOUNCE-2.15.0'.
	* NEWS (Simulation): Mention the interface livelock check, external
	queue-full check and -C,--no-compliance, `--no-interface-livelock', and
	`-Q,--no-queue-full' options,
	(Noteworthy bug fixes): Mention well-formedness hang and an interface
	shadowing its namespace.
	* doc/announce/ANNOUNCE-2.15.0: Likewise.

2022-04-27  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.15): Move tau-loop issues...
	(Release 2.18): ...here.
	(Release 2.15): Move done issues...
	(DONE): ...here.
	(Release 2.16): Add interleaving/ladders.
	(Release 2.19): Add active system / thread-safe-shell.

2022-04-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Fix typo in release commit message.
	* Makefile.am (release): Remove stray ": ".

2022-04-27  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Fix performance when using multiple provides ports.
	This reverts to the former provides definition for non-blocking.
	Blocking taus lead to exponential growth of provides process with
	increasing number of ports.

	* dzn/templates/makreel.scm (provides-r2c-blocking-proc): Declare
	dedicated template for blocking.
	* dzn/templates/makreel/provides-r2c-blocking-proc@port: Implement it.
	* dzn/templates/makreel/model@component: Use it.
	* dzn/templates/makreel/provides-out@port: Merge blocking and
	non-blocking approaches.
	* dzn/templates/makreel/provides-r2c-proc@port: Revert to non-blocking
	implementation.
	* test/all/compliance_fork_provides/baseline/verify/compliance_fork_provides:
	Remove p_right.world.
	* test/all/compliance_fork_provides/trace: Likewise.

2022-04-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add space.import_interface_shadow.
	* test/all/space.import_interface_shadow: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add space.interface_shadow.
	* test/all/space.interface_shadow: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-04-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	tree: Search for name inside namespace first.
	This fixes finding the namespace instead of the item inside the
	namespace, if the item has the same name as the namespace.

	* dzn/parse/lookup.scm (search): When looking up a name in a namespace
	first search inside the namespace.

2022-04-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Search for name inside namespace first.
	This fixes finding the namespace instead of the item inside the
	namespace, if the item has the same name as the namespace.

	Reported by Joran Jessurun <joran.jessurun@ajmail.nl> via IRC.

	* dzn/ast.scm (ast:lookup-n): When looking up a name in a namespace
	first search inside the namespace.

2022-04-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Cleanup setting of errors.
	No semantic changes, layouting only.

	* dzn/vm/step.scm (step)[illegal]: Let error to break long line.
	* dzn/vm/run.scm (run-external): Likweise.
	* dzn/vm/step.scm (step-async-action-down): Likewise.
	(step)[reply]: Likewise.
	(step)[trigger-retun]: Likewise.
	* dzn/vm/util.scm (enqueue, assign, make-pc): Likewise.

2022-04-25  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Typo: Match return strictly when blocked on boundary.
	* dzn/vm/run.scm (extend-trace): Use the non-released orig-pc to
	determine being blocked on boundary.
	* test/all/collateral_blocking_reply/collateral_blocking_reply.dzn (iblock):
	Make non-deterministic by also dading false reply.

2022-04-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Add -Q,--no-queue-full option.
	* dzn/commands/simulate.scm (parse-opts): Add --no-queue-full
	(main): Pass it to...
	* dzn/simulate.scm (simulate): ...new #:queue-full-check? parameter
	here.  Likewise, pass it to...
	(simulate*): ...new #:queue-full-check? parameter here.
	Likewies, pass it to...
	(simulate**): ...new #:queue-full-check? parameter here.
	Likewise, pass it to...
	(run-trail):  ...new #:queue-full-check? parameter here.
	Likewise, pass it to...
	(end-report): ...new #:queue-full-check? parameter here.  Only
	run check-external-queue-full if set.
	* doc/dezyne.texi (Invoking dzn simulate): Document it.

	simulate: Add --no-interface-livelock option.
	* dzn/commands/simulate.scm (parse-opts): Add --no-interface-livelock
	(main): Pass it to...
	* dzn/simulate.scm (simulate): ...new #:interface-livelock-check? parameter
	here.  Likewise, pass it to...
	(simulate*): ...new #:interface-livelock-check? parameter here.
	Likewies, pass it to...
	(simulate**): ...new #:interface-livelock-check? parameter here.
	Likewise, pass it to...
	(run-trail):  ...new #:interface-livelock-check? parameter here.
	Likewise, pass it to...
	(end-report): ...new #:interface-livelock-check? parameter here.  Only
	run check-interface-livelock if set.
	* doc/dezyne.texi (Invoking dzn simulate): Document it.

2022-04-22  Rutger van Beusekom  <rutger@dezyne.org>

	test: queuefull_external: Add trace and simulate baseline.
	* test/all/queuefull_external/trace: New file.
	* test/all/queuefull_external/baseline/simulate/queuefull_external,
	test/all/queuefull_external/baseline/simulate/queuefull_external.stderr:
	Update baseline.

2022-04-22  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support external <queue-full> at EOT.
	* dzn/vm/run.scm (run-external-modeling)[pc]: New specialization.
	* dzn/simulate.scm (end-report)[check-external-queue-full]: Use it in
	new inner procedure.  Invoke it to report <queue-full> at EOT.

2022-04-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	vm: Support external <queue-full>.
	* dzn/vm/util.scm (pc->string): Produce "<queue-full>" instead of
	"<deadlock>" when status is <queue-full-error>.
	* dzn/vm/run.scm (run-external-modeling)[update-state]: Also copy
	the #:status.  Do not filter-out traces with <queue-full-error>.
	* dzn/vm/run.scm (run-requires)[event-executed?]: Also return #true for
	PCs with their #:status set.

2022-04-22  Rutger van Beusekom  <rutger@dezyne.org>

	test: livelock_recurse: Remove component.
	* test/all/livelock_recurse/livelock_recurse.dzn (livelock_recurse):
	Remove.  Move recursive function to...
	(ihello): ..here.  Rename to...
	(livelock_recurse): ...this.

2022-04-22  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Also check for livelock in interfaces.
	* dzn/vm/run.scm (livelock?): When simulating an interface, also check
	for livelock.
	(run-silent): New specialization.  Factored-out from...
	* dzn/simulate.scm (check-interface-determinism): ...here.
	(check-interface-livelock): Use it in new procedure.
	* dzn/simulate.scm (run-trail): Use it to check for livelock in
	interface at EOT.
	* test/all/livelock_interface0/baseline/simulate/livelock_interface0:
	Add baseline.

	simulate: Check for livelock in interface at EOT.
	* dzn/simulate.scm (check-interface-determinism)[get-silent-traces]:
	Factor-out from...
	[check-silence]: ...here.
	[check-livelock]: New inner procedure.  Use it to check for livelock.

2022-04-22  Rutger van Beusekom  <rutger@dezyne.org>

	test: queuefull_component1: Rename from livelock_synchronous2.
	* test/all/livelock_synchronous2: Rename to...
	* test/all/queuefull_component1: ...this.

2022-04-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Fix hang looking up interface of port.
	This manifested as a hang when a component or a port has same name as an
	interface.

	Reported by Joran Jessurun <joran.jessurun@ajmail.nl> via IRC.

	* dzn/ast.scm (.type)[port]: Lookup interface in parent scope of
	component-model.  This avoids finding ourselves.
	* dzn/wfc.scm (wfc)[foreign]: Check for re-definition.
	* test/all/parse_duplicate_declaration: Rename to...
	* test/all/parse_duplicate_definition: ...this.  Add foreign and
	component redefinition.
	* test/all/wf_declaredBefore: Rename to...
	* test/all/wf_definedBefore: ...this.

2022-04-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_match.
	* test/all/hello_match: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	simulate: Set event <match-error> before running compliance check.
	* dzn/simulate.scm (run-sut): When an event does not result in any
	traces, set <match-error> before running check-provides-compliance*.
	* test/all/compliance_invalid_action/trace: Change to verification
	trace.
	* test/all/compliance_invalid_action/baseline/simulate: Update baseline.

2022-04-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Do not skip zip for error trace.
	This is a follow-up to commit
	    3e9fa783627056e9c6daf667fa1d293b64b80f10
	    simulate: Fix location for modeling-triggered provides out events.

	* dzn/simulate.scm (check-provides-compliance): Also zip if status is
	set.

2022-04-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_locations.
	* test/all/hello_locations: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

	simulate: Fix location of provides in event.
	* dzn/simulate.scm (zip): Instead of resetting statement, remove
	error-pc from port-trace-prefix.
	* dzn/vm/report.scm (complete-split-arrows-pcs): For <q-out> location,
	make sure to use component <on>.

2022-04-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "DRAFT simulate: Fix location of provides in event."
	This breaks the location of <q-in> events.

	This reverts commit 27271bf182642954def25a7dbb5c79023cda9099.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.15.0.rc1.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.15.0.rc1.

2022-03-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS' and `ANNOUNCE-2.15.0'.
	* NEWS (Language): Mention `blocking' port qualifier.
	(Verification): Remove mention of -B,--no-blocking option.
	(Simultion): Likewise.
	(Views): Mention hiding of returns.
	Documentation): Mention blocking.
	* doc/announce/ANNOUNCE-2.15.0: Update accordingly.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Fix location of provides in event.
	* dzn/simulate.scm (zip): Keep <on> in port trace prefix, so that
	SET-TRIGGER-LOCATIONS can pick-up its location.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Fix location for modeling-triggered provides out events.
	Always zip port traces, not only for provides events.  This has ZIP use
	the actual actions from the port trace (with location), also for
	modeling-triggered out events, rather than synthesizing one.

	* dzn/simulate.scm (zip)[statement-equal?]: Also compare triggers; this
	avoids mistaking the modeling <trigger-return> for an out event
	<trigger-return>.
	(check-provides-compliance): Remove provides-trigger?
	condition for zipping.

2022-03-18  Rutger van Beusekom  <rutger@dezyne.org>

	graph: Enable provides returns in state diagram.
	Removing all returns is a bad idea for blocking: It is essential to see
	when a blocking call returns.  Using --hide=actions or --hide=returns
	now hides all non-valued action returns.

	* dzn/commands/graph.scm (parse-opts): Mention "returns" for --hide.
	(main): Pass #:returns? to...
	* dzn/explore.scm (state-diagram): ...new #:returns? parameter here.
	Likewise, pass it to...
	(lts-remove): ...here, removing non-valued action returns if set.
	(rtc-lts->state-diagram): Do not remove returns.
	* doc/dezyne.texi (Invoking dzn graph): Document it.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Fix two typos in blurb.
	* README: Add missing "is" and "by".  The sentence is still weird.
	* doc/dezyne.texi (Introduction): Likewise.

	test: Add collateral_blocking_multiple_provides2.
	* test/all/collateral_blocking_multiple_provides2: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	graph: Allow blocking enabled events from free provides port.
	* dzn/vm/util.scm (rtc-triggers): New method, factored-out from...
	(rtc-trigger): ...here.
	(pc->string): Cater for non-RTC PCs: Include #:instance, #:statement,
	and rtc-triggers.
	* dzn/explore.scm (run-to-completion**): Update in accordance with ...
	dzn/vm/run.scm (run-to-completion*): ...this.
	(pc->rtc-lts)[collateral?]: Remove new collateral PC
	if already present, even if not at head of list.
	(pc->rtc-lts)[run-label]: Use blocked-on-boundary-collateral-release.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Allow blocking enabled events from free provides port.
	This enables the interleaving of events from a free provides port when a
	system is blocked on a blocking requires port, and collaterally blocking
	on a component that is blocked in such a way.

	* dzn/vm/runtime.scm (runtime:port)[runtime:component]: Change
	specialization to...
	[runtime:instance]: ...this.
	* dzn/vm/util.scm (rtc-labels): Only include <rtc> labels when PC is
	switchable.
	(blocked-on-boundary-entry?): Cater for event #f.
	(blocked-on-boundary-collateral-release, blocked-on-boundary-provides?:
	New methods.
	(collateral-block): Also consider being blocked-on-boundary?.
	* dzn/vm/run.scm (mark-collateral-blocked): Cater for systems with
	multiple provides ports.
	(run-to-completion*): Only block if port is set.  Use
	blocked-on-boundary-provides to determine illegal-trace.
	(run-to-completion*-context-switch): Use
	blocked-on-boundary-collateral-release to release collaterally blocked
	coroutines.
	* dzn/vm/step.scm (begin-step)[runtime-instance]: Also report
	<blocked-error> if boundary port is already engaged.
	* dzn/vm/step.scm (step-action-down): Also collaterally block if
	port is blocked-on-boundary?.
	* dzn/simulate.scm (end-report): Skip refusal check for blocked trace.
	(run-trail): Also consider blocked-on-boundary? for blocked traces.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Refactor to remove #:collateral-blocked?.
	This moves the #:collateral-blocked? state into #:blocked in preparation
	of allowing blocking enabled events from free provides port in system
	context.

	* dzn/vm/goops.scm (<program-counter>): Remove #:collateral-blocked?
	(write): Do not print it.
	* dzn/vm/util.scm (block): New method, factored-out from...
	* dzn/vm/step.scm (step)[block]: ...here.
	* dzn/vm/util.scm (blocked-action): Rename to...
	(blocked-on-action?): ...this.
	(blocked-on-boundary?, blocked-on-boundary-entries,
	blocked-on-boundary-entry?, blocked-on-boundary-statements,
	blocked-on-boundary-reset, blocked-on-boundary-switch-context): New methods.
	(reset-replies): Update accordingly.
	(rtc-program-counter-equal?, pc-equal?): Likewise.
	* dzn/vm/run.scm (mark-collateral-blocked): Update accordingly.
	* dzn/simulate.scm (check-provides-compliance,
	check-provides-compliance+, run-sut, end-report, run-trail): Likewise.
	* dzn/explore.scm (run-to-completion**, pc->rtc-lts): Likewise.
	* test/all/blocking_queuefull,
	test/all/blocking_queuefull_reply: Update labels in baseline.

2022-04-20  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Update blocking; add collateral blocking.
	* doc/dezyne.texi (Ideas and Concepts): Move section up.
	(Execution Semantics): Add multiple provides; update blocking; add
	collateral blocking; process feedback Jos Onokiewicz.
	(Formal Verification): Minor update.
	(Armoring): Add system diagram; process feedback Jos Onokiewicz.
	* doc/semantics/embrace.dzn,
	doc/semantics/embrace2.dzn,
	doc/semantics/ibye.dzn: Remove.
	* doc/semantics/async_multiple_provides.dzn,
	doc/semantics/blocking_multiple_provides.dzn,
	doc/semantics/blocking_requires.dzn,
	doc/semantics/collateral_multiple_provides.dzn,
	doc/semantics/ihello.dzn,
	doc/semantics/ihelloworld.dzn,
	doc/semantics/iworld.dzn,
	doc/semantics/multiple_provides.dzn,
	doc/semantics/mux.dzn: New examples.
	* doc/semantics/block.dzn,
	doc/semantics/collateral.dzn,
	doc/semantics/proxy.dzn: Update naming and blocking annotation.
	* doc/semantics/local.mk (DOCUMENTATION_SEMANTICS): Update accordingly.
	* doc/images/armor.png: Add system diagram.
	* doc/images/async_multiple_provides.png,
	doc/images/block.png,
	doc/images/blocking_multiple_provides.png,
	doc/images/collateral0.png,
	doc/images/collateral1.png,
	doc/images/collateral_multiple_provides.png,
	doc/images/multiple_provides.png: Add sequence diagram.
	* doc/images/local.mk (dist_info_images_DATA): Update accordingly.

	doc: Remove unused semantics examples.
	* doc/semantics/bye.dzn,
	doc/semantics/cancel.dzn: Remove.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	report: Refactor <unknown-file>.
	* dzn/vm/report.scm (location-prefix): Robustify against missinng ast,
	return "<unknown-file>: " when no location present.
	(initial-error-message): Remove "<unknown-file> :" fall-backs.
	(final-error-messages): Likewise.

2022-04-20  Paul Hoogendijk  <paul@dezyne.org>

	wfc: Check for superfluous blocking annotations on ports.
	* dzn/wfc.scm (binding-direction): Check for superfluous blocking.
	(blocking-ports): Likewise.
	* test/all/wf_blocking_port/wf_blocking_port.dzn: Trigger superfluous
	blocking errors.
	* test/all/wf_blocking_port/baseline/verify/wf_blocking_port.stderr:
	Update baseline.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Also zip port trace after earlier occurrence in trace.
	* dzn/simulate.scm (zip): Search for insertion location on non-reversed
	trace, and use next pc to see if merging has occurred.  When
	trace-prefix is empty, check trace-suffix if port-trace-prefix is
	already zipped.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Also synthesize return when occurring earlier in trace.
	When ZIP must synthesize a <trigger-return> for a port in a trace where
	such a return occurs more than once, do so correctly; i.e., do not skip
	second synthesizing because there is already a synthesized return
	present.

	* dzn/simulate.scm (zip): Add PREVIOUS as loop parameter and use it to
	check it for RETURN-PC, instead of using FIND on TRACE.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add blocking_mux.
	* test/all/blocking_mux/blocking_mux.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Do not zip port trace before early return.
	This avoids zipping the port trace at the wrong place for longer traces.

	* dzn/simulate.scm (zip): Also compare instance when finding trace.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Fix instable direction of split-arrow for <trigger-return>.
	This fixes resolving the port of a <trigger-return> in certain cases,
	which in turn fixes the direction in split-arrow output.

	* dzn/vm/ast.scm (.port): Start lookup in parent, like we it is done for
	<trigger>, as a <trigger-return> is created after a <trigger>.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Correctly sythesize returns for collateral block.
	This also accumulates collaterally blocked traces which is needed to
	correctly synthesize a return, while reporting them partially.  For a
	return to be synthesized, the initiating trigger must be present on the
	trace.

	* dzn/misc.scm (split-lists): New procedure.
	* dzn/simulate.scm (run-trail)[split-collateral-trace]: New inner
	method.  Use them to partially report collaterally blocked traces and
	continue with the remainder.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Skip only collateral-blocking trigger in compliance check.
	This raising a compliance error for unfinished blocked traces while
	adding a return for unfinished blocking traces that contain a
	collateral-blocking trigger.

	* dzn/simulate.scm (check-provides-compliance+): Move check for
	rtc-block-trigger into loop, instead of skipping the whole loop when
	there is a rtc-block-trigger.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Use system port in system compliance error.
	* dzn/vm/util.scm (trigger->system-trigger): New method.
	* dzn/simulate.scm (check-provides-compliance): Use it to change
	component port to system port in compliance error.
	* test/all/compliance_system_provides_bool: Update baseline.

	simulate: Cater for compliance error on <trigger-return>.
	* dzn/vm/util.scm (trigger->component-trigger): Remove <trigger> type
	from trigger parameter.

2022-04-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add compliance_failures_blocking_race.
	* test/all/compliance_failures_blocking_race: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add blocking_cancel_race_bool.
	* test/all/blocking_cancel_race_bool/blocking_cancel_race_bool.dzn: New
	test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support valued return for collateral block.
	* dzn/vm/util.scm (return-labels): Always use return values for valued
	return.
	* dzn/vm/run.scm (extend-trace)[mark-pc]: Always use strict matching
	for trigger-return in collateral-blocked pc.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_cancel_race: Add synchronous notify.
	* test/all/blocking_cancel_race/blocking_cancel_race.dzn (iblock): Add
	notify.
	(blocking_cancel_race): Likewise.

	squas! blocking_cancel_race.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Support synchronous out events when collaterally blocked.
	* dzn/explore.scm (pc->rtc-lts): Only run RTC on blocked action.
	* dzn/vm/util.scm (pc->string): Use string representation of
	collateral-blocked? statement.

	simulate: Support synchronous out events when collaterally blocked.
	* dzn/vm/util.scm (pop-collateral-blocked-pc): Retain actual value
	of #:collateral-blocked?.
	(blocked-action?): New procedure.
	* dzn/vm/run.scm (run-to-completion*): Use it to cater for synchronous out events.
	(blocked-action?): New procedure.
	* dzn/vm/util.scm (rtc-event?): New procedure.
	* dzn/vm/run.scm (run-to-completion*-context-switch): Use it to
	determine adding return event to trace.
	(mark-collateral-blocked): Also block on actions.
	Store actual statement in #:collateral-blocked?.
	(filter-compliance-error): New method.
	(run-to-completion*): Return <implicit-illegal-error> for action on
	collateral-blocked port to allow getting filtered-out when valid traces
	are present.
	* dzn/vm/step.scm (step)[end-report]: Before flushing, reset handling.
	* dzn/simulate.scm (labels-filter-blocked-ports): Do not filter-out
	<rtc> events.
	(run-trail): Use it to filter-out compliance errors
	(run-sut): Skip compliance check for blocked action.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid quadratic duplication of blocked traces each event.
	This is a follow-up to commit
	    02275057535ec2eb1898e9ffefe796067d0b0d66
	    simulate: Avoid quadratic duplication of traces with each new event.

	* dzn/simulate.scm (run-trail): Deduplicate valid-traces so that also
	blocked traces are deduplicated.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add blocking_queuefull_reply.
	* test/all/blocking_queuefull_reply: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add collateral_blocking_reply.
	* test/all/collateral_blocking_reply: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	vm: Avoid missing reply error in collateral block context.
	* dzn/vm/util.scm (reset-replies): Do not reset replies if PC is
	.collatral-blocked?.

	test: collateral_blocking_reorder: Remove cul-de-sac.
	* test/all/collateral_blocking_reorder/collateral_blocking_reorder.dzn (proxy_block):
	Remove cul-de-sac.
	* test/all/collateral_blocking_reorder/trace,
	test/all/collateral_blocking_reorder/main.cc,
	test/all/collateral_blocking_reorder/main.cs,
	test/all/multiple_parallel_blocking/trace,
	test/all/multiple_parallel_blocking/main.cc,
	test/all/multiple_parallel_blocking/main.cs: Update accordingly.

2022-04-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: hello_sync_out_reply: Rename from hello_blocking_sync.
	* test/all/hello_blocking_sync: Rename to...
	* test/all/hello_sync_out_reply: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	cs: Allow reply on out event.
	* dzn/templates/code.scm (foreign-event-slot): Move to...
	* dzn/templates/c++.scm (foreign-event-slot): ...here.
	* dzn/templates/cs.scm (foreign-event-slot, foreign-valued-event-slot):
	New templates.
	* dzn/templates/cs/method@on: Make void.  Move return...
	* dzn/templates/cs/event-slot@trigger,
	dzn/templates/cs/valued-event-slot@trigger: ...here.  Add flush.  Move
	qout tracing...
	* runtime/cs/dzn/runtime.cs (call_out): ...here.
	(valued_helper,handle): Move flush...
	(defer): ...here.
	(flush): Reset handling.
	* dzn/templates/cs/flush@trigger,
	dzn/templates/cs/foreign-event-slot@trigger,
	dzn/templates/cs/foreign-reply@bool,
	dzn/templates/cs/foreign-reply@enum,
	dzn/templates/cs/foreign-reply@int,
	dzn/templates/cs/foreign-reply@void,
	dzn/templates/cs/foreign-return@type,
	dzn/templates/cs/foreign-return@void,
	dzn/templates/cs/foreign-valued-event-slot@trigger: New files.

	c++: Allow reply on out event.
	* dzn/code.scm (code:return)[trigger]: New specialization.
	(code:return)[on]: Use it.
	* dzn/templates/c++/declare-method@trigger: Make void.
	* test/all/foreign_reply/c++/Foreign.hh (w_world): Add missing return.
	* test/all/hello_namespace_foreign/c++/library_foreign.cc: Reformat.
	* dzn/templates/c++/methods@on: Move return...
	* dzn/templates/c++/valued-event-slot@trigger: ...here.  Add flush.
	Move qout tracing...
	* runtime/c++/dzn/runtime.hh (call_out): ...here.
	(handle): Move flush...
	* runtime/c++/runtime.cc (runtime::defer): ...here.
	runtime::flush): Reset handling.
	* dzn/templates/c++/flush@trigger,
	dzn/templates/c++/foreign-event-slot@trigger,
	dzn/templates/c++/foreign-reply@bool,
	dzn/templates/c++/foreign-reply@enum,
	dzn/templates/c++/foreign-reply@int,
	dzn/templates/c++/foreign-reply@void,
	dzn/templates/c++/foreign-return@type,
	dzn/templates/c++/foreign-return@void: New files.
	* dzn/templates/c++/header-model@foreign: Use them.
	* dzn/templates/code.scm (foreign-event-slot, flush, foreign-reply,
	foreign-return):New tepmlates.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Release a port only once.
	This fixes graph hanging because of ever longer released ports list.

	* dzn/vm/step.scm (step)[reply]: Only add port to released if it is not
	already present.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: No collateral_block at the bottom.
	* runtime/cs/dzn/runtime.cs (call_out): Remove collateral_block.:
	* test/all/collateral_blocking_reorder/main.cs,
	test/all/multiple_parallel_blocking/main.cs,
	test/all/collateral_blocking_reorder/trace,
	test/all/multiple_parallel_blocking/trace: Update.
	* test/all/collateral_blocking_reorder/META,
	test/all/multiple_parallel_blocking/META: Enable cs.

	c++: No collateral_block at the bottom.
	* runtime/c++/dzn/runtime.hh (call_out): Remove collateral_block.
	* test/all/collateral_blocking_reorder/main.cc,
	test/all/multiple_parallel_blocking/main.cc,
	test/all/collateral_blocking_reorder/trace,
	test/all/multiple_parallel_blocking/trace: Update.
	* test/all/collateral_blocking_reorder/META,
	test/all/multiple_parallel_blocking/META: Enable c++.

	simulate: Do not dispose [queue-full] errors on requires event.
	* dzn/vm/run.scm (run-requires): Only filter for errors, remove special
	treatment for illegals and discarding of errors.
	* test/all/blocking_queuefull/META: Enable simulate.

2022-04-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add blocking_race_async.
	* test/all/blocking_race_async: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add blocking_race.
	* test/all/blocking_race/blocking_race.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Allow blocking enabled races to enter the queue.
	* dzn/explore.scm (run-to-completion**): Return nil for provides trigger
	when .collateral-blocked? and for requires trigger on
	.collateral-blocked?  port.
	* (pc->rtc-lts): Cater for .collateral-blocked? pc.
	* test/all/blocking_cancel_race/META,
	test/all/cancel_guarantee/META,
	test/all/cancel_guarantee2/META,
	test/all/cancel_guarantee3/META,
	test/all/illegal_blocking_race/META: Remove, enabling lts.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Allow blocking enabled races to enter the queue.
	This replaces the previous, deadlocking collateral-blocked
	implementation and enables collateral blocking before the return of a
	blocking requires port to allow modeling events.

	* dzn/simulate.scm (labels-filter-blocked-ports): Do not filter requires
	ports.
	(check-provides-compliance): Cater for .collateral-blocked? trace.
	(run-trail): Likewise.
	(check-provides-compliance+): Likewise.  Cater for return trigger.
	(run-sut): Likewise.  Remove mark-collateral-block.  Skip compliance
	check when .collateral-blocked?, except for error trace.
	(end-report): Likewise, skip refusals check.
	* dzn/vm/ast.scm (ast:blocking?)[runtime-port]: New specialization.
	* dzn/vm/goops.scm (<state>)[collateral-blocked?]: Move field to...
	(<program-counter>): ...here.
	* dzn/vm/goops.scm (write): Print it.
	* dzn/vm/run.scm (mark-collateral-block): Rename to...
	(mark-collateral-blocked): ...this.  Rewrite for usage from extend-trace
	instead of post processing.
	(extend-trace): Use it to interrupt upon <trigger-return> from a
	blocking requires port.
	(run-to-completion*): Return <illegal-error> for provides trigger when
	.collateral-blocked? and for requires trigger on .collateral-blocked?
	port.
	(run-to-completion*-context-switch): Cater for return trigger on
	.collateral-blocked? pc.
	(run-requires): Skip flush for .collateral-blocked? pc.
	* dzn/vm/step.scm (begin-step): Remove collateral-blocked? check.
	(step)[trigger-return]: Reset #:collateral-blocked?.
	* dzn/vm/util.scm (pop-collateral-blocked-pc): New method.
	(return-labels): Include return label for .collateral-blocked? PC.
	*(async-event?): Do not mistake return trigger for async event.  Do not
	filter release-ports when .collateral-blocked?
	(get-collateral-blocked?, reset-collateral-blocked,
	set-collateral-blocked): Remove.
	(serialize-header): Remove .collateral-blocked?.
	(pc->string): Add .collateral-blocked?.
	(rtc-program-counter-equal?): Likewise.
	(pc-equal?): Likewise.
	* test/all/blocking_cancel_race/META,
	test/all/illegal_blocking_race/META: Enable simulate.
	* test/all/illegal_blocking_race: Update trace and baseline.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: No collateral-block at the bottom.
	* dzn/vm/step.scm (step-action-up): Remove collateral-block.
	* test/all/collateral_blocking_reorder/trace,
	test/all/multiple_parallel_blocking/trace: Update.
	* test/all/collateral_blocking_reorder/META,
	test/all/multiple_parallel_blocking/META: Disable c++, cs.

2022-04-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: all/local.mk: Whitespace.
	* test/all/local.mk (REGRESSION_TESTS): Whitespace fixes.

	test: Add blocking_cancel_race.
	* test/all/blocking_cancel_race: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	makreel: Allow blocking enabled races to enter the queue.
	* dzn/templates/makreel.scm (provides-hide),
	dzn/templates/makreel/provides-hide@port: Remove.
	* dzn/templates/makreel/component-allow-requires@port,
	dzn/templates/makreel/component-comm-requires@port,
	dzn/templates/makreel/component-hide-requires@port,
	dzn/templates/makreel/event-act@interface,
	dzn/templates/makreel/event-act@port,
	dzn/templates/makreel/external-proc@port,
	dzn/templates/makreel/interface-action-proc@port,
	dzn/templates/makreel/proc@interface,
	dzn/templates/makreel/provides-allow@port,
	dzn/templates/makreel/queue-allow-requires@port,
	dzn/templates/makreel/semantics-allow-requires@port,
	dzn/templates/makreel/semantics-async-requires@port,
	dzn/templates/makreel/semantics-blocked-rtc-requires@port,
	dzn/templates/makreel/semantics-requires@port,
	dzn/templates/makreel/trigger-name@modeling-event: Remove
	collateral_block, collateral_block'.
	* dzn/templates/makreel/model@component (provides): Remove provides-hide.
	(semantics_provides, semantics_provides_unblocked,
	semantics_provides_unblocked_switch_context): Remove pending
	parameter.
	* test/all/cancel_guarantee,
	test/all/cancel_guarantee2
	test/all/deadlock_cancel_guarantee: Remove.
	* test/all/deadlock_early_embrace: Rename to...
	* test/all/blocking_queuefull: ...this.
	* test/all/deadlock_collateral_embrace: Rename to...
	* test/all/illegal_blocking_race: ...this.  Cater for race.
	* test/all/blocking_queuefull/META: New file.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.
	* test/all/compliance_blocking_double_release,
	test/all/illegal_external_nonsynchronous,
	test/all/livelock_synchronous_illegal,
	test/all/queuefull_external_sync: Update baseline.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add deadlock_early_embrace.
	* test/all/deadlock_early_embrace: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	simulate: Find early collateral embrace deadlock.
	* dzn/vm/step.scm (mark-liveness?): Cater for checking liveness on
	ports.
	* dzn/simulate.scm (event-traces-alist): Update accordingly.
	* dzn/vm/run.scm (mark-collateral-block): Also consider modeling events
	on reuires ports at begin of trace.
	* test/all/semantics/baseline/semantics.org: Update baseline.

2022-04-20  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Allow reply on requires out without blocking.
	* dzn/wfc.scm (reply-in-on): Do not flag error for reply on requires
	trigger.
	* test/all/wf_replyOnOutEvent: Remove test.
	* test/all/local.mk (PARSER_TESTS): Remove it.

	test: Add cancel_guarantee2.
	* test/all/cancel_guarantee2/cancel_guarantee2.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add cancel_guarantee.
	* test/all/cancel_guarantee/cancel_guarantee.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: deadlock_collateral_embrace: Remove compliance error.
	This makes the failure case (deadlock not found) much more noticable.

	* test/all/deadlock_collateral_embrace/deadlock_collateral_embrace.dzn (itransaction):
	Make "complete" event optional.
	* test/all/deadlock_collateral_embrace/baseline/simulate/deadlock_collateral_embrace,
	test/all/deadlock_collateral_embrace/baseline/simulate/deadlock_collateral_embrace.stderr:
	Update baseline.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Remove -B,--no-blocking option.
	* dzn/commands/simulate.scm (parse-opts): Remove -B,--no-blocking option.
	(main): Do not forward #:cancel-guarantee.
	* dzn/simulate.scm (simulate, simulate*): Likewise.  Remove #:cancel-guarantee
	parameter.
	(simulate**): Likewise.  Do not set %cancel-guarantee.
	(run-sut): Do not check it.
	* dzn/vm/step.scm (%cancel-guarantee?): Remove it.
	* doc/dezyne.texi (Invoking dzn simulate): Remove -B,--no-blocking
	option.

	simulate: Consider blocking port qualifier for cancel_guarantee.
	* dzn/vm/run.scm (mark-collateral-block): Use blocking port qualifier.

	doc: Update for blocking port qualifier.
	* doc/dezyne.texi (Ports): Include "blocking" qualifier, and document
	when it must be used.
	* doc/examples/join.dzn,
	doc/parse/nested-blocking.dzn,
	doc/parse/out-binding-reversed.dzn,
	doc/parse/requires-port-reply.dzn,
	doc/semantics/block.dzn,
	doc/semantics/blocking.dzn,
	doc/semantics/collateral.dzn,
	doc/semantics/embrace.dzn,
	doc/semantics/embrace2.dzn,
	doc/semantics/indirect_blocking_multiple_external_out.dzn,
	doc/semantics/indirect_blocking_out.dzn: Annotate blocking port
	qualifier.
	* doc/parse/binding-mismatch-direction.texi,
	doc/parse/binding-mismatch-external.texi: Regenerate.

2022-04-20  Paul Hoogendijk  <paul@dezyne.org>

	test: Add test/all/wf_blocking_port.
	* test/all/wf_blocking_port: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2022-04-20  Paul Hoogendijk  <paul@deyne.org>

	wfc: Check blocking qualifiers for ports and bindings.
	* dzn/wfc.scm (binding-type): Also report binding errors in blocking
	port qualifiers.
	(blocking-ports): New method.
	(wfc)[foreign]: Use it to report errors in blocking port qualifiers.
	[component]: Likewise

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	squash! wfc: Normalize bindings in binding-direction check.

2022-04-20  Paul Hoogendijk  <paul@deyne.org>

	wfc: Normalize bindings in binding-direction check.
	* dzn/ast.scm (ast:normalize): New method.
	* dzn/wfc.scm (binding-direction): Use it to simplify check.
	* test/all/wf_bindingExternals/baseline/verify/wf_bindingExternals.stderr,
	test/all/wf_bindingPortDirection/baseline/verify/wf_bindingPortDirection.stderr:
	Update baseline.

	wfc: Remove dead code.
	* dzn/wfc.scm (wfc)[component-model]: Remove.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Consider blocking port qualifier for cancel_guarantee.
	* dzn/ast.scm (ast:blocking?)[action]: New method.
	* dzn/code/makreel.scm (%cancel-guarantee): Remove.
	(makreel:switch-context): Use blocking aspect of port instead.
	(root->): Do not set it.
	* dzn/commands/verify.scm (parse-opts): Remove -B,--no-blocking option.
	* dzn/templates/makreel/model@component (semantics_provides_unblocked):
	Remove pending parameter.
	* dzn/templates/makreel/semantics-provides-unblocked-switch-context@port,
	dzn/templates/makreel/semantics-provides@port: Update.
	* doc/dezyne.texi (Blocking in system context): Remove mention of
	-B,--no-blocking option.
	(Invoking dzn code): Likewise.
	(Invoking dzn verify): Likewise.

	makreel: Remove obsolete pending parameter.
	* dzn/templates/makreel/model@component (semantics_async,
	semantics_async_ack): Remove unused pending parameter.
	* dzn/templates/makreel/model@component,
	dzn/templates/makreel/semantics-async-flush@port,
	dzn/templates/makreel/semantics-async-qout@port,
	dzn/templates/makreel/semantics-provides-unblocked-replies@port,
	dzn/templates/makreel/semantics-requires@port: Update.

2022-04-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: Annotate blocking on ports.
	* test/all/async_blocking/async_blocking.dzn,
	test/all/blocking-local-state-diagram/blocking-local-state-diagram.dzn,
	test/all/blocking_binding/blocking_binding.dzn,
	test/all/blocking_bottom_system/blocking_bottom_system.dzn,
	test/all/blocking_double_release/blocking_double_release.dzn,
	test/all/blocking_external/blocking_external.dzn,
	test/all/blocking_function_reply/blocking_function_reply.dzn,
	test/all/blocking_if_reply/blocking_if_reply.dzn,
	test/all/blocking_imperative/blocking_imperative.dzn,
	test/all/blocking_local/blocking_local.dzn,
	test/all/blocking_multiple_provides/blocking_multiple_provides.dzn,
	test/all/blocking_multiple_provides0/blocking_multiple_provides0.dzn,
	test/all/blocking_multiple_provides2/blocking_multiple_provides2.dzn,
	test/all/blocking_multiple_provides3/blocking_multiple_provides3.dzn,
	test/all/blocking_normalize/blocking_normalize.dzn,
	test/all/blocking_provides_state/blocking_provides_state.dzn,
	test/all/blocking_release/blocking_release.dzn,
	test/all/blocking_requires/blocking_requires.dzn,
	test/all/blocking_requires_normalize/blocking_requires_normalize.dzn,
	test/all/blocking_shell/blocking_shell.dzn,
	test/all/blocking_system/blocking_system.dzn,
	test/all/blocking_system2/blocking_system2.dzn,
	test/all/blocking_system3/blocking_system3.dzn,
	test/all/blocking_system4/blocking_system4.dzn,
	test/all/blocking_system_diamond/blocking_system_diamond.dzn,
	test/all/collateral_blocking_backdoor/collateral_blocking_backdoor.dzn,
	test/all/collateral_blocking_bridges/collateral_blocking_bridges.dzn,
	test/all/collateral_blocking_double_release/collateral_blocking_double_release.dzn,
	test/all/collateral_blocking_multiple_provides/collateral_blocking_multiple_provides.dzn,
	test/all/collateral_blocking_release/collateral_blocking_release.dzn,
	test/all/collateral_blocking_reorder/collateral_blocking_reorder.dzn,
	test/all/collateral_blocking_reorder_bypass/collateral_blocking_reorder_bypass.dzn,
	test/all/collateral_blocking_shell/collateral_blocking_shell.dzn,
	test/all/collateral_blocking_shell2/collateral_blocking_shell2.dzn,
	test/all/collateral_blocking_top/collateral_blocking_top.dzn,
	test/all/collateral_double_blocked/collateral_double_blocked.dzn,
	test/all/collateral_double_blocked_out/collateral_double_blocked_out.dzn,
	test/all/compliance_blocking_double_release/compliance_blocking_double_release.dzn,
	test/all/compliance_blocking_multiple_provides/compliance_blocking_multiple_provides.dzn,
	test/all/compliance_blocking_out/compliance_blocking_out.dzn,
	test/all/compliance_failures_blocking/compliance_failures_blocking.dzn,
	test/all/deadlock_blocking_compliance/deadlock_blocking_compliance.dzn,
	test/all/deadlock_blocking_flush/deadlock_blocking_flush.dzn,
	test/all/deadlock_blocking_guard/deadlock_blocking_guard.dzn,
	test/all/deadlock_blocking_inevitable/deadlock_blocking_inevitable.dzn,
	test/all/deadlock_blocking_optional/deadlock_blocking_optional.dzn,
	test/all/deadlock_blocking_replies/deadlock_blocking_replies.dzn,
	test/all/deadlock_cancel_guarantee/deadlock_cancel_guarantee.dzn,
	test/all/deadlock_collateral_embrace/deadlock_collateral_embrace.dzn,
	test/all/deadlock_port_blocked/deadlock_port_blocked.dzn,
	test/all/double_collateral_blocking_shell/double_collateral_blocking_shell.dzn,
	test/all/double_hello_block/double_hello_block.dzn,
	test/all/hello_block/hello_block.dzn,
	test/all/hello_blocking_asynchronous_sync_out/hello_blocking_asynchronous_sync_out.dzn,
	test/all/hello_blocking_external/hello_blocking_external.dzn,
	test/all/hello_blocking_multiple_out/hello_blocking_multiple_out.dzn,
	test/all/hello_blocking_sync/hello_blocking_sync.dzn,
	test/all/hello_inevitable_blocking_sync_out/hello_inevitable_blocking_sync_out.dzn,
	test/all/indirect_blocking_multiple_external_out/indirect_blocking_multiple_external_out.dzn,
	test/all/indirect_blocking_out/indirect_blocking_out.dzn,
	test/all/multiple_parallel_blocking/multiple_parallel_blocking.dzn,
	test/all/parse_out_binding/parse_out_binding.dzn,
	test/all/second_reply_blocking/second_reply_blocking.dzn,
	test/all/wf_blockingInblocking/wf_blockingInblocking.dzn,
	test/all/wf_blockingReply/wf_blockingReply.dzn,
	test/all/wf_foreign_conflict/wf_foreign_conflict.dzn: Annotate blocking
	on port.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	complete: Cater for blocking on port.
	* dzn/parse/complete.scm (complete:root): Suggest "blocking" if
	applicable.
	* test/dzn/language.scm ("component-requires requires"):
	("component-requires external"),
	("component-requires injected"),
	("component-requires external injected"),
	("component-requires injected external"),
	("import requires"): Update expectiation.

	peg: Support blocking qualifier on port.
	* dzn/parse/peg.scm (peg:parse): Parse "blocking" as qualifier on port.
	* dzn/goops.scm (<port>)[blocking?]: New field.
	* dzn/parse/ast.scm (parse-tree->ast): Set it according to parse tree.
	* dzn/ast.scm (ast:blocking?): Use it in new method.

	makreel: Remove dead code.
	* dzn/code/makreel.scm (ast:blocking?, ast:provides-blocking?,
	ast:requires-blocking?): Remove.

	goops: Use #:external? and #:injected?.
	* dzn/goops.scm (<port>)[external]: Rename to...
	[external?]: ...this.
	[injected]: Rename to...
	[injected?]: ..this.
	* dzn/parse/ast.scm (parse-tree->ast): Update accordingly.
	* dzn/ast.scm (ast:external?, ast:injected?): Likewise.
	* dzn/code/dzn.scm (dzn:external, dzn:injected): Likewise.
	* dzn/templates/cs.scm (required-port-init): Likewise.
	* dzn/vm/runtime.scm (runtime:create-instances): Likewise.
	* dzn/wfc.scm (wfc)[port],
	(binding-direction, missing-bindings): Likewise.

2022-04-20  Jan (janneke) Nieuwenhuien  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Find collateral embrace deadlock present in trace.
	* dzn/vm/step.scm (mark-liveness?): Allow liveness check for port
	instance too.
	* dzn/vm/util.scm (mark-collateral-block): Move to...
	* dzn/vm/run.scm (mark-collateral-block): ...here.  Walk through trace
	to also find collateral embrace deadlock already present in trace.  Also
	consider dynamic aspect of port willing to fire modeling event.
	(run-external-modeling): Disable %liveness.
	* test/all/deadlock_collateral_embrace/baseline/simulate/deadlock_collateral_embrace,
	test/all/deadlock_collateral_embrace/baseline/simulate/deadlock_collateral_embrace.stderr,
	test/all/semantics/baseline/semantics.org: Update baseline.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Fix typo.
	* doc/dezyne.texi (Blocking in system context): Typo.

2022-04-20  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add queue_size_four.
	* test/all/queue_size_four/queue_size_four.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add queue size to dzn traces.
	* test/dzn/dzn.scm (run-traces): Pass --queue-size.

	test: Support queue size.
	* test/dzn/dzn.scm (queue-size): New META accessor.
	(run-verify): Use here
	(run-simulate-trace): here
	(run-lts): and here.

2022-04-20  Paul Hoogendijk  <paul@dezyne.org>

	vm: Avoid false livelock due to queuing of events.
	* dzn/vm/util.scm (serialize): Also serialize queue.

	* test/all/livelock_synchronous2/baseline/simulate/livelock_synchronous2,
	test/all/queuefull_component0/baseline/simulate/queuefull_component0:
	Update baseline.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Retain correct TOs when collapsing transitions.
	* dzn/explore.scm (rtc-lts->state-diagram): Also re-calulate TOs after
	deleting duplicate traces.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Do not merge plain and collaterally released nodes in LTS.
	This is a follow-up to commit
	    1012a16d6e684bc8904b4468e0a96813c034857a
	    graph: Do not merge plain and collaterally released nodes in LTS.

	* dzn/explore.scm (pc->rtc-lts): Use actual from-pc in pc+traces,
	instead of pc with #:collateral-instance reset.  Also start all traces
	with from-pc.
	(lts-remove)[remove-state]: Do not remove #:blocked, #:collateral,
	and #:released from pc.
	* test/all/blocking-local-state-diagram/baseline/default.dot: Update baseline.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Skip compliance check at EOT for blocked trace.
	This fixes simulating doc/examples/blocking.dzn.

	* dzn/simulate.scm (run-sut): At end of trace, skip compliance check for
	blocked pc.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Fix for --no-compliance: allow empty port traces.
	This is a follow-up to commit
	    aa042c9e16f99e27849943d959d1ca579149815b
	    simulate: Add -C,--no-compliance option.

	* dzn/simulate.scm (check-provides-compliance): Also skip compliance
	error when there are no port traces.

2022-04-20  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Also switch-context for valued events.
	This is a follow-up to commit
	    af60d8c02d005a97d09a5fdd3895f26ea0dafc46
	    makreel: Find deadly embraced collaterally blocked coroutines.

	* dzn/templates/makreel/proc-assign@action: Add #x:switch-context.

2022-04-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.15.0.rc0.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.15.0.rc0.

2022-01-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Add ANNOUNCE-2.15.0.
	* doc/announce/ANNOUNCE-2.15.0: New file.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.15.0 since 2.14.0): New section.

2022-01-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	doc: Update `ROADMAP'.
	* ROADMAP: Fix typo.
	(Release 2.15): Mention failing of Alarm lts.  Remove alpha_local2,
	compound_local_assign_call.  Move done items...
	(DONE): ...here.
	(Release 2.15): Move wip-stitch...
	(Release 2.17): ...here.  Move defer to...
	(Release 2.18): ...here.
	(Release 3.0): Move module specification to...
	(Release 2.19): ...here.

2022-03-18  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Describe collateral blocking.
	* doc/dezyne.texi (Blocking in system context): New section.
	* doc/semantics/block.dzn,
	doc/semantics/blocking.dzn,
	doc/semantics/bye.dzn,
	doc/semantics/cancel.dzn,
	doc/semantics/collateral.dzn,
	doc/semantics/embrace.dzn,
	doc/semantics/embrace2.dzn,
	doc/semantics/iblock.dzn,
	doc/semantics/ibye.dzn,
	doc/semantics/ihello.dzn,
	doc/semantics/proxy.dzn: New files.
	* doc/semantics/local.mk (DOCUMENTATION_SEMANTICS): Add them.

	test: Add deadlock_collateral_embrace.
	* test/all/deadlock_collateral_embrace: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-03-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Add -C,--no-compliance option.
	* dzn/commands/simulate.scm (parse-opts): Add -C,--no-compliance option.
	(main): Pass it to...
	* dzn/simulate.scm (simulate): ...new #:compliance-check? parameter
	here.  Likewise, pass it to...
	(simulate*): ...new #:compliance-check? parameter here.  Likewies, pass
	it to...
	(simulate**): ...new #:compliance-check? parameter here.  Use it to
	set...
	(%compliance-check?): ...this new parameter.
	(compliance-check): Do not report compliance errors unless
	%compliance-check is set.
	* doc/dezyne.texi (Invoking dzn simulate): Document it.

	simulate: Refactor deadlock-report.
	* dzn/simulate.scm (end-report)[deadlock-report]: Nemove status juggling.

	simulate: Do not use <end-of-trail> for plain end.
	* dzn/simulate.scm (run-sut): Do not set <end-of-trail> when there is no
	event.
	(run-trail): Stop when there is no async pending, and no event.

2022-03-14  Rutger van Beusekom  <rutger@dezyne.org>

	test: blocking_requires: Canonicalize.
	* test/all/blocking_requires/blocking_requires.dzn: Use canonical names.

2022-03-15  Rutger van Beusekom  <rutger@dezyne.org>

	test: Camera: Update for cancel guarantee.
	* test/all/Camera/Camera.dzn (Driver): Reorder acquisition and optics
	actions to avoid collateral deadlock.

2022-03-14  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add requires_twice.
	* test/all/requires_twice: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-03-15  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add deadlock_cancel_guarantee.
	* test/all/deadlock_cancel_guarantee: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-03-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Support cancel guarantee for collateral block.
	* dzn/vm/goops.scm (<state>)[collateral-blocked?]: New field.
	* dzn/vm/step.scm (begin-step): When set and not running a modeling
	event, raise <blocked-error>.
	* dzn/vm/util.scm (get-collateral-blocked?, mark-collateral-block,
	reset-collateral-blocked?, set-collateral-blocked?): New methods.
	(serialize)[state]: Refactor to use...
	(serialize)[state, port]: ...this.  Include collateral-blocked.
	* dzn/commands/simulate.scm (parse-opts): Add -B,--no-blocking option.
	(main): Pass it to...
	* dzn/simulate.scm (simulate): ...new #:cancel-guarantee? parameter
	here.  Likewise, pass it to...
	(simulate*): ...new #:cancel-guarantee? parameter here.  Likewise,
	pass it to...
	(simulate**):  ...new #:cancel-guarantee? parameter here.  Use it to set
	%cancel-guarantee? parameter.
	(run-sut): Use it to enable collateral blocking cancel guarantee.
	* dzn/vm/step.scm (%cancel-guarantee?): New parameter.
	* doc/dezyne.texi (Invoking dzn simulate): Document it.

2022-03-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Remove duplicated port accessor methods.
	* dzn/ast.scm (ast:requires-port*)[port]: New specialization.
	(ast:required+async): Rename to...
	(ast:requires+async-port*): ...this.  Update callers.
	* dzn/code/makreel.scm (ast:async-ports, ast:provides-ports,
	ast:requires-ports, ast:requires+async-ports): Remove.  Update callers
	to use ast:--port* variants.
	* dzn/templates/makreel.scm: Update callers.
	* dzn/verify/pipeline.scm (component-taus): Update caller.

2022-03-09  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Find deadly embraced collaterally blocked coroutines.
	Report the possibility of deadlock due to collateral blocking as a
	result of a blocked action on another port and a semicolon prioritized
	interaction with the collaterally blocked port.

	* dzn/ast.scm (ast:requires?)[action]: New specification.
	* dzn/commands/code.scm (parse-opts): Add -B,--no-blocking flag.
	* dzn/commands/verify.scm (parse-opts): Likewise.
	* doc/dezyne.texi (Invoking dzn code): Document it.
	(Invoking dzn verify): Likewise.
	(%cancel-guarantee?): New parameter.
	* dzn/code/makreel.scm (root->): Initialize it.
	(makreel:switch-context): Use it in new method.
	* dzn/templates/makreel.scm (requires-port-construct, switch-context,
	semantics-provides-unblocked-modeling,
	semantics-provides-unblocked-switch-context,
	semantics-provides-blocking-requires, provides-hide): New templates.
	* dzn/templates/makreel/model@component (requires_ports): New sort.
	(interface_behavior): Add collateral_block after modeling event.
	(component_behavior): Add switch_context after requires out action.
	(semantics_provides_unblocked): Add pending, switch parameters.
	Allow modeling event on other requires ports after requires port action,
	because it can possibly collaterally block.
	(semantics_provides_blocking, semantics_provides_skip_blocked,
	semantics_provides_blocked, semantics_async): Allow switch_context.
	* dzn/templates/makreel/component-allow-requires@port,
	dzn/templates/makreel/component-comm-requires@port,
	dzn/templates/makreel/component-hide-requires@port,
	dzn/templates/makreel/event-act@interface,
	dzn/templates/makreel/event-act@port,
	dzn/templates/makreel/external-proc@port,
	dzn/templates/makreel/interface-action-proc@port,
	dzn/templates/makreel/proc@action,
	dzn/templates/makreel/proc@interface,
	dzn/templates/makreel/provides-allow@port,
	dzn/templates/makreel/queue-allow-requires@port,
	dzn/templates/makreel/semantics-allow-requires@port,
	dzn/templates/makreel/semantics-async-requires@port,
	dzn/templates/makreel/semantics-blocked-rtc-requires@port,
	dzn/templates/makreel/semantics-comm-requires@port,
	dzn/templates/makreel/semantics-provides-blocked-requires@port,
	dzn/templates/makreel/semantics-provides-skip-blocked-requires@port,
	dzn/templates/makreel/semantics-provides-unblocked@port,
	dzn/templates/makreel/semantics-provides@port,
	dzn/templates/makreel/semantics-rename-requires@port,
	dzn/templates/makreel/semantics-requires@port,
	dzn/templates/makreel/trigger-name@modeling-event: Update.
	* dzn/templates/makreel/provides-hide@port,
	dzn/templates/makreel/requires-port-construct@port,
	dzn/templates/makreel/semantics-provides-blocking-requires@port,
	dzn/templates/makreel/semantics-provides-unblocked-modeling@port,
	dzn/templates/makreel/semantics-provides-unblocked-switch-context@port,
	dzn/templates/makreel/switch-context@action: New files.

2022-03-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: examples/simple-state-machine: Avoid cancel guarantee deadlock.
	* doc/examples/simple-state-machine.dzn (simple_state_machine): Reverse
	order of "r1.hello" and "r2.hello".

2022-03-14  Rutger van Beusekom  <rutger@dezyne.org>

	collateral_blocking_reorder: Ignore out-event due to blocked action.
	This prepares for cancel guarantee.

	* test/all/collateral_blocking_reorder/collateral_blocking_reorder.dzn (proxy_block):
	Skip e.world when idle.

2022-03-09  Paul Hoogendijk  <paul@dezyne.org>

	test: Add collateral_blocking_reorder_bypass.
	* test/all/collateral_blocking_reorder_bypass: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-03-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_double_blocked_out: Enable lts, simulate.
	* test/all/collateral_double_blocked_out/META: Remove "lts", "simulate"
	from "skip".

2022-03-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid false-positive provides fork for blocking
	* dzn/simulate.scm (check-provides-fork): Check for initial provides
	trigger.

2022-03-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_fork_provides: Remove compliance failure.
	* test/all/compliance_fork_provides/compliance_fork_provides.dzn (compliance_fork_provides):
	Remove compliance failure.
	* test/all/compliance_fork_provides/trace,
	test/all/compliance_fork_provides/baseline/verify/compliance_fork_provides,
	test/all/compliance_fork_provides/baseline/simulate/compliance_fork_provides:
	Update accordingly.

	simulate: Remove compliance provides fork check at EOT.
	* dzn/simulate.scm (end-report)[trace-check-provides-fork,
	component-check-provides-fork]: Remove inner defines.
	(rtc-lts-node->traces, rtc-lts->traces): Remove.

2022-03-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "simulate: Speed-up provides-fork check."
	This reverts commit cd207436cdc84eec55492edea0d36b6fd4d0d7bd.

	The speed-up is nice, but it appears the check can be removed
	altogether.

2022-03-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Speed-up provides-fork check.
	This decreases the provides fork check time for collateral_blocking_double_release
	from 2'30" to 25"...still pretty slow.

	From the partial refusals LTS, rtc-lts->traces generates 330 distinct
	traces, without delete-duplicates we get 47,238 traces (in only 14").

	* dzn/vm/report.scm (trace->string-trail): Rename to...
	(trace->string-trail-unmemoized):
	(trace->string-trail): New memoizing procedure.
	* dzn/simulate.scm (rtc-lts->traces): Use lset-adjoin instead of append
	and delete-duplicates.

2022-02-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	state-diagram: Nicer blocked labels.
	* dzn/vm/util.scm (pc->string-state-diagram): Add blocking, collateral
	prefixes.

2022-02-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Include modeling events in LTS.
	* dzn/explore.scm (rtc-lts->lts): Set %modeling? when generating trace.
	* dzn/vm/report.scm (pc-event?)[runtime:port,trigger]: Always modeling
	events when %modeling? is set.
	(pc->event)[runtime:port,initial-compound, trigger]: Cater for modeling
	event with port.
	* test/dzn/dzn.scm (run-lts): Refactor.  Include modeling events in
	taus.

2022-02-22  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Also hash blocking prefix locations.
	This fixes the deadlock_collateral_blocking LTS.

	* dzn/vm/report.scm (location-prefix): New method.
	(initial-error-message): Use it.
	(step->location): Move to...
	* dzn/ast.scm (ast:location->string): ...here.
	* dzn/vm/step.scm (step)[reply]: Update accordingly.
	* dzn/vm/util.scm (rtc-pc): Cleanup.
	(pc->statements): New method.
	(pc->string): Use it to include blocking locations.

2022-02-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Fix locations of synthesized elements.
	* dzn/vm/normalize.scm (normalize-compounds): Use location instead of ast.
	(transform-end-of-on): Likewise.

	test: Add collateral_blocking_double_release.
	* test/all/collateral_blocking_double_release: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-02-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add collateral_blocking_top.
	* test/all/collateral_blocking_top: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-02-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add double_hello_block.
	* test/all/double_hello_block: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add blocking_release.
	* test/all/blocking_release/blocking_release.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-02-15  Paul Hoogendijk  <paul@dezyne.org>

	test: Add compliance_blocking_double_release
	* test/all/compliance_blocking_double_release: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-02-15  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add compliance_blocking_multiple_provides.
	* test/all/compliance_blocking_multiple_provides: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-02-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add collateral_blocking_release.
	* test/all/collateral_blocking_release: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-02-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Enable traces, lts in META for collateral blocking tests.
	* test/all/blocking_double_release/META,
	test/all/blocking_multiple_provides/META,
	test/all/blocking_multiple_provides2/META,
	test/all/blocking_multiple_provides3/META,
	test/all/blocking_system_diamond/META,
	test/all/collateral_blocking_backdoor/META,
	test/all/collateral_blocking_multiple_provides/META,
	test/all/collateral_blocking_reorder/META,
	test/all/collateral_blocking_shell/META,
	test/all/collateral_blocking_shell2/META,
	test/all/double_collateral_blocking_shell/META,
	test/all/multiple_parallel_blocking/META: Remove "traces", "lts".

2022-03-21  Paul Hoogendijk  <paul@dezyne.org>

	traces: End in node that is receptive for all provides ports.
	* dzn/lts.scm (generate-trace): New parameter provides-ports.
	(idle-node?): Does node receive a provides-in event for all provides
	ports?
	(allowed-end?): Use idle-node?
	* dzn/commands/traces.scm: Pass provides ports to lts->traces.

2022-02-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Allow port.return as eligible event.
	* dzn/ast.scm (ast:return-values)[event]: Parameterize void value.
	(ast:return-values)[port]: New specialization.
	* dzn/vm/run.scm (%strict?): Move to...
	* dzn/vm/util.scm (%strict?): ...here.
	(rtc-labels, return-labels, blocked-port, blocked-ports): New methods.
	(labels)[pc]: New specialization.
	* dzn/simulate.scm (event-traces-alist): Cater for context switch.  Also
	add return labels.
	(labels-filter-blocked-ports): Do not filter-out return triggers for
	blocked ports.
	* test/all/second_reply_blocking/baseline/simulate/second_reply_blocking:
	Update baseline.

2022-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support multiple provides RTC events.
	* dzn/vm/run.scm (run-to-completion-unmemoized): Possibly postpone
	context switch when simulating too.
	(run-to-completion*): Do not reset instance.
	(run-to-completion*-context-switch): New method.
	* dzn/simulate.scm (run-sut): Use it.  Do not reset instance.  At end of
	trail, run 'rtc if applicable.
	(event-traces-alist): Update accordingly.
	* dzn/vm/util.scm (return-trigger?): New method.

	simulate: Cater for multiple provides RTC events in compliance check.
	* dzn/simulate.scm (check-provides-compliance): Drop prefix of trace
	until last occurrence trigger.

2022-02-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Do not merge plain and collaterally released nodes in LTS.
	* dzn/vm/goops.scm (<program-counter>)[collateral-instance]: New field.
	* dzn/vm/util.scm (switch-context): Set it after collateral release.
	(pc->string): Include it.
	* dzn/vm/step.scm (step)[block]: Forward it to new pc.
	* dzn/explore.scm (pc->rtc-lts): Reset it before new run.

2022-03-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_double_blocked: Enable lts, simulate.
	* test/all/collateral_double_blocked/META: Remove "lts", "simulate" from
	"skip".

2022-02-15  Rutger van Beusekom  <rutger@dezyne.org>

	graph: Support multiple provides RTC events.
	* dzn/vm/runtime.scm (runtime:runtime-provides-port*): New method.
	* dzn/vm/run.scm (run-to-completion-unmemoized)[previous-provides?,
	must-switch?]: New inner defines.  Use them to postpone context switch
	to enable provides api loop.
	(run-to-completion-unmemoized): Cater for 'rtc event.
	(run-to-completion): Likewise.
	* dzn/explore.scm (pc->rtc-lts)[run-label]: New inner define.  Use it to
	cater for running 'rtc event.:

2022-02-17  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Parameterize %debug.
	This fixes the debug printing in compiled modules with Guile 3.0.

	* dzn/vm/util.scm (%debug?): Change to parameter.
	(%debug): Update accordingly.
	* dzn/simulate.scm (simulate*): Likewise.
	* dzn/explore.scm (pc->modeling-lts, lts->aut, state-diagram): Likewise.
	:

2022-02-16  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Support reply value per blocked port.
	* dzn/vm/goops.scm (<state>)[reply]: Change to an alist indexed by port
	name.
	(write): Update accordingly.
	* dzn/vm/step.scm (begin-step): Likewise.
	(step)[reply]: Likewise.
	* dzn/vm/util.scm (get-reply, reset-replies): Likewise.
	(assign): Likewise.
	(reset-reply): New method.

2022-02-14  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Allow semicolon separated multiple provides interaction.
	Give priority of semicolon separated multiple provides events over
	run to completion of released ports.

	* dzn/templates/makreel/model@component (list2set, remove_port): New map, eqn.
	(semantics_provides_blocking, semantics_reply): Make released
	parameter a List.
	(semantics_provides_blocked): Likewise.  Use it to release head of
	released first.
	* dzn/templates/makreel/semantics-blocked-rtc-requires@port,
	dzn/templates/makreel/semantics-port-in-released-or@port,
	dzn/templates/makreel/semantics-provides-blocked-ports@port,
	dzn/templates/makreel/semantics-provides-blocked-replies@port,
	dzn/templates/makreel/semantics-provides-blocking-provides@port,
	dzn/templates/makreel/semantics-provides-skip-blocked-replies@port,
	dzn/templates/makreel/semantics-provides-unblocked-replies@port,
	dzn/templates/makreel/semantics-provides-unblocked@port,
	dzn/templates/makreel/semantics-reply@port,
	dzn/templates/makreel/semantics-requires@port: Update.

2022-02-11  Rutger van Beusekom  <rutger@dezyne.org>

	makreel: Prioritize run to completion for last provides event.
	This prioritizes the run to completion of the running provides event
	over any other released multiple provides events.

	* dzn/templates/makreel/model@component (semantics_provides_blocked): Add rtc parameter.
	(semantics_blocked_rtc): Likewise.  Set it to provides port after event occurred.
	(semantics_reply): Likewise.  Guard reordered reply with rtc port.
	* dzn/templates/makreel/semantics-async-qout@port,
	dzn/templates/makreel/semantics-blocked-rtc-provides@port,
	dzn/templates/makreel/semantics-blocked-rtc-requires@port,
	dzn/templates/makreel/semantics-provides-blocked-ports@port,
	dzn/templates/makreel/semantics-provides-blocked-replies@port,
	dzn/templates/makreel/semantics-provides-unblocked-replies@port,
	dzn/templates/makreel/semantics-reply@port,
	dzn/templates/makreel/semantics-requires@port: Update.

2022-02-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Do not merge distinct collaterally blocked nodes in LTS.
	* dzn/vm/util.scm (pc->string): Include all collaterally blocked
	instances.

2022-02-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Do not merge distinct blocked nodes in LTS.
	This fixes the LTS of test/all/blocked_system.

	* dzn/vm/util.scm (pc->string): Include all blocked triggers.

2022-01-27  Paul Hoogendijk  <paul@dezyne.org>

	test: blocking_system_diamond: Canonicalize, add trace and main.
	* test/all/blocking_system_diamond/blocking_system_diamond.dzn: Use
	canonical names.
	* test/all/blocking_system_diamond/META,
	test/all/blocking_system_diamond/main.cc,
	test/all/blocking_system_diamond/main.cs,
	test/all/blocking_system_diamond/trace: New files.

	test: Add test blocking_system_diamond.
	* test/all/blocking_system_diamond: New test.

2022-03-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_blocking_bridges: Enable lts.
	* test/all/collateral_blocking_bridges/META: Remove "lts" from "skip".

2022-02-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Detect collateral block on boundary.
	This is a follow-up to commit
	    8d2b49ed096c4093633569d08c981463da481d40
	    simulate: Implement collateral block.

	That commit only considers collaterally blocking for actions, a boundary
	component is first entered in begin-step instead.

	* dzn/vm/step.scm (begin-step): Set <blocked-error> if instance is
	collaterally blocked.

2022-01-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_blocking_reorder: Add proxy.
	A component that blocks collaterally at the edge of a system is not
	observable in the trace.  Only once it is released, the first event of
	the trace is printed.

	By adding a proxy between the edge of the system and the collaterally
	blocking component, the collaterally blocking thread is observable when
	it starts running.

	* test/all/collateral_blocking_reorder/collateral_blocking_reorder.dzn
	(proxy_release): New component.
	(Block): Rename to...
	(blocked): ...this.
	(collateral_blocking_reorder): Update accordingly and add proxy_release.
	* test/all/collateral_blocking_reorder/trace,
	test/all/multiple_parallel_blocking/trace: Update accordingly.

2022-01-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_shell: Canonicalize.
	* test/all/blocking_shell/blocking_shell.dzn: Use canonical names.
	* test/all/blocking_shell/trace.0,
	test/all/blocking_shell/trace.1,
	test/all/blocking_shell/trace.2: Update.

2022-01-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_blocking_multiple_provides: Add proxies.
	A component that blocks collaterally at the edge of a system is not
	observable in the trace.  Only once it is released, the first event of
	the trace is printed.

	By adding a proxy between the edge of the system and the collaterally
	blocking component, the collaterally blocking thread is observable when
	it starts running.

	* test/all/collateral_blocking_multiple_provides/collateral_blocking_multiple_provides.dzn
	(proxy_left, proxy_right): New components.
	(collateral_blocking_multiple_provides): Add them.

2022-01-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_blocking_bridges: Add proxy.
	A component that blocks collaterally at the edge of a system is not
	observable in the trace.  Only once it is released, the first event of
	the trace is printed.

	By adding a proxy between the edge of the system and the collaterally
	blocking component, the collaterally blocking thread is observable when
	it starts running.

	* test/all/collateral_blocking_bridges/collateral_blocking_bridges.dzn
	(top_proxy): New component.
	(collateral_blocking_bridges): Add it below top.
	* test/all/collateral_blocking_bridges/trace: Rename to...
	* test/all/collateral_blocking_bridges/trace2: ...this.
	* test/all/collateral_blocking_bridges/trace,
	* test/all/collateral_blocking_bridges/trace1: New files.
	* test/all/collateral_blocking_bridges/main.cc: Cater for all traces.
	* test/all/collateral_blocking_bridges/main.cs: Likewise.

2022-01-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add collateral_blocking_backdoor.
	This shows the need for implementing collateral block in the simulator.

	* test/all/collateral_blocking_backdoor: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-02-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Add collateral-released list.
	* dzn/vm/goops.scm (<program-counter>)[collateral-released]: New field.
	* dzn/vm/goops.scm (write): Use it.
	* dzn/vm/step.scm (step)[block]: Also copy collateral-released.
	* dzn/vm/step.scm (step)[trigger-return]: After releasing a blocked pc,
	move releasing port to collateral-released if collateral needs releasing
	with this port.
	* dzn/vm/util.scm (switch-context): Use collateral-released to release
	a collaterally blocked pc.

2022-03-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Do not release a blocked PC with a next blocking event.
	* dzn/vm/step.scm (step)[reply]: Only release if ports are identical, or
	port is requires.

2022-01-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Implement collateral block.
	When attempting to perforing an action on a blocked component, the
	current coroutine blocks collaterally.

	* dzn/vm/goops.scm (<program-counter>)[collateral]: New field.
	(write): Show it.
	* dzn/vm/step.scm (step-action-down): If other component is blocked,
	block collaterally.
	(step-action-up): Likewise.
	(step)[block]: In the skip-block case, remove only the current port
	from #:released.  When blocking, also pass #:collateral and #:released
	fields.
	(step)[trigger-return]: Release blocked port.
	* dzn/vm/util.scm (pc->string): Add #:collateral.
	(pc->string-state-diagram): Likewise.
	(rtc-program-counter-equal?): Also compare #:collateral and #:released.
	(pc-equal?): Likewise.
	(ast:equal?)[program-counter program-counter]: New specialization.
	(get-handling): Avoid get-state without instance.
	* dzn/vm/run.scm (extend-trace)[blocked-collaterally?]: New inner
	define.  Use it to remove collaterally-blocked action from trace.
	* dzn/explore.scm (pc->rtc-lts)[collateral?]: New inner define.
	[run-labels]: Use it in new inner define to remove gratuitously added
	collaterally blocked coroutines.
	(lts-remove)[remove-state]: Also reset #:collateral and #:released.
	* dzn/simulate.scm (check-provides-compliance): Cater for collateral
	block.
	(check-provides-compliance+): Likewise.
	* dzn/vm/util.scm (rtc-block-pc, rtc-block-trigger): New methods.
	(rtc-trigger): Avoid last on empty list.
	* dzn/explore.scm (pc->rtc-lts)[collateral?, run-labels]: New inner
	defines.  Use them to cater for collateral block.

2022-01-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Add debugging for livelock.
	* dzn/vm/run.scm (livelock?): Show livelock detection.

2022-01-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Set handling to coroutine-id.
	A program-counter stored in the #:blocked list models a blocked
	coroutine.  The id of the coroutine is needed to implement collateral
	blocking.

	* dzn/vm/goops.scm (<state>)[handling?]: Rename field to...
	[handling]: ...this.
	* dzn/vm/util.scm (get-handling?): Rename to...
	(get-handling): ...this.
	(set-handling?): Rename to...
	(set-handling!): ...this.  Remove parameter; set handling to current
	coroutine-id.
	(reset-handling!): New method.
	(flush): Update accordingly.
	* dzn/vm/step.scm (begin-step): Likewise.
	(step)[block]: Likewise.
	[end-of-on]: Likewise.

2022-01-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Add coroutine-id to program-counter.
	* dzn/vm/goops.scm (<program-counter>)[id]: New field.
	(pc:next-id): New generator function.
	* dzn/vm/step.scm (step)[block]: Use it.
	* dzn/vm/util.scm (make-pc): Use it.
	(switch-context): Update #:id field.

2022-01-25  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add blocking_double_release.
	* test/all/blocking_double_release: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-01-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Support multiple release.
	* runtime/cs/dzn/pump.cs (pump.unblocked]: Change to List.
	(pump.switch_context]: Likewise.
	* runtime/cs/pump.cc (pump.context_switch): Update accodingly.
	(pump.collateral_release): Likewise.
	(pump.block): Likewise.
	(pump.release): Likewise.  Add debugging.
	(pump.run): Add debugging and asserts.

2022-01-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Support multiple release.
	Instead of the released port, keep a list of released ports.  When a
	coroutine releases two blocked ports in one call, the second release
	must not overwrite the first.

	* dzn/simulate.scm (zip)[statement-equal?]: New inner define.  Use it to
	fix thinko: make adding of <trigger-return> idempotent.
	* dzn/simulate.scm (check-provides-compliance+): Run compliance check
	for all <trigger-return>s on a released trace.
	* dzn/vm/goops.scm (<program-counter>)[released]: Change to a list.
	(write): Update accordingly.
	* dzn/vm/util.scm (switch-context): Likewise.
	* dzn/vm/step.scm (step)[reply]: Likewise.
	[block]: Likewise.

2022-01-26  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Support multiple release.
	* runtime/c++/dzn/pump.hh (struct pump)[unblocked]: Change to vector.
	[switch_context]: Likewise.
	* runtime/c++/pump.cc (pump::context_switch): Update accodingly.
	(pump::collateral_release): Likewise.
	(pump::block): Likewise.
	(pump::release): Likewise.  Add debugging.
	(pump::operator()): Add debugging and asserts.

2022-01-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_blocking_bridges: Enable cs.
	* test/all/collateral_blocking_bridges/META: Remove "cs" from "skip".

	test: collateral_blocking_bridges: Enable simulate.
	* test/all/collateral_blocking_brigdes/META: Remove "simulate" from
	"skip".

2022-01-26  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add blocking_multiple_provides0.
	* test/all/blocking_multiple_provides0: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-01-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Switch-context at run-to-completion.
	* dzn/vm/goops.scm (<unblock>): Remove.
	(rtc?)[trace]: New specialization.
	* dzn/vm/step.scm (step)[end-of-on]: Remove two cases to create
	<unbock>.
	[unblock]: Remove specialization.  Factor-out unblocking to...
	* dzn/vm/util.scm (switch-context): ...this new method.
	* dzn/vm/run.scm (run-to-completion-unmemoized): Use it when traces are
	run-to-completion, and re-enter loop for traces that are runnable again.

2022-01-21  Rutger van Beusekom  <rutger@dezyne.org>

	test: Remove import_strip_component.
	Component behaviors are not stripped anymore.

	* test/all/import_strip_component: Remove.
	* test/all/local.mk (REGRESSION_TESTS, XFAIL_TESTS): Remove it.

2022-01-20  Paul Hoogendijk  <paul@dezyne.org>

	test: Add hello_blocking_asynchronous_sync_out.
	* test/all/hello_blocking_asynchronous_sync_out: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add hello_blocking_multiple_out.
	* test/all/hello_blocking_multiple_out: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-03-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_double_blocked_out: Support cs.
	* test/all/collateral_double_blocked_out/META: Remove "cs" from "skip".

	test: collateral_double_blocked_out: Support c++.
	* test/all/collateral_double_blocked_out_out/META: Skip other languages
	instead of "execute".
	* test/all/collateral_double_blocked_out/main.cc: New file.

2022-01-18  Paul Hoogendijk  <paul@dezyne.org>

	test: Add collateral_double_blocked_out.
	* test/all/collateral_double_blocked_out: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-03-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_double_blocked: Support cs.
	* test/all/collateral_double_blocked/main.cs: New file.
	* test/all/collateral_double_blocked/META[skip]: Remove "cs" from "skip".

	test: collateral_double_blocked: Support c++.
	* test/all/collateral_double_blocked_out/META: Skip other languages
	instead of "execute".
	* test/all/collateral_double_blocked/main.cc: New file.

2022-01-18  Paul Hoogendijk  <paul@dezyne.org>

	test: Add collateral_double_blocked.
	* test/all/collateral_double_blocked: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add compliance_failures_blocking.
	* test/all/compliance_failures_blocking: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-01-19  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support blocking refusal of return.
	* dzn/simulate.scm (end-report)[refusals-report]: Add check for blocked
	port in when component is stable, create "return" refusal for trigger.
	* dzn/vm/report.scm (final-error-messages): Report "return" refusal for
	trigger.

2022-01-10  Paul Hoogendijk  <paul@dezyne.org>

	test: Add blocking_multiple_provides3.
	* test/all/blocking_multiple_provides3: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-12-20  Paul Hoogendijk  <paul@dezyne.org>

	test: Add blocking_multiple_provides2 (simultaneous blocking calls).
	* test/all/blocking_multiple_provides2: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-01-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Enable verification of multiple-provides components.
	* test/all/async_blocking_missing_ack/META,
	test/all/async_blocking_verify/META,
	test/all/blocking_multiple_provides/META,
	test/all/collateral_blocking_multiple_provides/META,
	test/all/collateral_blocking_reorder/META,
	test/all/double_collateral_blocking_shell/META,
	test/all/multiple_parallel_blocking/META: Add model #f.
	* test/all/async_blocking_ranking_disorder/META,
	test/all/blocking_bottom_system/META,
	test/all/collateral_blocking_async/META: New files.

2021-11-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Remove blocked port list from state.
	* dzn/explore.scm (lts-remove): Make blocked list empty.
	(state-diagram): Remove self transition when states overlap due to removal.

2021-12-15  Rutger van Beusekom  <rutger@dezyne.org>

	test: compliance_failures_multiple_provides: Make deterministic.
	* test/all/compliance_failures_multiple_provides/compliance_failures_multiple_provides.dzn
	(compliance_failures_multiple_provides)[w]: Rename to...
	[w1]: ..this.
	[w2]: Add port.
	Use it to make behavior deterministic.

2021-12-03  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Paul Hoogendijk  <paul@dezyne.org>

	verify: Support blocking and multiple provides.
	* dzn/code/makreel.scm (<port-pair>): Add <port-pair>
	(.port.name)[port-pair],
	(.other.name)[port-pair],
	(ast:provides-ports)[port]: New specializations.
	(makreel:provides-pair*, markreel:provides-reply,
	makreel:provides-reset-reply, akreel:multiple-provides?,
	makreel:negate-multiple-provides?): New methods.
	* dzn/commands/traces.scm (lts-hide-internal-labels): Hide <blocking>
	event.
	* dzn/lts.scm (parse-label): Handle 'blocking event, translate to
	<blocking>.
	* dzn/templates/makreel.scm (action-proc, reorder-provides,
	reorder-blocking, reorder-flush, reorder-block, reorder-comm-provides,
	reorder-allow-provides, reorder-allow-requires, reorder-rename-provides,
	reorder-rename-requires, semantics-provides-blocked-internal,
	semantics-provides-replies, provides-out-proc-provides): Remove.
	(reply-values, reordered, component-behavior-rename-requires,
	semantics-provides-reply-init, semantics-provides-reset-reply-pair,
	semantics-provides-reset-reply, semantics-provides-reply-pair,
	semantics-provides-reply, semantics-provides-unblocked-missing-replies,
	semantics-reply ast:provides-port, semantics-blocked-rtc-provides,
	semantics-blocked-rtc-requires): New templates.
	(semantics-provides-unblocked-replies,
	semantics-provides-blocked-requires): Update.
	* dzn/templates/makreel/provides-out-proc-provides@port,
	dzn/templates/makreel/provides-out-proc@component,
	dzn/templates/makreel/reorder-allow-provides@port,
	dzn/templates/makreel/reorder-allow-requires@port,
	dzn/templates/makreel/reorder-block@port,
	dzn/templates/makreel/reorder-blocking@port,
	dzn/templates/makreel/reorder-comm-provides@port,
	dzn/templates/makreel/reorder-flush@port,
	dzn/templates/makreel/reorder-provides@port,
	dzn/templates/makreel/reorder-rename-provides@port,
	dzn/templates/makreel/semantics-provides-blocked-internal@component,
	dzn/templates/makreel/semantics-provides-replies@port: Remove.
	* dzn/templates/makreel/reorder-rename-requires@port: Rename to...
	dzn/templates/makreel/component-behavior-rename-requires@port: ...this.
	* dzn/templates/makreel/action-proc@component: Remove and move into...
	dzn/templates/makreel/model@component: ...this.
	(reply_values): New sort.
	(find, remove): Rename to...
	(find_async, remove_async): ...this.
	(provides_r2c): Add ports parameter.
	(provides_out): Pull to toplevel.
	(provides_parallel): Update accordingly.
	(component_behvior): Add rename for requires out -> qout.
	(component_reorder, component_reorder_block, component_reorder_parallel,
	component_reorder_comm, component_reorder_allow, component_reordered): Remove.
	(semantics_provides_unblocked): Add reply parameter.
	(semantics_async, semantics_async_allow_ack): Add blocked, released,
	reply parameters.
	(semantics_provides_blocking, semantics_provides_skip_blocked,
	semantics_provides_blocked, semantics_reply, semantics_blocked_rtc): New
	processes.
	(semantics, semantics_provides): Use them.  Implement reply reorder,
	missing reply, second reply, and multiple parallel blocked ports.
	* dzn/templates/makreel/async-parallel-port@port,
	dzn/templates/makreel/component-hide-provides@port,
	dzn/templates/makreel/provides-allow@port,
	dzn/templates/makreel/provides-r2c-proc@port,
	dzn/templates/makreel/reply-sort@interface,
	dzn/templates/makreel/semantics-allow-provides@port,
	dzn/templates/makreel/semantics-async-qout@port,
	dzn/templates/makreel/semantics-comm-provides@port,
	dzn/templates/makreel/semantics-provides-blocked-async@port,
	dzn/templates/makreel/semantics-provides-blocked-provides@port,
	dzn/templates/makreel/semantics-provides-blocked-qmt-async@port,
	dzn/templates/makreel/semantics-provides-blocked-qmt@port,
	dzn/templates/makreel/semantics-provides-blocked-requires@port,
	dzn/templates/makreel/semantics-provides-unblocked-replies@port,
	dzn/templates/makreel/semantics-provides-unblocked@port,
	dzn/templates/makreel/semantics-provides@port,
	dzn/templates/makreel/semantics-rename-provides@port,
	dzn/templates/makreel/semantics-requires@port: Update.
	* dzn/templates/makreel/and-infix,
	dzn/templates/makreel/or-infix: New grammar.
	dzn/templates/makreel/other-type-constructor@interface,
	dzn/templates/makreel/other_@port,
	dzn/templates/makreel/provides-out@port,
	dzn/templates/makreel/r2c-to-provides-bmp@port,
	dzn/templates/makreel/reordered@port,
	dzn/templates/makreel/reply-values@port,
	dzn/templates/makreel/semantics-blocked-rtc-provides@port,
	dzn/templates/makreel/semantics-blocked-rtc-requires@port,
	dzn/templates/makreel/semantics-port-in-released-or@port,
	dzn/templates/makreel/semantics-provides-blocked-ports@port,
	dzn/templates/makreel/semantics-provides-blocked-replies@port,
	dzn/templates/makreel/semantics-provides-blocking-provides@port,
	dzn/templates/makreel/semantics-provides-reply-init@port,
	dzn/templates/makreel/semantics-provides-reply-pair@port-pair,
	dzn/templates/makreel/semantics-provides-reply@port,
	dzn/templates/makreel/semantics-provides-reset-reply-pair@port-pair,
	dzn/templates/makreel/semantics-provides-reset-reply@port,
	dzn/templates/makreel/semantics-provides-skip-blocked-replies@port,
	dzn/templates/makreel/semantics-provides-skip-blocked-requires@port,
	dzn/templates/makreel/semantics-provides-unblocked-missing-replies@port,
	dzn/templates/makreel/semantics-reply@port,
	dzn/templates/makreel/to-provides-bmp@port: New files.

2021-11-29  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Reset handling when blocked.
	* dzn/vm/step.scm (step)[block]: In new coroutine/program-counter, reset
	handling.

	graph: Support collateral block.
	* dzn/explore.scm (pc->rtc-lts): Filter-out <blocked-error>s.

2021-11-01  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add blocking_bottom_system.
	* test/all/blocking_bottom_system: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-11-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support release from other multiple provides port.
	This postpones resuming running the released pc until after finishing
	the current run to completion, notably including the synthesized trigger
	return.

	* dzn/vm/step.scm (step)[end-of-on]: In case PC is released, set its
	statement to <unblock> and push the <trigger-return> to run first.

2021-11-01  Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Fix missing <external> -> for blocking at the bottom.
	* dzn/simulate.scm (zip): Determine instance from port-trace, via
	port-instance and other-port.

2021-11-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: double_collateral_blocking_shell: Enable simulate.
	* test/all/double_collateral_blocking_shell/META: Remove "simulate" from "skip".

	test: multiple_parallel_blocking: Enable simulate.
	* test/all/multiple_parallel_blocking/META: Remove "simulate" from "skip".

	test: collateral_blocking_reorder: Enable simulate.
	* test/all/collateral_blocking_reorder/META: Remove "simulate" from "skip".

	test: collateral_blocking_multiple_provides: Enable simulate.
	* test/all/collateral_blocking_multiple_provides/META: Remove "simulate" from "skip".

	test: blocking_multiple_provides: Enable simulate.
	* test/all/blocking_multiple_provides/META: Remove "simulate" from "skip".

	test: collateral_blocking_shell: Enable simulate.
	* test/all/collateral_blocking_shell/META: Remove "simulate" from "skip".

2021-10-27  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add collateral_blocking_async.
	* test/all/collateral_blocking_async: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	(XFAIL_TESTS): Add it.

	cs: Support collateral_blocking and tracing for async.
	* dzn/templates/cs/async-event-slot@trigger: Use call_in instead of
	handle to consider blocking collaterally.
	* runtime/cs/dzn/meta.cs (async_base): New class.
	(async): Derive from it.
	* runtime/cs/dzn/runtime.cs (call_out): Use that to skip tracing for
	async.

	test: multiple_parallel_blocking: Support cs.
	* test/all/multiple_parallel_blocking/META: Enable "cs".
	* test/all/multiple_parallel_blocking/main.cs: New file.

2021-10-22  Rutger van Beusekom  <rutger@dezyne.org>

	test: double_collateral_blocking_shell: Support cs.
	* test/all/double_collateral_blocking_shell/META: Enable "cs".
	* test/all/double_collateral_blocking_shell/main.cs: New file.

2021-10-26  Rutger van Beusekom  <rutger@dezyne.org>

	test: collateral_blocking_multiple_provides: Support cs.
	* test/all/collateral_blocking_multiple_provides/META: Enable "cs".
	* test/all/collateral_blocking_multiple_provides/main.cs: New file.

2021-10-27  Rutger van Beusekom  <rutger@dezyne.org>

	test: blocking_multiple_provides: Support cs.
	* test/all/blocking_multiple_provides/META: Enable "cs".
	* test/all/blocking_multiple_provides/main.cs: New file.

2021-10-26  Rutger van Beusekom  <rutger@dezyne.org>

	cs: Maintain component stack for collateral block.
	When a blocked coroutine is released, all collaterally blocked
	coroutines that were blocked because of this blocked coroutine must be
	released.  The port of the blocking coroutine is stored in collaterally
	blocked coroutines too.  To do so, a component stack is maintained per
	coroutine.  When collaterally blocking on a component, the originally
	blocking coroutine and the blocking port is looked-up using the
	component stacks.

	* runtime/cs/dzn/runtime.cs (runtime.component_stack,
	blocked_port_component_stack): New variables.
	(runtime.call_helper): Push and pop component onto component_stack.
	Update call to collateral_block.
	(call_out): Likewise.
	* runtime/cs/pump.cc (port_block): Park component_stack on
	blocked_port_component_stack.
	(pump.collateral_block): Add component and runtime parameters.  Park
	component_stack to blocked_port_component_stack.  Set blocked port in
	collaterally blocked coroutine.  After unblock, merge component stacks.
	(pump.collateral_release): Ony release collaterally blocked stacks if
	the port matches.
	(pump.release): Add runtime parameter.  Swap component_stack with the
	blocked_component_stack.
	(pump.collateral_release_skip_block): New method.  If a coroutine is
	collaterally blocked on the blocking component, unblock it.
	(pump.block): Use it.  Unless a collaterally blocked coroutine was
	released, update port of collaterally blocked coroutine.

2022-01-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: context: Disable some debugging.
	* runtime/cs/dzn/context.cs (context, call, do_block, do_release,
	do_finish): Comment-out debugging.

	cs: Refactor coroutine and pump.
	* runtime/cs/dzn/coroutine.cs (coroutine.released): Remove.
	* runtime/cs/dzn/pump.cs (pump.find_self): Split assert to give more
	info on failure.
	(pump.release): Set finished instead of released.
	(pump.context_switch): New method.
	(pump.create_context): Use it and simlpify.

	cs: Factor-out remove_finished_coroutines.
	* runtime/cs/dzn/pump.cs (pump.remove_finished_coroutines): New method.
	Factor-out from...
	(pump.run): ...here, and...
	(pump.block): ...here.

2021-11-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Rename "info" to "State".
	Run

	    sed -i -e s,infos,states,g -e 's,\<info\>,State,g' \
	       runtime/cs/dzn/* $(grep -l info dzn/templates/cs/*)

	* runtime/cs/dzn/container.cs,
	runtime/cs/dzn/pump.cs,
	runtime/cs/dzn/runtime.cs: Rename "Info", "infos" to "State", "states".

2021-10-26  Rutger van Beusekom  <rutger@dezyne.org>

	cs runtime: set unblocked to port.
	* runtime/cs/dzn/pump.cs (pump::unblocked): Use Object instead of bool.
	(pump::pump, pump::create_context): Update accordingly.
	(pump::collateral_release): Set it to blocked.port instead of true.

2021-10-22  Rutger van Beusekom  <rutger@dezyne.org>

	test: collateral_blocking_reorder: Support cs.
	* test/all/collateral_blocking_reorder/META: Enable "cs".
	* test/all/collateral_blocking_reorder/main.cs: New file.

2021-10-25  Rutger van Beusekom  <rutger@dezyne.org>

	cs: Support collateral blocking reorder.
	* runtime/cs/dzn/runtime.cs (dzn.Port.other): New method.
	(runtime.call_out): Use it.

2022-01-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Add port to dzn.port.Meta.
	* runtime/cs/dzn/runtime.cs (dzn.Port): New class.
	(runtime.call_in, runtime.call_out): Remove <Port> template.
	* dzn/templates/cs/model@interface: Inherit from it, remove
	dzn_meta member and initialization.
	* runtime/cs/dzn/meta.cs (port.Meta.Provides)[port]: New member.
	(port.Meta.Requuires)[port]: New member.
	(async): Inherif from dzn.Port, remove dzn_meta member and
	initialization.
	* dzn/templates/cs/provided-port-init@port,
	dzn/templates/cs/required-port-init@port: Initialize them.
	* test/all/collateral_blocking_shell/main.cs,
	test/all/collateral_blocking_shell2/main.cs: Likewise.

2021-10-26  Rutger van Beusekom  <rutger@dezyne.org>

	pump.cs: Reduce diff with c++.
	* runtime/cs/dzn/pump.cs (pump::remove_finished_coroutines): Remove.
	Inline assignment...
	(pump::create_context): ...here, and...
	(pump::collateral_release): ...here.

2022-01-07  Rutger van Beusekom  <rutger@dezyne.org>

	cs runtime: Align timer handling with c++, fixing deadlock.
	This fixes a deadlock when using timers with timeout 1.

	* runtime/cs/dzn/pump.cs (worker)[service_timers]: Remove definition,
	inline body.  Remove extra call to service_timers.  Service queue before
	timers.

2021-10-25  Rutger van Beusekom  <rutger@dezyne.org>

	cs: Retype handling from bool to coroutine id.
	* dzn/templates/cs/block@blocking-compound: Move handling, flush to...
	* runtime/cs/dzn/pump.cs (port_block): ...here.
	* runtime/cs/dzn/runtime.cs (info::handling): Use int instead of bool.
	(runtime::flush, runtime::defer, runtime::valued_helper,
	runtime::handle, runtime::call_in): Update accordingly.

2021-11-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Reset skip_block at start of new event.
	* dzn/templates/cs/event-slot@trigger: Remove port from skip_block.
	* dzn/templates/cs/valued-event-slot@trigger: Likewise.

2021-10-27  Rutger van Beusekom  <rutger@dezyne.org>

	build cs: Enable debug tracing and asserts.
	* test/lib/build.cs.make: Build with DEBUG.

2021-10-22  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add async_blocking_missing_ack.
	* test/all/async_blocking_missing_ack: New test.
	* test/all/local.mk (REGRESSION_TESTS, XFAIL_TESTS): Add it.

	test: Add async_blocking_verify.
	* test/all/async_blocking_verify: New test.
	* test/all/local.mk (REGRESSION_TESTS, XFAIL_TESTS): Add it.

2021-10-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add async_blocking_ranking_disorder.
	When compiled with -D DZN_ASYNC_TRACING=1, this shows that
	collateral-block causes a reversal of async execution.

	* test/all/async_blocking_ranking_disorder: New test.
	* test/all/local.mk (REGRESSION_TESTS, XFAIL_TESTS): Add it.

2021-09-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Enable async tracing with DZN_ASYNC_TRACING.
	* runtime/c++/dzn/runtime.hh (DZN_ASYNC_TRACING): New define.
	(call_out): Use it to enable tracing for async.
	* dzn/templates/c++/async-event-slot@trigger,
	dzn/templates/c++/async-req-event-slot@trigger: Likewise.

2021-10-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Have async respect collateral-block.
	* runtime/c++/dzn/meta.hh.in (struct async_base): New base class for...
	(async): ...this.
	* dzn/templates/c++/header-model@interface (struct #x:model-name)
	[~#x:model-name]: Make polymorphic by adding virtual destructor.
	* runtime/c++/dzn/runtime.hh (struct runtime)[call_out]: Use
	dynamic_cast to avoid tracing of async port.
	* dzn/templates/c++/async-event-slot@trigger: Use call_out instead of
	handle.
	* dzn/templates/c++/async-req-event-slot@trigger: Cleanup: remove return.
	* runtime/c++/pump.cc (pump::operator()): Insert break in worker to
	continue with coroutine released by async event.

2021-10-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: async_ranking_disorder: Remove.
	This test did not demonstrate anything interesting; an illegal was
	triggered because model Top did not verify.

	* test/all/async_ranking_disorder: Remove.
	* test/all/local.mk (REGRESSION_TESTS): Remove it.

2022-01-25  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add collateral_blocking_bridges.
	* test/all/collateral_blocking_bridges: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-08-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add collateral_blocking_multiple_provides.
	* test/all/collateral_blocking_multiple_provides/META,
	test/all/collateral_blocking_multiple_provides/collateral_blocking_multiple_provides.dzn,
	test/all/collateral_blocking_multiple_provides/main.cc,
	test/all/collateral_blocking_multiple_provides/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	test: Add double_collateral_blocking_shell.
	* test/all/double_collateral_blocking_shell/META,
	test/all/double_collateral_blocking_shell/double_collateral_blocking_shell.dzn,
	test/all/double_collateral_blocking_shell/main.cc,
	test/all/double_collateral_blocking_shell/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-08-11  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add blocking_multiple_provides.
	* test/all/blocking_multiple_provides/META,
	test/all/blocking_multiple_provides/blocking_multiple_provides.dzn,
	test/all/blocking_multiple_provides/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-08-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add multiple_parallel_blocking.
	* test/all/multiple_parallel_blocking/META,
	test/all/multiple_parallel_blocking/main.cc,
	test/all/multiple_parallel_blocking/multiple_parallel_blocking.dzn,
	test/all/multiple_parallel_blocking/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-11-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_blocking_shell: Reduce waiting, complete trace.
	* test/all/collateral_blocking_shell/main.cc (main): Add missing
	w0.return, w1.return.  Sleep only 50ms instead of 200.
	* test/all/collateral_blocking_shell/main.cs: Likewise.
	* test/all/collateral_blocking_shell/trace: Insert missing w0.return,
	w1.return.

2021-09-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove wf_blockingMultipleProvides.
	The restriction of using blocking in the context of multiple provides
	has been lifted.

	* test/all/wf_blockingMultipleProvides/baseline/verify/wf_blockingMultipleProvides.stderr,
	test/all/wf_blockingMultipleProvides/wf_blockingMultipleProvides.dzn: Remove.
	* test/all/local.mk (PARSER_TESTS): Remove test.

2021-11-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Remove restriction for multiple provides with blocking.
	* dzn/wfc.scm (wfc)[blocking]: Remove check for multiple provides.
	* doc/dezyne.texi (Cannot use blocking ith multiple provides ports):
	Remove section.
	* doc/parse/blocking-multiple-provides.dzn: Remove.
	* doc/parse/local.mk (DEZYNE_PARSE_EXAMPLES): Remove it.
	doc/parse/blocking-multiple-provides.texi: Remove.

2021-08-18  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Maintain component stack for collateral block.
	When a blocked coroutine is released, all collaterally blocked
	coroutines that were blocked because of this blocked coroutine must be
	released.  The port of the blocking coroutine is stored in collaterally
	blocked coroutines too.  To do so, a component stack is maintained per
	coroutine.  When collaterally blocking on a component, the originally
	blocking coroutine and the blocking port is looked-up using the
	component stacks.

	* dzn/templates/c++/header-model@interface (struct component): Move meta
	to first position in struct.
	* runtime/c++/dzn/container.hh (container): Likewise.
	* runtime/c++/dzn/meta.hh.in (async): Likewise.
	* runtime/c++/dzn/runtime.hh (runtime::component_stack,
	blocked_port_component_stack): New variables.
	(runtime::call_helper): Push and pop
	component onto component_stack.  Update call to collateral_block.
	(call_out): Likewise.
	* runtime/c++/pump.cc (port_block): Park component_stack on
	blocked_port_component_stack.
	(pump::collateral_block): Add component and runtime parameters.  Park
	component_stack to blocked_port_component_stack.  Set blocked port in
	collaterally blocked coroutine.  After unblock, merge component stacks.
	(pump::collateral_release): Ony release collaterally blocked stacks if
	the port matches.
	(pump::release): Add runtime parameter.  Swap component_stack with the
	blocked_component_stack.
	(pump::collateral_release_skip_block): New method.  If a coroutine is
	collaterally blocked on the blocking component, unblock it.
	(pump::block): Use it.  Unless a collaterally blocked coroutine was
	released, update port of collaterally blocked coroutine.
	* runtime/c++/dzn/pump.hh (pump::collateral_release_skip_block): Declare
	it.
	(pump::block, pump::collateral_block, pump::release) Update prototypes.

2022-01-26  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Refactor coroutine and pump.
	* runtime/c++/dzn/coroutine.hh (struct coroutine)[released]: Remove.
	* runtime/c++/pump.cc (find_self): Split assert to give more info on
	failure.
	* runtime/c++/pump.cc (pump::release): Set finished instead of released.
	(pump::context_switch): New method.
	(pump::create_context): Use it and simlpify.
	* runtime/c++/dzn/pump.hh (pump::context_switch): Declare it.

2021-08-18  Rutger van Beusekom  <rutger@dezyne.org>

	c++ runtime: set unblocked to port.
	* runtime/c++/dzn/pump.hh (pump::unblocked): Use void* instead of bool.
	* runtime/c++/pump.cc (pump::pump): Update accordingly.
	(pump::collateral_release): Likewise.
	(pump::release): Set to blocked->port instead of true.

	test: Add collateral_blocking_reorder.
	* test/all/collateral_blocking_reorder/META,
	test/all/collateral_blocking_reorder/collateral_blocking_reorder.dzn,
	test/all/collateral_blocking_reorder/trace,
	test/all/collateral_blocking_reorder/main.cc: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-08-18  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Support collateral blocking reorder.
	* runtime/c++/dzn/meta.hh.in (port.other): New function.
	* runtime/c++/dzn/runtime.hh (call_out): Use it to collaterally block a
	new coroutine re-entering a blocked component.

2022-01-24  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Add port to dzn.port.meta.
	* runtime/c++/dzn/meta.hh.in (port.meta.provide)[port]: New member.
	(port.meta.require)[port]: New member.
	* dzn/templates/c++/provided-member-initializer@port,
	dzn/templates/c++/required-member-initializer@port: Initialize them.
	* test/all/collateral_blocking_shell/main.cc,
	test/all/collateral_blocking_shell2/main.cc,
	test/all/hello_namespace_foreign/c++/library_foreign.cc: Likewise.

	c++: Rename dzn.port.meta's port to name, and address to component.
	* runtime/c++/dzn/meta.hh.in (port.meta.provide)[port]: Rename to...
	(port.meta.provide)[name]: ..this
	(port.meta.provide)[address]: ..this
	(port.meta.provide)[component]: ..this
	(port.meta.require)[port]: Rename to...
	(port.meta.require)[name]: ..this
	(port.meta.require)[address]: ..this
	(port.meta.require)[component]: ..this
	* dzn/templates/c++/injected-instance-meta-initializer@instance,
	dzn/templates/c++/injected-require-initializer@port,
	dzn/templates/c++/injected-require-initializer@port,
	dzn/templates/c++/main-provided-port-init@port,
	dzn/templates/c++/main-required-port-init@port: Update accordingly.
	dzn/templates/c++/shell-provided-meta-initializer@port,
	dzn/templates/c++/shell-required-meta-initializer@port,
	* runtime/c++/dzn/meta.hh.in (path): Likewise.
	* runtime/c++/dzn/runtime.hh (trace, trace_out, trace_qin, trace_qout,
	call_out): Likewise.
	* test/all/async_calling_context/c++/main.cc,
	test/all/async_context/main.cc,
	test/all/async_order/main.cc,
	test/all/async_order2/main.cc,
	test/all/async_prio/main.cc,
	test/all/async_prio2/main.cc,
	test/all/async_prio3/main.cc,
	test/all/async_rank/main.cc,
	test/all/async_ranking/main.cc,
	test/all/async_shell/c++/main.cc,
	test/all/async_simple/main.cc,
	test/all/async_synccb/main.cc,
	test/all/async_synccb2/main.cc,
	test/all/blocking_binding/main.cc,
	test/all/blocking_shell/c++/main.cc,
	test/all/calling_context/main.cc,
	test/all/collateral_blocking_shell/main.cc,
	test/all/collateral_blocking_shell2/main.cc,
	test/all/data_full/main.cc,
	test/all/exception_wrappers/c++/main.cc,
	test/all/hello_injected/main.cc,
	test/all/shell_injected/c++/main.cc: Likewise.

2021-08-18  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Retype handling from bool to coroutine id (size_t).
	* dzn/templates/c++/block@blocking-compound (dzn): Move handling,flush to.
	* runtime/c++/pump.cc (port_block): ...here.  Add new component
	parameter.
	* runtime/c++/dzn/runtime.hh (state::handling): Use size_t instead of
	bool.
	(runtime:handling, runtime:handle): Update accordingly.
	* runtime/c++/runtime.cc (runtime::handling): Likewise.

	c++ runtime: Refactor state.
	* runtime/c++/dzn/runtime.hh (struct state): New type.
	(queues): Replace by...
	(states): ...this new member.
	(external, handling, deferred, queue, performs_flush): Update
	accordingly.

2021-09-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Support boost::coroutine.
	* test/all/blocking_shell/c++/main.cc,
	test/all/collateral_blocking_shell/main.cc,
	test/all/collateral_blocking_shell2/main.cc: Include thread.

2021-08-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++ runtime: Resurrect boost::coroutine.
	* runtime/c++/dzn/coroutine.hh[HAVE_BOOST_COROUTINE]: Include
	boost/coroutine/all.hpp.
	[HAVE_BOOST_COROUTINE](context, yield, forced_unwind): New typedefs.
	(coroutine::s_current): Declare new static variable.
	(countine::coroutine)[HAVE_BOOST_COROUTINE]: Initialize it and "this->id"
	to from "this".
	(coroutine::get_id)[HAVE_BOOST_COROUTINE]: Return it.
	(coroutine::yield_to)[HAVE_BOOST_COROUTINE]: Update coroutine::s_current.
	(coroutine::call)[HAVE_BOOST_COROUTINE]: Alternative impementation.
	* runtime/c++/runtime.cc (coroutine::s_current): Define it.

2021-08-18  Rutger van Beusekom  <rutger@dezyne.org>

	c++ runtime: Add get_id to coroutine.
	* runtime/c++/dzn/coroutine.hh (coroutine::id): Change to size_t.
	(coroutine::get_id): New static methodr.
	(coroutine::coroutine): Use it to initialize id.

	c++ runtime: Refactor coroutine & context.
	* runtime/c++/dzn/context.hh (context): Remove third constructor.

	c++ runtime: Remove boost coroutine support.
	* runtime/c++/dzn/coroutine.hh[HAVE_BOOST_COROUTINE]: Remove.

2022-03-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	doc: Split-up armor example.
	* doc/examples/armor.dzn: Split-out to...
	* doc/examples/bottom_armor.dzn,
	doc/examples/ipermissive.dzn,
	doc/examples/istrict.dzn,
	doc/examples/iwatchdog.dzn,
	doc/examples/proxy.dzn,
	doc/examples/top_armor.dzn: ...these new files.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Add them.
	* doc/dezyne.texi (Armoring): Update accordingly.

2022-03-04  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Fix crash in function parameter check.
	* dzn/wfc.scm (wfc)[signature]: Prevent passing state as out parameter
	via a function.
	* test/all/function_out_state: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-03-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Robustify against "provides external".
	Reported by Joran Jessurun <joran.jessurun@ajmail.nl> via IRC.

	* dzn/vm/runtime.scm (runtime:create-instances)[invert-direction]:
	Clear #:external flag.
	* dzn/vm/run.scm (run-external-modeling): Also check ast:requires?
	instead of only ast:external?
	* dzn/vm/runtime.scm (runtime:create-instances): Likewise.
	* dzn/vm/step.scm (step-action-down): Likewise.

2022-02-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: semantics: Fix trace for external_multiple_out1.
	This is a follow-up to commit
	    a286f4fbc14f8be083521df28dd57656c062c8b5
	    Add external_multiple_out1, and external_multiple_out2.

	* test/bin/semantics.sh: Oops, correct trace for
	test/all/external_multiple_out1.dzn.
	* test/all/semantics/baseline/semantics.org (external_multiple_out1):
	Update baseline.

2022-02-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Add debugging for <match> failure.
	* dzn/simulate.scm (run-sut): Add debugging.
	* dzn/vm/run.scm (run-external): Likewise.

2022-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Report shortest trace instead of arbitrary one.
	* dzn/vm/report.scm (report)[trace<]: New inner define.  Use it to sort
	traces before reporting.

2022-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Filter-out implicit illegals early.
	This avoids keeping an implicit illegal after an <on> was executed.

	* dzn/vm/run.scm (run-to-completion-unmemoized): Filter-out
	<implicit-illegal-error> early.

2022-02-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid empty location with compliance error trigger.
	* dzn/vm/report.scm (final-error-messages): Fall back to trigger
	location if event has no location.

2022-01-21  Rutger van Beusekom  <rutger@dezyne.org>

	simulate: Friendlier wording of compliance errors.
	* dzn/vm/report.scm (final-error-messages): Use "performs" instead of
	"accept" for component, use "expect" for port for compliance messag.
	* test/all: Update baseline.

2022-02-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: bin/rename: Allow invocation from toplevel.
	* test/bin/rename: If invoked from toplevel, cd to test.

2022-02-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: bin/rename: Fix a regression in renaming the baseline.
	This is a follow-up to commit
	    9736897f8a79f5b57e16972c9996b681584c41a5
	    test: rename: Support renaming into different directory.

	* test/bin/rename: Substitute from_base and to_base in baseline too.

2022-02-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	copyright-header.scm: test: Add missing headers to c++ header files.
	* build-aux/copyright-header.scm (code-file?): Include c header files too.
	* test/all/Camera/c++/CMOS.hh,
	test/all/Camera/c++/Contrast.hh,
	test/all/Camera/c++/Lens.hh,
	test/all/Camera/c++/Memory.hh,
	test/all/Camera/c++/Shutter.hh,
	test/all/hello_namespace_foreign/c++/library_foreign.hh: Add missing
	headers.

2022-02-03  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Report "unknown type: ..." instead of "<unknown-type> expected".
	This fixes:

	    type mismatch: expected `<unknown type>', found: `...'

	* dzn/wfc.scm (argument-type-check): Ignore type resolve failure, since
	unknown types are handled elsewhere in wfc.
	* test/all/undefined/formal_type/formal_type.dzn,
	test/all/undefined/formal_type/baseline/verify/formal_type.stderr: New files.
	* test/all/local.mk (PARSER_TESTS): Add test.
	* test/all/undefined/component/argument_seen/baseline/verify/argument_seen.stderr,
	test/all/wf_actionInExpression/baseline/verify/wf_actionInExpression.stderr:
	Update baseline.

2022-02-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	debian: Update copyright, fix typo.
	* debian/copyright (Source): Typo.
	(Copyright): Update to 2022.

2022-01-26  Paul Hoogendijk  <paul@dezyne.org>

	wfc: Do not allow using extern data in a binary expression.
	Extern data must not be used in binary expressions.

	* test/all/wf_expressionExpected/wf_expressionExpected.dzn: Test it.
	* test/all/wf_expressionExpected/baseline/verify/wf_expressionExpected.stderr:
	Update baseline.
	* dzn/wfc.scm (no-extern-expression): New method.
	(binary-equal-no-extern-type): ...this and use it.
	* dzn/wfc.scm (wfc)[equal]: Update caller.
	* dzn/wfc.scm (wfc)[not-equal]: Update caller.

2022-01-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid car on empty list.
	* dzn/simulate.scm (check-provides-compliance): Handle empty set of
	traces.

2022-01-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Allow implicit temporaries for return.
	* dzn/wfc.scm (tail-recursion): Also find recursion in reply and return.
	(call-context): Allow <action> and <call> in <return> too.
	* dzn/normalize.scm (add-explicit-temporaries): Cater for <return>.
	* test/all/hello_implicit_enum/hello_implicit_enum.dzn: Test returning
	a valued action.
	* test/all/hello_implicit_temporaries/hello_implicit_temporaries.dzn:
	Likewise.
	* test/all/wf_functionTailRecursion/wf_functionTailRecursion.dzn (Intf5,
	Intf6, Intf7): Test retursion detection for reply and return.

2022-01-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: bin/rename: Also process handwritten main.
	* test/bin/rename: Run sed on any main.*.

2022-01-19  Rutger van Beusekom  <rutger@dezyne.org>

	dzn/pipe: Fix adding exit stati of piped-processes.
	* dzn/pipe.scm (pipeline->string),
	(pipeline->port): Handle signal exit status in pipeline.

2021-12-17  Paul Hoogendijk  <paul@verum.com>

	test: Add determinism_out.
	* test/all/determinism_out/determinism_out.dzn,
	* test/all/determinism_out/trace,
	* test/all/determinism_out/baseline/verify/determinism_out (model),
	* test/all/determinism_out/baseline/verify/determinism_out.stderr (verify),
	* test/all/determinism_out/baseline/simulate/determinism_out,
	* test/all/determinism_out/baseline/simulate/determinism_out.stderr: New files.
	* test/all/local.mk (HELLO_TESTS): Add determinism_out.

	verify: Also consider synchronous out-events in determinism check.
	* dzn/verify/pipeline.scm (deterministic-labels): Include qout labels.
	* test/all/compliance_failures_multiple_provides/compliance_failures_multiple_provides.dzn:
	Remove non-determinism.

2022-01-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	explore: Remove deprecated command.
	* dzn/commands/explore.scm: Remove.
	* dzn/commands/local.mk (dist_%C%_scm_DATA): Remove it.
	* Makefile.am (dist_man_MANS): Remove dzn-explore.1.
	* doc/dezyne.texi (Invoking dzn explore): Remove section.

	simulate: Add ,quit and ,state commands.
	* dzn/vm/util.scm (%commands): Add ,quit and ,state.
	(%help-info): Document them.
	(read-input): Update accondingly.  On empty input, recurse.  On EOF,
	exit.

	trace: Add trail to JSON.
	* dzn/trace.scm (steps->trail): New procedure, factor-out from...
	(trace:format-trace): ...here.
	(trace:steps->json): Use it to add trail to JSON.

2022-01-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build-aux/dezyne.org: Update Joran's email.
	Run build-aux/dezyne.sh.

	* build-aux/dezyne-org.sh: Use joran.jessurun@ajmail.nl.
	* test/all/async_shell/async_shell.dzn: Update.
	* test/all/system_mix_bindings/system_mix_bindings.dzn: Update.

2022-01-19  Rutger van Beusekom  <rutger@dezyne.org>

	wfc: Move foreign_conflict to well-formedness.
	* dzn/wfc.scm (wfc)[foreign]: New specialization.
	* test/all/foreign_conflict: Rename to...
	* test/all/wf_foreign_conflict: ...this.
	* test/all/local.mk (PARSER_TESTS): Add it.
	(REGRESSION_TESTS, XFAIL_TESTS): Remove foreign_conflict.
	* test/all/wf_declaredBefore/wf_declaredBefore.dzn (wf_declaredBefore):
	Add empty behavior to avoid foreign-conflict wfc error.

	test: Add wf_missing_bindings.
	* test/all/wf_missing_bindings: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

	wfc: Reimplement missing-bindings, fixes unbound instance.
	* dzn/wfc.scm (missing-bindings)[port,instance]: Remove specializations.
	[system]: Rewrite.
	* test/all/wf_bindingPortNotBound/baseline/verify/wf_bindingPortNotBound.stderr:
	Update accordingly
	* doc/parse/binding-two-wildcards.texi,
	doc/parse/instance-port-not-bound.texi,
	doc/parse/port-not-bound.texi: Regenerate.

2022-01-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove failures_nondet_optional.
	After the removal of non-determisisme in the interface, this test is
	already covered by compliance_failures_optional.

	* test/all/failures_nondet_optional: Remove.
	* test/all/local.mk (REGRESSION_TESTS): Remove it.

2022-01-18  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add assign_formal.
	* test/all/assign_formal/assign_formal.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-01-18  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Fix crash when assigning to a formal.
	This implements assign for formals.

	Reported by Vladimir Ivin <vladimir.ivin@thermofisher.com>.

	* dzn/vm/util.scm (assign)[program-counter]: Remove <variable> typing
	of variable parameter.
	[program-counter formal action],
	[program-counter formal expression],
	[program-counter formal call]: New specializations.

2022-01-10  Rutger van Beusekom  <rutger@dezyne.org>

	vm: Avoid unbounded recursion for system with foreign components.
	Adding async Ranking in a system that includes a foreign component that
	has both provides and requires ports (don't do that!) would enter
	endless recursion.

	* dzn/vm/runtime.scm (runtime:rank!): Skip <runtime:foreign>s.

2021-12-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Remove silence feature.
	* dzn/goops.scm (<on>)[silent?]: Remove field.
	* dzn/parse/ast.scm (parse-tree->ast): Do not call mark-silent.
	* dzn/wfc.scm (wfc)[on]: Do not call modeling-silent.
	(modeling-silent): Remove.
	* dzn/parse/silence.scm: Remove.
	* dzn/parse/local.mk (dist_%C%_scm_DATA): Remove it.
	* test/all/hello_interface_silent,
	test/all/hello_silent,
	test/all/illegal_async_silent,
	test/all/illegal_silent,
	test/all/illegal_silent_external,
	test/all/silent_nondet,
	test/all/silent_optional,
	test/all/silent_optional_broken,
	test/all/silent_optional_function,
	test/all/silent_provides,
	test/all/silent_unused_out,
	test/all/wf_modelingSilent: Remove.
	* test/all/local.mk (HELLO_TESTS, PARSER_TESTS, REGRESSION_TESTS):
	Update accordingly.
	* test/dzn/dzn.scm (no-interface-determinism?): Remove.
	(run-verify): Remove usage of --no-interface-determinism flag.
	(run-simulate-trace): Likewise.
	* dzn/verify/pipeline.scm (mcrl2:verify-interface-asserts): Remove usage
	of --no-interface-determinism flag.
	* dzn/commands/verify.scm (parse-opts): Remove
	--no-interface-determinism flag.
	* dzn/vm/run.scm (run-silent): Factor-out running external modeling
	to...
	(run-external-modeling): ...here.
	(run-interface): Remove run-silent.
	(run-to-completion*): Use run-external-modeling instead of run-silent.
	* dzn/vm/step.scm (step-action-down): Likewise.
	* dzn/code/makreel.scm (makreel:trigger-name): Do not use .silent? or
	create <silent-trigger>.
	(makreel:silent): Remove.
	* dzn/templates/makreel.scm (silent): Remove.
	* dzn/templates/makreel/proc@the-end: Do not call it.
	* dzn/templates/makreel/silent@the-end: Remove.
	* dzn/templates/makreel/component-allow-requires@port,
	dzn/templates/makreel/component-hide-async@port,
	dzn/templates/makreel/component-hide-requires@port,
	dzn/templates/makreel/event-act@interface,
	dzn/templates/makreel/event-act@port,
	dzn/templates/makreel/interface-action-proc@port,
	dzn/templates/makreel/modeling-sort@interface,
	dzn/templates/makreel/proc@interface,
	dzn/templates/makreel/proc@the-end,
	dzn/templates/makreel/provides-allow@port,
	dzn/templates/makreel/provides-rename@port,
	dzn/templates/makreel/queue-allow-requires@port,
	dzn/templates/makreel/semantics-allow-requires@port: Remove silent,
	silent', silent_end, silent_end'.
	* dzn/simulate.scm (pc->provides-traces,
	provides-instance-traces-alist): Remove procedures.
	(rtc-lts->traces): Remove #:prefix-set? and #:continue-on-silent?
	parameters.
	(check-provides-compliance): Remove port-traces-alist parameter.  Update
	callers.  Use simple run-to-completion on port-event or modeling-names
	to calculate port traces.
	[run-provides-modeling]: New inner procedure.
	(check-provides-compliance+): Remove port-traces-alist parameter.
	Update callers.
	(check-provides-compliance*): Likewise.
	(check-deadlock): Update caller.
	(run-sut): Update caller.
	* test/all/hello_nondet/hello_nondet.dzn (hello_nondet): Rewrite to use
	simple, observable non-determinism.
	* test/all/compliance_failures_illegal/baseline/simulate/compliance_failures_illegal.stderr:
	Update baseline.

2022-01-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_failures_inevitable: Rename from compliance_failures_inevitable2.
	* test/all/compliance_failures_inevitable2: Rename to...
	* test/all/compliance_failures_inevitable: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2022-01-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Update rename for removal of reorder.
	* test/bin/rename: Remove special casing for verify.

2022-01-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove compliance_failures_inevitable.
	After the removal of non-determisisme in the interface, this test is
	already covered by compliance_failures_optional.

	* test/all/compliance_failures_inevitable:: Remove test.
	* test/all/local.mk (REGRESSION_TESTS): Remove it.

2021-12-15  Rutger van Beusekom  <rutger@dezyne.org>

	test blocking_external: Rename from blocking_silent_external.
	No silence here.  Also canonicalize.

	* test/all/blocking_silent_external: Rename to:
	* test/all/blocking_external: This.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2022-01-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Support gcc-11.
	Reported by Joran Jessurun <joran@ajmail.nl> via IRC.

	* test/all/LegoBallSorter/lego_usb.hh,
	test/all/calling_context/main.cc,
	test/all/collateral_blocking_shell/main.cc,
	test/all/collateral_blocking_shell2/main.cc,
	test/all/foreign_optional/c++/main.cc: Include <limits>.
	* test/all/LegoBallSorter/gui.cc: Likewise.  Update for file2file.
	* test/all/LegoBallSorter/makefile (DZN): New variable.
	(CCACHE): Do not depend on `which'.
	(code, runtime): Update for new tree layout.
	* test/all/LegoBallSorter/timer.hh: Update for file2file.

2022-01-06  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add illegal_optional.
	* test/all/illegal_optional: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-01-06  Rutger van Beusekom  <rutger@dezyne.org>

	graph: Do not add redundant implicit illegal trace from LTS.
	This is a follow-up to commit
	    b2bc02cac306e641e0ff4f9a89b957aeef0a83dd
	    simulate: Support implicit interface illegals.

	The implicit-illegal trace should only be added in the absence of any
	other trace.

	* dzn/vm/run.scm (filter-implicit-illegal-only): Thinko: fix matching of
	implicit illegal trace.
	* dzn/explore.scm (pc->rtc-lts): Only remove duplicate implicit illegals
	for same label (i.e., not for 'external).

2022-01-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_foreign_file: Resurrect scheme.
	* test/all/hello_foreign_file/scheme/stranger.scm: Use iworld module.

2022-01-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Enable foreign_conflict.
	* test/all/local.mk (REGRESSION_TESTS): Add foreign_conflict.

2022-01-22  Paul Hoogendijk  <paul@dezyne.org>

	ast: Memoize ast:lookup-variable.
	* dzn/ast.scm (ast:lookup-variable): Rename to...
	(ast:lookup-variable-): ...this.
	(ast:lookup-variable): New memoizing method.

	ast: Dramatically improve performance of ast:eq?.
	* dzn/ast.scm (ast:eq?)[ast ast]: Special-case comparing to self and
	compare parent path lazily by recursing.
	(ast:id-path): Remove.

2022-01-05  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add resolve_formal.
	* test/all/resolve_formal/resolve_formal.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-01-05  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Two fixes for resolving of variables.
	* dzn/ast.scm (ast:statement-prefix): New method.
	(ast:lookup-var): Rename to...
	(ast:lookup-variable): ...this.  Add "statements" parameter and use it
	to correctly resolve or ignore local variable definitions.
	(.variable): Update callers.
	* test/all/local.mk (XFAIL_TESTS): Remove resolve_member.

2022-01-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: resolve_member: Rename from alpha_local2.
	* test/all/alpha_local2/alpha_local2.dzn: Rename to...
	*test/all/resolve_member/resolve_member.dzn: ...this.
	* test/all/local.mk (REGRESSION_TESTS, XFAIL_TESTS): Update accordingly.

2022-01-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	ast: Use full name for subints.
	* dzn/ast.scm (ast:full-name)[int]: Use user-defined name if available.
	* dzn/code.scm (code:reply-type)[int, trigger]: Add specializations.
	[ast, reply]: Rewrite to use them.
	* test/all/wf_expressionExpected/baseline/verify/wf_expressionExpected.stderr: Update.

2022-01-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Describe creation of baseline in test/all/README.
	* test/all/README: Describe creation of verify and simulate baseline for
	compliance0.

	test: Add test/bin/update.sh.
	* test/bin/update.sh: New file.

	test: Do not filter-out '(state ' from baseline.
	* test/dzn/dzn.scm (run-simulate-trace): Do not run filter-stdout on
	error trace.
	* test/all/*/baseline/simulate/*: Update accordingly.

	test: compliance0: Canonicalize.
	* test/all/compliance0/compliance0.dzn: Use canonical names.  Remove
	[true] guards.
	* test/all/compliance0/trace,
	test/all/compliance0/baseline/simulate/compliance0,
	test/all/compliance0/baseline/simulate/compliance0.stderr,
	test/all/compliance0/baseline/verify/compliance0,
	test/all/compliance0/baseline/verify/compliance0.stderr: Update accordingly.

	test/lts: Distribute baseline under CC0-1.0.
	* test/lts/README: Update to use CC0-1.0.

2022-01-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove compound_local_assign_call.
	This is superseeded by hello_unused_assign.

	* test/all/compound_local_assign_call/compound_local_assign_call.dzn: Remove.
	* test/all/local.mk (REGRESSION_TESTS): Remove it.

2021-12-21  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_unused_assign.
	* test/all/hello_unused_assign: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-12-21  Rutger van Beusekom  <rutger@dezyne.org>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Avoid syntax error of assign of unused variable.
	Pop variables going out of scope.

	* dzn/code/makreel.scm (last-statement?: New procedure.
	(makreel:assign-call-parameter): Use it in new method.
	* dzn/templates/makreel.scm (assign-call-parameter): Use it in new template.
	* dzn/templates/makreel/assign-call@assign: Use it to move parameter to...
	* dzn/templates/makreel/assign-call-parameter@assign: ...here.
	* dzn/templates/makreel/assign-call@variable: Likewise, move parameter to...
	* dzn/templates/makreel/assign-call-parameter@variable: ...here.
	* test/all/local.mk (XFAIL_TESTS): Remove compound_local_assign_call.

2021-12-21  Rutger van Beusekom  <rutger@dezyne.org>

	test: Add foreign_injected.
	* test/all/foreign_injected: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2022-01-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Support foreign injected trace output.
	* dzn/ast.scm (ast:direction)[port]: New specialization.
	* dzn/templates/scheme/injected-require-initializer@port: Use it in new
	template.
	* dzn/templates/scheme/model@component: Use it.

2022-01-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Support foreign injected trace output.
	* dzn/templates/cs/injected-require-initializer@port: New file.
	* dzn/templates/cs/model@component: Use it.

	simulate: Support foreign injected trace.
	* dzn/vm/run.scm (extend-trace): Use trace->trail for debug logging too.
	* dzn/vm/report.scm (pc->event)[action]: Cater for foreign injected
	port.

2021-12-21  Rutger van Beusekom  <rutger@dezyne.org>

	c++: Support foreign injected trace output.
	* dzn/ast.scm (ast:injected-port*): New method.
	* dzn/templates/code.scm (injected-require-initializer): Use it in new template.
	(injected-port-require-override): Likewise
	* dzn/templates/c++/injected-port-require-override@port,
	dzn/templates/c++/injected-require-initializer@port: New template
	files.
	* dzn/templates/c++/event-slot@trigger: Use them.

	simulate: Support foreign injected.
	* dzn/vm/report.scm (complete-split-arrows-pcs): Cater for forein injected port.
	* dzn/vm/runtime.scm (runtime:other-port-unmemoized): Likewise.

2021-12-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Comment-out "Binary Installation".
	* doc/dezyne.texi (Installation): Reword intro.
	(Binary Installation): Comment-out.

2021-12-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Respect --model when generating code.
	This fixes running the debug output of the pipeline.

	* dzn/code/makreel.scm (ast->): Use makreel:get-model when model is set.

2021-12-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.14): Move done items...
	(DONE): ...here.
	(Release 2.14): Remove.  Move todo items...
	(Release 2.15): ...here.  Add removal of silent from...
	(Release 2.17): ...here.  Remove silent improvement suggestion.

2021-12-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Move Dezyne-IDE manual to download.verum.com.
	* .texinfo/htmlxref.cnf (V): New variable.
	(dezyne-ide): Use it for Dezyne-IDE manual.

2021-11-26  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Add section "Foreign Component".
	* doc/dezyne.texi (Code Integration): Reword.
	(Integrating C++ Code): Likewise.
	(Foreign Component): New section.
	* doc/examples/foreign.cc,
	doc/examples/foreign.hh,
	doc/examples/hello_foreign.dzn: New files.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Add them.

2022-02-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: bin/run: Support --enable-languages="".
	* test/bin/run.in (main): Handle empty list of languages.

2021-12-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build-aux/copyright header.scm: Also skip email update commits.
	Run:
	    build-aux/copyright-header.scm

	* build-aux/copyright-header.scm (author-copyright-line): Use custom
	format, remove prefix and SED hackery.  Only look at first line of
	message, but skip "email" and "dezyne.org" too.
	* (skip?): Do not skip .gitignore.
	(main): Always filter-out skip? files.

2021-12-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Fix lint error in synopsis.
	* guix/gnu/packages/dezyne.scm (dezyne): Remove article.

2021-12-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Post-release update.
	* doc/announce/ANNOUNCE-2.14.0: Add checksums.
	* Makefile.am (--previous-version): Bump to 2.14.0.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.14.0.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.14.0.

	doc: Add `ANNOUNCE-2.14.0'.
	* doc/announce/ANNOUNCE-2.14.0: New file.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.14.0 since 2.13.3): Mention release as free
	software, mostly reuse compliancy, well-formedness updates and
	documentation rewrite.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "build: Distribute test baseline data as binary tarball."
	Luckily, this klugde is not necessary.

	This reverts commit dbeea7372140a8a4c64638b0a61260033fcce3bd.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Distribute test baseline data as binary tarball.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* Makefile.am (am__tar): Move tar flags to...
	(TAR_FLAGS): ...new variable here.
	(TEST_BASELINE): New variable.
	(dist-hook): Use it to remove test baseline data from tarball.
	(test-data): New target.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	debian: Update and bump to 2.14.0.
	* debian/changelog (2.14.0-0): New release.
	* debian/copyright (Source): Update to use savannah url.  Include GFDL
	for the documentation.
	* debian/watch (opts): Update to use dezyne.org url.
	* debian/dzn.lintian-overrides: Update package name.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Remove "Programming Index".
	The idea was to document Dezyne internals for programmers, and while
	that is still a good idea, there is no point in carrying an empty
	chapter until then.

	* doc/dezyne.texi (Programming Index): Remove.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Remove "Glossary".
	One of the last bits of the original manual, which did not have an
	index.  Not really useful.

	* doc/dezyne.texi (Glossary): Remove.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Cleanups to "Glossary".
	* doc/dezyne.texi (Glossary): Cleanups, add references.

	doc: Add "Conditions for using Dezyne".
	* doc/dezyne.texi (Conditions for Using Dezyne): New section.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Add https://reuse.software copyright and license specification.
	Note that reuse-0.13.0 fails to recocgnise these license files:

	   COPYING: GPL-3.0
	   COPYING.AGPL: AGPL-3.0
	   COPYING.CC0: CC0-1.0
	   COPYING.LESSER: LGPL-3.0
	   doc/fdl-1.3.texi: FDL-1.3

	and will complain about it.

	* .reuse/dep5: New file.
	* Makefile.am (EXTRA_DIST): Add it.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Add target: check-reuse.
	Running

	    make check-reuse

	copies the standard GNU license COPYING.* and doc/fdl-1.3.texi files to
	the reuse 3.0 specified mandatory location, runs "reuse lint" and cleans
	up.

	* Makefile.am (check-reuse): New target.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	copyright-header: Support .gitignore.
	* build-aux/copyright-header.scm (script-file?): Add ".gitignore".
	(author-unique): Add entries for rutger@dezyne.org and paul@dezyne.org.
	* .gitignore: Add missing header.

	build: Use "COPYING" and "COPYING.AGPL", remove "COPYING.GPL'.
	* COPYING: Rename to...
	* COPYING.AGPL: ...this.
	* COPYING.GPL: Rename to...
	* COPYING: ...this.

	guix: dezyne: Update for inclusion in GNU Guix.
	* guix/gnu/packages/dezyne.scm (dezyne)[build-inputs]: Remove autoconf,
	automake, gnu-gettext, help2man, perl, texinfo, zip.  These are needed
	for development from Git.
	[propagated-inputs]: Move to...
	[inputs]: ...here.
	(synopsis, description): Write meaningful content.
	(homepage): Update to https://dezyne.org.
	(arguments): Refactor "wrap-binaries" stage.
	(licenses): Update.
	* guix.scm (dezyne.git)[native-inputs]: New override for development
	from Git.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Do not rebuild man pages by default.
	Automake builds man pages after everything is built, upon make install.
	This removes the dependency on help2man and perl for tarball builds.

	* Makefile.am (doc/dzn.1): Remove dependencies.
	(doc/dzn-%.1): Likewise.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Show GNU-compliant startup and help messages.
	* dzn/vm/util.scm (%commands, %help-info, %copying-info, %startup-info,
	%warranty-info): New variables.
	(show-eligible): Add ",help" and ",show" commands to readline
	completion.
	(read-input): Handle commands.
	* dzn/simulate.scm (run-trail): Show %startup-info on interactive
	startup.

	dzn: Show GNU-compliant version information.
	* configure.ac: Use "Dezyne" for package name.
	* Makefile.am (do_subst): Add @PACKAGE_NAME@.
	* dzn/config.scm.in (%package-name, %copyright-info, %license-info): New
	variables.
	(%version): Rename to...
	(%package-version): ...this.
	* dzn/command-line.scm (show-version-and-exit): Use them in new
	procedure.
	* dzn/script.scm (parse-opts): Use it.
	* dzn/templates/dzn.scm (version): Use %package-version.
	* dzn/templates/c++-exception-wrappers.scm (version): Likewise.

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.14): Move done tasks...
	(DONE): ...here.

	doc: Update `README'.
	* README: Update to use new description from "Introduction".
	(SUBTITLE): Update from manual.
	(Requirements): Update from manual.
	(Contact): Mention the bug database at gitlab.

	doc: Update `HACKING' with info dir hints.
	* HACKING (Adding dezyne to the toplevel info menu.): New section.

2021-12-06  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Update chapter "Execution Semantics".
	* doc/dezyne.texi (Execution Semantics): Add intro.
	* doc/semantics/external_multiple_out.dzn: Rename to...
	* doc/semantics/external_multiple_out3.dzn: ...this.
	* doc/semantics/external_multiple_out1.dzn,
	doc/semantics/external_multiple_out2.dzn: New files.
	* doc/semantics/local.mk (DOCUMENTATION_SEMANTICS): Update accordingly.
	* build-aux/update-semantics.sh: Update accordingly.
	* doc/images/external_multiple_out.png: Remove.
	* doc/images/external_multiple_out1.png,
	doc/images/external_multiple_out2.png,
	doc/images/external_multiple_out3.png: New files.
	* doc/images/local.mk (dist_info_images_DATA): Update accordingly.

	test: Add external_multiple_out1, and external_multiple_out2.
	* test/all/external_multiple_out: Rename to...
	* test/all/external_multiple_out3: ...this.
	* test/all/external_multiple_out1,
	test/all/external_multiple_out3: New tests.
	* test/all/local.mk (SEMANTICS_TESTS): Update accordingly.
	* test/bin/semantics.sh: Likewise.
	* test/all/semantics/baseline/semantics.org: Update baseline.

	doc: Add chapter "Defensive Design".
	* doc/dezyne.texi (Defensive Design): New chapter.
	* doc/examples/armor.dzn: New file.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Add it.

	doc: "Code Integration": Replace ASCII diagram with PNG.
	* doc/images/some_system.png: New file.
	* doc/images/local.mk (dist_info_images_DATA): Add it.
	* doc/dezyne.texi (Code Integration): Reword intro.
	(Integrating C++ Code): Use it to replace ASCCI
	diagram.  Move examples out to...
	* doc/examples/some_component.dzn,
	doc/examples/some_component.hh,
	doc/examples/some_interface.dzn,
	doc/examples/some_interface.hh,
	doc/examples/some_system.dzn: these new files.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Add them.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	dzn: Drop the global -j,--json option.
	The --json option is a remnant of the pre-2.10 cloud-based
	implementation.  It was only used by dzn parse and dzn traces.

	On dzn traces, it printed the names of the traces to stdout after all
	traces were generated; dzn --verbose traces will now do that as progress
	on stderr.

	The irregular "working-directory" in the AST and the move to guile-json4
	have broken dzn --json parse in two ways.

	* dzn/script.scm (parse-opts): Remove json option.
	* dzn/commands/parse.scm (main): Remove attempt to produce json output.
	* dzn/commands/traces.scm (model->traces): Remove json option.  Pass
	verbose? to...
	* dzn/lts.scm (lts->traces): ...here, using the new #:verbose?
	parameter.  Likewise, pass it to..
	(generate-trace): ..here, using the new #:verbose? parameter.  When
	verbose?, print name of trace file to stderr.
	* doc/dezyne.texi (Invoking dzn): Remove it.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Allow DRAFT gen-announce to succeed without tarball.
	* Makefile.am (gen-announce): Modify announce-gen to not fail without
	tarball.  Update release procedure.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Oops, use --trace instead of --trail.
	Trace only takes code or simulator arrow traces and split-arrow traces.

	* dzn/commands/trace.scm (parse-opts): Oops, use --trace for the input;
	trace does not take a trail or event trace.
	* doc/dezyne.texi (Invoking dzn trace): Update.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update "Invoking dzn ...".
	* doc/dezyne.texi (direntry): Complete.
	(menu): Add node descriptions.
	(Invoking dzn): Add some background and explanations.
	(Invoking dzn code): Likewise.
	(Invoking dzn graph): Likewise.
	(Invoking dzn language): Likewise.
	(Invoking dzn lts): Likewise.
	(Invoking dzn parse): Likewise.
	(Invoking dzn simulate): Likewise.
	(Invoking dzn trace): Likewise.
	(Invoking dzn verify): Likewise.

	doc: Scale images for PDF and break long lines.
	* doc/dezyne.texi (Binary Installation): Break lines.
	(Hello World!): Likewise.
	(A Simple State Machine): Scale images for PDF.
	(A Camera Example): Likewise.
	(The Lego Ball Sorter): Likewise.
	(Error Handling and Recovery): Add whitespace.
	(Extern Data Type): Break lines.
	(Variable): Likewise.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Break long lines in well-formedness error messages.
	Lines longer than 72 characters look bad in the PDF doc.

	* Makefile.am (%.texi): Use fmt and sed to break lines of more than 72
	characters.
	* doc/parse/: Run make update-doc.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Re-generate trace images of "Execution Semantics".
	* build-aux/update-semantics.sh: New file.
	* Makefile.am (EXTRA_DIST): Add it.
	* doc/images/direct_in.png,
	doc/images/direct_multiple_out1.png,
	doc/images/direct_multiple_out2.png,
	doc/images/direct_out.png,
	doc/images/external_multiple_out.png,
	doc/images/indirect_blocking_multiple_external_out.png,
	doc/images/indirect_blocking_out.png,
	doc/images/indirect_in.png,
	doc/images/indirect_multiple_out1.png,
	doc/images/indirect_multiple_out2.png,
	doc/images/indirect_multiple_out3.png,
	doc/images/indirect_out.png: Remove.
	* doc/images/direct_in.svg,
	doc/images/direct_multiple_out1.svg,
	doc/images/direct_multiple_out2.svg,
	doc/images/direct_out.svg,
	doc/images/external_multiple_out.svg,
	doc/images/indirect_blocking_multiple_external_out.svg,
	doc/images/indirect_blocking_out.svg,
	doc/images/indirect_in.svg,
	doc/images/indirect_multiple_out1.svg,
	doc/images/indirect_multiple_out2.svg,
	doc/images/indirect_multiple_out3.svg,
	doc/images/indirect_out.svg: New files.
	* doc/dezyne.texi (Execution Semantics): Update accordingly.
	* doc/images/README: Mention creation using Dezyne-P5.
	* doc/images/local.mk (dist_info_images_DATA): Update accordingly.

2021-12-06  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Add @node's to "Execution Semantics".
	* doc/dezyne.texi (Execution Semantics): Add @node for each section.

	doc: Add chapter "Ideas and Concepts".
	* doc/dezyne.texi (Ideas and Concepts): New chapter.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Update Henk's email address throughout.
	Run

	    build-aux/dezyne-org.sh

	* build-aux/copyright-header.scm (author-unique): Use hank@mudball.nl.
	* build-aux/dezyne-org.sh: Likewise.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Avoid crash on undefined event parameter type.
	Avoid using ast:in-triggers during well-formednes, it needs a correct
	AST.  Instead, do a harmless, robust event lookup.

	This is a follow-up to commit
	    e15fb712cf24075970614d97aeddc1784d73a490
	    test: Add parse_behaviour_without_trigger.

	Reported by Michael van de Ven <michael.van.de.ven@thermofisher.com> via
	IRC.

	* dzn/wfc.scm (wfc:provides-in-event*, wfc:requires-out-event*,
	wfc:trigger-event*): New methods.
	(wfc)[component]: Use wfc:trigger-event* instead of
	ast:in-triggers.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add blocking-local-state-diagram.
	* test/all/blocking-local-state-diagram: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Avoid deadlock in state diagram through leakage of locals.
	On a blocked thread, the popping of local variables was postponed to
	just before the return after the release.  As the state diagram uses a
	hash of the state, as an unintended consequence the state of a blocked
	thread included local variables.  This caused for states to artificially
	differ where they should have been the same, leading to deadlocks.

	* dzn/vm/step.scm (step)[block]: In a blocking context, pop locals.
	[end-of-on, trigger-return]: In a blocking context, skip pop locals.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts: Cleanup toplevel, remove unused options.
	* dzn/lts.scm (aut-file-format-error, validate-aut-file, print-metrics):
	Remove.
	(write-lts): Rename to...
	(display-lts): ...this, and refactor.
	* dzn/commands/lts.scm (parse-opts): Remove --list-accepts,
	--list-events, --deterministic, --metrics, --validate.
	(main): Rewrite.
	* test/dzn/lts.scm (test:main): Remove obsolete tests.
	* doc/dezyne.texi (Invoking dzn lts): Update accordingly.

	doc: Add intro to chapter "Code Integration".
	* doc/dezyne.texi (Code Integration): Add intro.
	(Integrating C++ Code): Remove "Purpose" section.

	doc: Move "Well-formedness -- System" to the end of the chapter.
	* doc/dezyne.texi ("Well-formedness -- System"): Move to the end of the
	chapter.

	doc: Use @node's and @menu's in "Well-formedness".
	* doc/dezyne.texi (Well-formedness): Add @node, run
	texinfo-all-menus-update.

	doc: Add section "Must specify provides-port with reply on out-trigger".
	* doc/dezyne.texi (Must specify provides-port with reply on
	out-trigger): New section.
	* doc/parse/requires-reply-needs-provides-port.dzn: New file.
	* doc/parse/local.mk (DEZYNE_PARSE_EXAMPLES): Add it.
	* doc/parse/requires-reply-needs-provides-port.texi: New file.

	wfc: Use "requires-out trigger" instead of "out-event".
	* dzn/wfc.scm (reply-without-port): Use "requires-out trigger".
	(reply-in-on): Likewise.
	* test/all/wf_replyOnOutEvent/baseline/verify/wf_replyOnOutEvent.stderr,
	test/all/wf_replyOnOutEventMultiplePort/baseline/verify/wf_replyOnOutEventMultiplePort.stderr:
	Update baseline.

	doc: Add section "Must specify provides-port with reply".
	* doc/dezyne.texi ("Must specify provides-port with reply"): New
	section.
	* doc/parse/function-reply-needs-provides-port.dzn: New file.
	* doc/parse/local.mk (DEZYNE_PARSE_EXAMPLES): Add it.
	* doc/parse/function-reply-needs-provides-port.texi: New file.

	doc: Update "Well-formedness" section names to actual error message.
	* doc/dezyne.texi (Well-formedness): Rename all sections to actual error
	messages.  Many changes throughout.
	* doc/parse/call-in-member-definition.dzn: New file.
	* doc/parse/local.mk (DEZYNE_PARSE_EXAMPLES): Add it.
	* doc/parse/call-in-member-definition.texi: New file.
	* doc/parse: Update.

	wfc: Use "info" for "of instance: ..." message.
	* dzn/wfc.scm (missing-bindings): Use wfc-info.
	* test/all/wf_bindingPortNotBound/baseline/verify/wf_bindingPortNotBound.stderr:
	Update baseline.

	wfc: Use "defined before" instead of "declared before".
	* dzn/wfc.scm (re-declaration): Rename to...
	(re-definition): ...this.  Use "defined before", "defined here".  Update
	callers.
	* test/all/parse_duplicate_declaration/baseline/verify/parse_duplicate_declaration.stderr,
	test/all/wf_NameClash/baseline/verify/wf_NameClash.stderr,
	test/all/wf_declaredBefore/baseline/verify/wf_declaredBefore.stderr:
	Update baseline.

	wfc: Typo remove redundant "error: ".
	* dzn/wfc.scm (missing-return): Remove "error: ".
	* test/all/wf_functionReturnValue/baseline/verify/wf_functionReturnValue.stderr:
	Update baseline.

	wfc: Use "cannot use" instead of "no .. allowed".
	* dzn/wfc.scm (tail-recursion): Use "cannot use".  Use wfc-info for
	statement after call.
	* test/all/wf_functionTailRecursion/baseline/verify/wf_functionTailRecursion.stderr:
	Update baseline.

	wfc: Drop "valued" in "valued call", "valued action".
	* dzn/wfc.scm (call-context): Remove "valued" for return expression and
	complex expression error.
	* test/all/wf_actionInExpression/baseline/verify/wf_actionInExpression.stderr:,
	test/all/wf_functionInExpression/baseline/verify/wf_functionInExpression.stderr:
	Update baseline.

	wfc: Use "otherwise guard" consistently.
	* dzn/wfc.scm (wfc)[guard]: Use "otherwise guard".
	* test/all/wf_otherwiseWithNonGuard/baseline/verify/wf_otherwiseWithNonGuard.stderr:
	Update baseline.

	wfc: Use "cannot use .." instead of "not supported (yet)".
	* dzn/wfc.scm (wfc)[blocking}: Reword.
	* dzn/wfc.scm (tail-recursion): Likewise.
	* test/all/wf_blockingMultipleProvides/baseline/verify/wf_blockingMultipleProvides.stderr,
	* test/all/wf_functionTailRecursion/baseline/verify/wf_functionTailRecursion.stderr:
	Update baseline.

	wfc: Use "must define" instead of "must have".
	* dzn/wfc.scm (wfc)[interface]: Use "must define".
	[component]: Likewise.
	* test/all/parse_component_without_trigger/baseline/verify/parse_component_without_trigger.stderr,
	test/all/wf_componentNeedsProvides/baseline/verify/wf_componentNeedsProvides.stderr,
	test/all/wf_componentNeedsTrigger/baseline/verify/wf_componentNeedsTrigger.stderr,
	test/all/wf_interfaceMustDefineBehavior/baseline/verify/wf_interfaceMustDefineBehavior.stderr,
	test/all/wf_interfaceMustDefineEvent/baseline/verify/wf_interfaceMustDefineEvent.stderr:
	Update baseline.

	wfc: Disallow formal-binding to non-data member variable.
	* dzn/wfc.scm (wfc)[formal-binding]: Also assert that variable is of
	type <extern>.
	* test/all/parse_out_binding/parse_out_binding.dzn: Test it.
	* test/all/parse_out_binding/baseline/verify/parse_out_binding.stderr:
	Update baseline.

	wfc: Add missing colons and quotes.
	* dzn/wfc.scm (single-quote): New procedure.
	(wfc)[instance]: Add missing colon.
	(wfc)[int]: Add missing quotes.
	[reply]: Likewise.
	[enum-literal]: Likewise.
	[field-test]: Likewise.
	[end-point]: Likewise.
	[binding]: Likewise.
	* test/all/parse_parameter_mismatch/baseline/verify/parse_parameter_mismatch.stderr,
	test/all/parse_type_mismatch/baseline/verify/parse_type_mismatch.stderr,
	test/all/wf_actionInExpression/baseline/verify/wf_actionInExpression.stderr,
	test/all/wf_bindingSameType/baseline/verify/wf_bindingSameType.stderr,
	test/all/wf_parameterDataType/baseline/verify/wf_parameterDataType.stderr,
	test/all/wf_replyOnOutEventMultiplePort/baseline/verify/wf_replyOnOutEventMultiplePort.stderr,
	test/all/wf_replyOnType/baseline/verify/wf_replyOnType.stderr,
	test/all/wf_subintMinMax/baseline/verify/wf_subintMinMax.stderr,
	test/all/wf_typeerror/baseline/verify/wf_typeerror.stderr,
	test/all/wf_undefined/baseline/verify/wf_undefined.stderr: Update baseline.

2021-12-06  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Add section "Joining Activities".
	* doc/dezyne.texi (Joining Activities): New section.
	* doc/examples/ca.dzn: Remove.
	* doc/examples/join.dzn: New file.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Update accordingly.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Add section "Formal Binding".
	* doc/dezyne.texi (Formal Binding): New section.
	(Component On): Add formal-binding to grammar and mention its use in
	blocking.
	(Blocking): Reword the intro.

	doc: Describe non-determinism in "Dezyne Language Reference".
	* doc/dezyne.texi (On): Describe allowed and disallowed (unobservable)
	non-determinism.
	(Component On): Describe disallowed non-determinism.

	doc: Rewrite chapter "Formal Verification".
	* doc/dezyne.texi ("Verifying Models"): Rename to...
	("Formal Verification"): ...this, and rewrite.
	* doc/examples/illegal-requires.dzn: New file.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Add it.

2021-12-06  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Rewrite the "Purpose" section.
	* doc/dezyne.texi (Purpose): Rewrite.
	(Principles): Remove.
	(Typical use of Dezyne): Remove.
	(The Dezyne Application Domain): Remove.

2021-12-06  Rutger van Beusekom  <rutger@deyne.org>

	doc: Rewrite the "Introduction" chapter.
	* doc/dezyne.texi (Introduction): Rewrite.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	doc: Add section "The Lego Ball Sorter".
	* doc/dezyne.texi (The Lego Ball Sorter): New section.
	* doc/images/LegoBallSorter-system.png,
	doc/images/MaterialHandler-system.png: New files.
	* doc/images/local.mk (dist_info_images_DATA): Add them.

	doc: Add section "A Camera Example".
	* doc/dezyne.texi (A Camera Example): New section.
	* doc/images/Camera-state.png,
	doc/images/Camera-system.png: New files.
	* doc/images/local.mk (dist_info_images_DATA): Add them.

	doc: Add section "A Simple State Machine".
	* doc/dezyne.texi (A Simple State Machine): New section.
	* doc/examples/ihello-bool.dzn: New file.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Add it.
	* doc/images/ihello-bool.png: New file.
	* doc/images/local.mk (dist_info_images_DATA): Add it.

	doc: Add chapter "Getting Started".
	* doc/dezyne.texi (Getting Started): New chapter.
	* doc/examples/hello-world.dzn,
	doc/examples/ihello-world.dzn: New files.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Add them.

2021-12-06  Paul Hoogendijk  <paul@dezyne.org>

	doc: Typos in chapter "Installation".
	* doc/dezyne.texi (Installation): Fix two typos.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Typos and fixes in chapter "Installation".
	* doc/dezyne.texi (Installation): Typos, remove mention of Dezyne-IDE.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Add some sections to chapter "Contributing".
	Parts taken from/heavily inspired by GNU Guix.

	* doc/dezyne.texi (Building from Git): New section.
	(The Perfect Setup): Remove mention of Dezyne-IDE.
	(Submitting Patches): New section.
	(Coding Style): New section.
	* doc/dezyne.texi (Requirements): Nitpicks.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	doc: Add section "Async Ports".
	* doc/dezyne.texi (Async Ports): New section.
	* doc/examples/dzn.async.dzn: New file.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Add it.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Whitespace fixes.
	* doc/dezyne.texi (Glossary): Add newlines.
	* doc/semantics/direct_in.dzn,
	doc/semantics/direct_multiple_out.dzn,
	doc/semantics/direct_multiple_out1.dzn,
	doc/semantics/direct_multiple_out2.dzn,
	doc/semantics/direct_out.dzn,
	doc/semantics/external_multiple_out.dzn,
	doc/semantics/indirect_blocking_multiple_external_out.dzn,
	doc/semantics/indirect_blocking_out.dzn,
	doc/semantics/indirect_in.dzn,
	doc/semantics/indirect_multiple_out.dzn,
	doc/semantics/indirect_multiple_out1.dzn,
	doc/semantics/indirect_multiple_out2.dzn,
	doc/semantics/indirect_multiple_out3.dzn,
	doc/semantics/indirect_out.dzn: Add whitespace.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger@dezyne.org>

	doc: Add chapter "Dezyne Language Reference".
	* doc/dezyne.texi (The Dezyne Modeling Language): Merge with...
	(Dezyne Systax): ...this into...
	(Dezyne Language Reference): ...a full rewrite of this new chapter.
	* doc/examples/decompose2-proxy.dzn,
	doc/examples/decompose2.dzn,
	doc/examples/function-call-status.dzn,
	doc/examples/icode.dzn,
	doc/examples/iconsole.dzn,
	doc/examples/imotion2.dzn,
	doc/examples/imotion3.dzn,
	doc/examples/imotion4.dzn,
	doc/examples/imperative-action.dzn,
	doc/examples/iprocess-safety1.dzn,
	doc/examples/iprocess-safety2.dzn,
	doc/examples/iprotocol-stack.dzn,
	doc/examples/iprotocol-stack1.dzn,
	doc/examples/isensor.dzn,
	doc/examples/itimer.dzn,
	doc/examples/itimer2.dzn,
	doc/examples/isiren.dzn,
	doc/examples/isiren1.dzn,
	doc/examples/isiren2.dzn,
	doc/examples/message-handler.dzn: Remove files.
	* doc/examples/inevitable-optional.dzn,
	doc/examples/remote-timer-proxy.dzn,
	doc/examples/top-middle-bottom.dzn: New files.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Update accordingly.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP: Mention 2.14 is to be the free software release.
	(Release 2.14): Move documentation and free-software items from...
	(Release 3.0): ...here.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Convert META to scheme, omit copyright header.
	Run
	    ./pre-inst-env build-aux/convert-meta.scm

	* test/all/*/META: Convert to scheme.
	* test/dzn/dzn.scm (get-meta): Use read instead of json-string>-alist.
	(skip?): Use symbol 'skip instead of string, and assq-ref.  Remove 'known.
	(get-meta-flag): Use assq-ref.
	(flush?): Use symbol instead of string.
	(thread-pool?): Likewise.
	(thread-safe-shell?): Likewise.
	(code-options): Likewise.
	(model?): Likewise.
	(model-unset?): Likewise.
	(trace-format): Likewise.
	(non-strict?): Likewise.
	(no-interface-determinism?): Likewise.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Ensure git timestamp command fails in tarball build.
	When the git timestamp check fails, the .tarball-timestamp fallback is
	properly used.  When a tarball is unpacked within another git archive,
	git does not fail but does not provide a timestamp, making the build
	fail.

	* Makefile.am (dist-hook): Distribute empty .git file.

2021-12-06  Rutger van Beusekom  <rutger@dezyne.org>

	doc: Remove dezyne-tutorial.
	* doc/dezyne-tutorial.texi: Remove.
	* doc/dezyne.texi (direntry): Remove it.
	* Makefile.am (info_TEXINFOS): Remove it.  Also remove dezyne-tutorial
	rules, dependencies and targets.
	* .texinfo/htmlxref.cnf (D): Remove entries for dezyne-tutorial.
	* .gitignore: Remove dezyne-tutorial entries.
	* doc/examples/ArmourIBVIRR.dzn,
	* doc/images/ArmouredSystemIBVIRR_system.png,
	doc/images/ArmouredSystemIIPRB_system.png,
	doc/images/ArmouredSystemIIPRE_system.png,
	doc/images/ArmouredSystemIIPRV_system.png,
	doc/images/ArmouredSystemISOE_system.png,
	doc/images/ArmouredSystemMAOE_system.png,
	doc/images/ArmouredSystemMSOE_system.png,
	doc/images/ArmouredSystemOENABP_system.png,
	doc/images/ArmouredSystemREIR_system.png,
	doc/images/AsyncTutorialFig1.png,
	doc/images/AsyncTutorialFig2.png,
	doc/images/AsyncTutorialFig3.png,
	doc/images/AsyncTutorialFig4.png,
	doc/images/AsyncTutorialFig5.png,
	doc/images/AsyncTutorialFig6.png,
	doc/images/AsyncTutorialFig7.png,
	doc/images/AsyncTutorialFig8.png,
	doc/images/AsyncTutorialFig9.png,
	doc/images/code_icon.75.png,
	doc/images/code_icon.png,
	doc/images/eclipse_1.75.png,
	doc/images/eclipse_1.png,
	doc/images/eclipse_2.75.jpg
	doc/images/eclipse_2.jpg
	doc/images/eclipse_3.75.png,
	doc/images/eclipse_3.png,
	doc/images/error_msg.png,
	doc/images/error_msg_2.png,
	doc/images/explore.png,
	doc/images/generated.png,
	doc/images/github.png,
	doc/images/menu_code.png,
	doc/images/multiple_markers.png,
	doc/images/sequence1.png,
	doc/images/sequence_1.png,
	doc/images/sequence_2.png,
	doc/images/sequence_3.png,
	doc/images/sequence_4.png,
	doc/images/sequence_5.png,
	doc/images/sequence_6.png,
	doc/images/sequence_7.png,
	doc/images/sequence_8.png,
	doc/images/simulate_icon.75.png,
	doc/images/simulate_icon.png,
	doc/images/state_1.png,
	doc/images/state_2.png,
	doc/images/state_3.jpg
	doc/images/system_1.png,
	doc/images/system_2.75.png,
	doc/images/system_2.png,
	doc/images/system_3.png,
	doc/images/system_4.png,
	doc/images/system_5.png,
	doc/images/system_6.png,
	doc/images/system_7.png,
	doc/images/system_8.png,
	doc/images/system_diagram1.png,
	doc/images/system_diagram2.png,
	doc/images/update_icon.75.png,
	doc/images/update_icon.png,
	doc/images/verification_error_1.75.png,
	doc/images/verification_error_1.png,
	doc/images/verify_icon.75.png,
	doc/images/verify_icon.png,
	doc/images/verify_results.75.png,
	doc/images/verify_results.png,
	doc/images/watch_1.png,
	doc/images/watch_2.png: Remove.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build-aux: Add convert-meta.scm
	* build-aux/convert-meta.scm: New file.

	test: Remove redundant model override METAs.
	* test/all/inner.space/META,
	test/all/name.space/META,
	test/all/simple.space/META: Remove.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove "cannot execute" from METAs.
	The test driver skips execution of error models.

	* test/all/compliance0/META,
	test/all/compliance_livelock/META,
	test/all/compliance_requires_illegal/META,
	test/all/deadlock_blocking_guard/META,
	test/all/deadlock_blocking_inevitable/META,
	test/all/deadlock_blocking_optional/META,
	test/all/deadlock_component0/META,
	test/all/deadlock_component1/META,
	test/all/determinism0/META,
	test/all/determinism1/META,
	test/all/determinism_async/META,
	test/all/illegal_component0/META,
	test/all/queuefull_external/META: Remove.
	* test/all/illegal_external_nonsynchronous/META,
	test/all/livelock_iterator/META,
	test/all/livelock_recurse/META,
	test/all/livelock_synchronous/META,
	test/all/livelock_synchronous2/META,
	test/all/livelock_synchronous_illegal/META,
	test/all/livelock_unfold/META,
	test/all/queuefull_external_sync/META: Remove skip "excute".

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove "code<2.8" from METAs.
	* test/all/hello_optional_flush/META: Remove skip code<2.8.0.
	* test/all/hello_tick/META: Remove.

	test: Remove "system model cannot run" METAs.
	* test/all/compliance_nonsynchronous_sync/META,
	test/all/compliance_system_provides_bool/META,
	test/all/hello_enum/META,
	test/all/hello_foreign/META,
	test/all/hello_foreign_file/META,
	test/all/hello_foreign_path/META,
	test/all/hello_int/META,
	test/all/hello_system/META,
	test/all/hello_systems/META,
	test/all/hellocheckcompbindings/META,
	test/all/silent_nondet/META,
	test/all/silent_optional/META,
	test/all/silent_optional_broken/META,
	test/all/silent_optional_function/META,
	test/all/system_helloworld/META,
	test/all/system_inevitable/META,
	test/all/system_nondet_out/META,
	test/all/system_nondet_reply/META,
	test/all/system_optional/META,
	test/all/system_out/META,
	test/all/system_out_internal/META,
	test/all/system_out_two/META,
	test/all/system_reply_bool/META,
	test/all/system_reply_enum/META: Remove.
	* test/all/LegoBallSorter/META,
	test/all/async_rank/META,
	test/all/async_ranking/META,
	test/all/blocking_system/META,
	test/all/blocking_system2/META,
	test/all/blocking_system3/META,
	test/all/blocking_system4/META,
	test/all/compliance_livelock/META,
	test/all/determinism_async/META
	test/all/hello_import_component/META,
	test/all/hello_injected/META: Remove known/skip "run" and "run"
	comment.

	test: Remove METAs from well-formedness tests.
	* test/all/wf_*/META: Remove.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test/language: Distribute README.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* test/language/local.mk (EXTRA_DIST): Add README.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc/semantics: Distribute README.
	* doc/semantics/local.mk (EXTRA_DIST): Add README.
	* doc/semantics/local.mk (TUTORIAL_SEMANTICS): Rename to...
	(DOCUMENTATION_SEMANTICS): ...this.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc/images: Distribute README.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* doc/images/local.mk (EXTRA_DIST): Add README.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	dzn/templates: Distribute README.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* dzn/templates/local.mk (EXTRA_DIST): Add README.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	debian: Add README.
	The debian/ directory is not distributed, neither is this file.

	* debian/README: New file.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Remove scm2json.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* bin/scm2json.in: Remove.
	* Makefile.am (EXTRA_DIST): Remove it.
	(bin_SCRIPTS): Remove scm2json.
	* dzn/scm2json.scm: Remove.
	* dzn/local.mk (dist_%C%_scm_DATA): Remove it.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Distribute emacs.
	* emacs/local.mk: New file.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	emacs: Add and update copyright headers.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* emacs/pre-inst-env.el: Add copyright header.
	* emacs/dzn-mode.el: Update copyright header.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build-aux/copyright-header.scm: Do not skip emacs directory.
	* build-aux/copyright-header.scm (skip?): Remove "emacs/".

	AUTHORS: Add legalese.
	* AUTHORS (legalese): New section.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Update COPYING.GPL, COPYING.LESSER from latest upstream.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	Run:

	    wget -O COPYING https://www.gnu.org/licenses/agpl-3.0.txt
	    wget -O COPYING.GPL https://www.gnu.org/licenses/gpl-3.0.txt
	    wget -O COPYING.LESSER https://www.gnu.org/licenses/lgpl-3.0.txt

	* COPYING.GPL,
	COPYING.LESSER: Use https URLs.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc/semantics: Distribute under the GFDL and AGPL.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* doc/semantics/README: Specify either the GFDL-1.3+ without invariant
	sections, or the AGPL-3+.

2021-12-06  Rutger van Beusekom  <rutger@dezyne.org>

	doc/parse: Add README.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* doc/parse/README: New file.
	* doc/parse/local.mk (EXTRA_DIST): Add it.

2021-12-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Distribute doc/examples.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* Makefile.am: Include doc/examples/local.mk.

2021-12-06  Rutger van Beusekom  <rutger@dezyne.org>

	doc/examples: Add README.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* doc/examples/README: New file.
	* doc/examples/local.mk (EXTRA_DIST): Add it.

2021-11-26  Rutger van Beusekom  <rutger@dezyne.org>

	dzn/templates/README: Distribute snippets under the CC0-1.0
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* dzn/templates/README: Add c, c++, dot, dzn.  Update license.

2021-11-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: lts: Add README.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* test/lts/README: New file.
	* test/lts/local.mk (EXTRA_DIST): Add it.

2021-11-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: semantics, state-diagram: Move test data to baseline directory.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* test/all/semantics/semantics.org: Move to...
	* test/all/semantics/baseline/semantics.org: ...here.

	* test/all/semantics/run: Update accordingly.

	* test/all/state-diagram/default.dot: Move to...
	* test/all/semantics/baseline/default.dot: ...here.

	* test/all/state-diagram/hide-actions.dot: Move to...
	* test/all/semantics/baseline/hide-actions.dot: ...here.

	* test/all/state-diagram/hide-labels.dot: Move to...
	* test/all/semantics/baseline/hide-labels.dot: ...here.

	* test/all/state-diagram/remove-extended.dot: Move to...
	* test/all/semantics/baseline/remove-extended.dot: ...here.

	* test/all/state-diagram/remove-ports.dot: Move to...
	* test/all/semantics/baseline/remove-ports.dot: ...here.

	* test/all/state-diagram/run: Update accordingly.

2021-11-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Distribute test/all/README.
	This is a follow-up to commit
	    e830c17f16c51cdaa406d56ea8317380b7f93c46
	    test: Add README to clarify license of baseline.

	* test/all/local.mk (EXTRA_DIST): Add %D%/ prefix to README.

2021-12-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Distribute test data under the CC0-1.0.
	* test/all/README: Update copyright and license status.

	Distribute images under the CC0-1.0.
	* doc/images/README: Update copyright and license status.

2021-12-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Add COPYING.CC0.
	* COPYING.CC0: New file.
	* Makefile.am (EXTRA_DIST): Add it.

2021-11-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid crash in reporting of compliance error.
	This is a follow-up to commit
	    b2bc02cac306e641e0ff4f9a89b957aeef0a83dd
	    simulate: Support implicit interface illegals.

	* dzn/vm/util.scm (trigger->string)[initial-compound]: New
	specialization.

2021-11-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Deprecate "behaviour", use "behavior" throughout.
	Run

	    sed -i -e s,behaviour,behavior,g \
	        -e s,Behaviour,Behavior,g \
	        -e s,BEHAVIOUR,BEHAVIOR,g \
	        $(find * -type f \
	          | grep -Ev 'NEWS|peg.scm|complete.scm|doc/announce|hello_usuk')

	    for i in $(find . -name '*behaviour*'); do \
	       git mv $i $(echo $i | sed s,behaviour,behavior,g); \
	    done

	    for i in $(find . -name '*Behaviour*'); do \
	       git mv $i $(echo $i | sed s,Behaviour,Behavior,g); \
	    done

	   ln -sf continuation@behavior dzn/templates/makreel/then-continuation@behavior
	   ln -sf continuation@behavior dzn/templates/makreel/else-continuation@behavior

	* dzn/parse/peg.scm (peg:parse): Rename "behaviour" to "behavior",
	except in keyword definition.
	* dzn/parse/complete.sc: Likewise.
	* dzn/templates/dzn/behaviour@behaviour: Rename to...
	* dzn/templates/dzn/behavior@behavior: ...this.
	* doc/parse/interface-without-behaviour.dzn: Rename to...
	* doc/parse/interface-without-behavior.dzn: ...this.
	* doc/parse/interface-without-behaviour.texi: Rename to...
	* doc/parse/interface-without-behavior.texi: ...this.
	* test/all/wf_interfaceMustDefineBehaviour/META: Rename to...
	* test/all/wf_interfaceMustDefineBehavior/META: ...this.
	* test/all/wf_interfaceMustDefineBehaviour/wf_interfaceMustDefineBehaviour.dzn:
	Rename to...
	* test/all/wf_interfaceMustDefineBehavior/wf_interfaceMustDefineBehaviour.dzn:
	...this.
	* test/language/component-behaviour.dzn: Rename to...
	* test/language/component-behavior.dzn: ...this.
	* test/language/interface-behaviour.dzn: Rename to...
	* test/language/interface-behavior.dzn: ...this.
	* dzn/templates/makreel/continuation@behaviour: Rename to...
	* dzn/templates/makreel/continuation@behavior: ...this.
	* dzn/templates/makreel/else-continuation@behaviour: Rename to...
	* dzn/templates/makreel/else-continuation@behavior: ...this.
	* dzn/templates/makreel/function-return@behaviour: Rename to...
	* dzn/templates/makreel/function-return@behavior: ...this.
	* dzn/templates/makreel/interface-reorder@behaviour: Rename to...
	* dzn/templates/makreel/interface-reorder@behavior: ...this.
	* dzn/templates/makreel/proc@behaviour: Rename to...
	* dzn/templates/makreel/proc@behavior: ...this.
	* dzn/templates/makreel/reorder-end@behaviour: Rename to...
	* dzn/templates/makreel/reorder-end@behavior: ...this.
	* dzn/templates/makreel/then-continuation@behaviour: Rename to...
	* dzn/templates/makreel/then-continuation@behavior: ...this.
	* test/all/parse_locations/baseline/parse_locations,
	* test/all/parse_peg_locations/baseline/parse_peg_locations: Update
	baseline.

2021-11-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Prepare regression tests for behavior rename.
	* test/all/compliance_external/compliance_external.dzn,
	test/all/compliance_single_to_multiple/compliance_single_to_multiple.dzn,
	test/all/deadlock_blocking_optional/deadlock_blocking_optional.dzn,
	test/all/deadlock_component0/deadlock_component0.dzn,
	test/all/deadlock_component1/deadlock_component1.dzn,
	test/all/deadlock_interface0/deadlock_interface0.dzn,
	test/all/deadlock_interface1/deadlock_interface1.dzn,
	test/all/deadlock_port_blocked/deadlock_port_blocked.dzn,
	test/all/illegal_silent_external/illegal_silent_external.dzn: Remove
	usage of hanging braces.  Update baseline accordingly.

	test: Prepare language tests for behavior rename.
	* test/dzn/language.scm ("component8",
	"component9",
	"component9a",
	"component10",
	"component10a"
	"typo"): Use #:line #:column instead of #:offset.

	test: Add hello_usuk.
	* test/all/hello_usuk/hello_usuk.dzn: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

	peg: Also allow US English spelling of "behavior".
	* dzn/parse/peg.scm (peg:parse): Add "behavior" as optional spelling
	for the "behaviour" keyword.
	* dzn/parse/complete.scm (complete:root): Likewise.
	* NEWS (Changes in 2.14.0 since 2.13.3): Mention in and update to
	"behavior".

2021-11-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Remove stale information from `HACKING'.
	* HACKING (GNU/Linux binary pack (generic, relocatable)): Remove section.
	(MinGW cross build): Likewise.

2021-11-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Include COPYING.GPL (needed by COPYING.LESSER).
	The Lesser GPL (COPYING.LESSER) is written as additional permissions to
	the GPL (COPYING.GPL).

	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* COPYING.GPL: New file.
	* Makefile.am (EXTRA_DIST): Add it.

2021-11-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.14.0.rc2.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.14.0.rc2.

2021-11-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.14.0 since 2.13.3): Update description of new graph
	--backend=state feature.

2021-11-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Use @dezyne.org addresses throughout.
	Run:

	* build-aux/dezyne-org.sh: New file.

2021-11-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	debian: Update and bump to 2.14.0.rc1.
	Note that this uses the mCRL2 .deb from mcrl2.org.

	* debian/changelog (2.14.0.rc1-0): New upstream release.
	* debian/control (Build-Depends): Update name, website and dependencies.
	* debian/copyright (Upstream-Name): Update.
	(Files runtime/*): New section.

2021-11-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add missing copyright headers for run scripts.
	Run
	    build-aux/copyright-header.scm $(find test/all -name run)

	* test/all/exception_wrappers/run,
	test/all/importPath/run,
	test/all/parse_locations/run,
	test/all/parse_peg_locations/run,
	test/all/parse_preprocessed_foo/run,
	test/all/parse_preprocessed_imported_bar/run,
	test/all/parse_preprocessed_imported_baz/run,
	test/all/semantics/run,
	test/all/wf_importPathErr/run: Add header.

2021-11-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build-aux/copyright-header.scm: Include run scripts.
	* build-aux/copyright-header.scm (script-file?): Include "/run$".

2021-11-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: Avoid -Wuninitialized warning when initializing meta.
	* dzn/templates/c++/meta@component: Move initialisation of require meta
	field ...
	* dzn/templates/c++/model@component: ... to component constructor ...
	* dzn/templates/c++/model@system: ... and system constructor.

2021-11-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add compliance_failures_inevitable_optional.
	* test/all/compliance_failures_inevitable_optional: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	simulate: Report inevitablity and optionality for refusals.
	* dzn/simulate.scm (modeling-lts->observables): Maintain inevitable and
	optional trigger for event, to be properly handled by ...
	(end-report): and finally used in ...
	* dzn/vm/report.scm (final-error-messages): In case of non-compliance
	inform the user which events were promised inevitability and those that
	are optionally.
	* test/all/compliance_failures_choice,
	test/all/compliance_failures_inevitable,
	test/all/compliance_failures_inevitable2,
	test/all/compliance_failures_multiple_provides,
	test/all/compliance_failures_optional,
	test/all/compliance_liveock: Update baseline.

2021-11-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add blocking_provides_state.
	Reported by Paul Hoogendijk <paul.hoogendijk@verum.com>.

	* test/all/blocking_provides_state: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-11-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Fix compliance check for blocking trace.
	This fixes the compliance check for blocking in combination with a
	stateful provides port.

	Reported by Paul Hoogendijk <paul.hoogendijk@verum.com>.

	* dzn/simulate.scm (check-provides-compliance): Refactor truncation of
	trace.  Do not reset event to zip port return in case of blocking,
	rather factor-out to...
	(check-provides-compliance+): ...this new procedure.
	(run-sut): For provides trigger, always use initial pc for compliance
	check.
	* test/all/blocking_system2/baseline/simulate/blocking_system2: Update
	baseline.

2021-11-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Remove dead code.
	* dzn/simulate.scm (zip): Remove unused instance.

	vm: Robustify trigger->component-trigger.
	* dzn/vm/util.scm (trigger->component-trigger): Return #f instead of
	crashing when there is no port, or no other-port.

2021-11-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Consider only suffix of blocking trace for compliance check.
	* dzn/simulate.scm (check-provides-compliance): Drop prefix from blocked
	trace before running incremental compliance check.

2021-11-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Fix compliance check for released blocking trace.
	The compliance check for a released blocking trace would use an
	intermediate state for the provides port.  Use the initial PC
	for a released blocking trace instead.

	* dzn/simulate.scm (run-sut): Use initial PC for compliance check.

2021-11-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Remove blocked ports from eligibles.
	* dzn/simulate.scm (labels-filter-blocked-ports): New procedure.
	(end-report): Use it.

2021-11-08  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	parse: Remove quadratic behaviour of calculating newlines vector.
	* dzn/parse/ast.scm (newline): Use cons instead of append; reverse end
	result.

2021-11-08  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	parse: Improve performance by avoiding stat storm.
	Canoicalize-path is very expensive on Windows.

	* dzn/parse.scm (file+import-content-alist)
	[canonicalize-path-memoized]: New inner define: Memoized version of
	canoicalize-path, and use it.

2021-11-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add state-diagram.
	* test/all/state-diagram: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2021-11-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	graph: Support -H,--hide and -R,--restrict for state diagram.
	This implements hiding of the port state in a clean way and adds
	hiding of extended state and labels and actions.

	* dzn/commands/graph.scm (parse-opts): Add -H,--hide and -R,--restrict.
	(main): Pass ports?, extended?, actions? and labels? to...
	* dzn/explore.scm (state-diagram): ...here.  Add new keyword
	parameters #:ports?, #:extended?, #:actions? and #:labels.  Filter LTS
	using ...
	(lts-remove): This new procedure.
	* doc/dezyne.texi (Invoking dzn graph): Document it.

2021-11-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	graph: Avoid gaps in LTS' state numbering.
	* dzn/explore.scm (pc->rtc-lts): Remove pre-allocation of state numbers.

	graph: Move delete-duplicates from DOT/JSON to state-diagram.
	* dzn/vm/report.scm (trace-equal?): New procedure, split-out from...
	* dzn/vm/run.scm (run-to-completion-unmemoized): ...here, and,
	* dzn/simulate.scm (rtc-lts->traces): ...here.
	* dzn/explore.scm (rtc-lts->state-diagram): Use custom delete-duplicates
	on to and transition.
	(state-diagram->dot): Remove "strict".
	(state-diagram->json): Remove simplistic delete-duplicates.
	* dzn/vm/util.scm (rtc-program-counter-equal-state-diagram?): Remove.

2021-11-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "explore: Generate diagram for component behaviour."
	The original patch combined two features: ignoring requires port
	interaction altogether and hiding port state from the LTS.

	The ignoring of requires port interaction is not a useful feature and
	the hiding of port state will be implemented in a cleaner way.

	This reverts commit 82db4ea8c343b8b0525385faaa1080b0778e6ef2.

2021-10-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add livelock_async_choice.
	* test/all/livelock_async_choice: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-10-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Support async livelock with choice.
	When processing an async event, make sure to flush the whole async
	queue.

	* dzn/vm/run.scm (run-async): Remove.
	(flush-async-event): New method.
	(run-to-completion*): Use flush-async-event and flush-async instead of
	run-async-event and run-async.

2021-11-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Use <non-deterministic> in trace instead of <determinism>.
	* dzn/simulate.scm (check-interface-determinism): Use "non-deterministic" as message.
	* dzn/vm/run.scm (mark-determinism-error): Likewise.
	* test/all: Update baseline.

	verify: Use <non-deterministic> in trace instead of <deterministic>.
	* dzn/verify/pipeline.scm (report-fail): Rename error for deterministic
	check to non-deterministic.
	* test/all: Update baseline.

2021-11-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Use <non-compliance> in trace instead of <compliance>.
	* dzn/simulate.scm (check-provides-fork, check-requires-provides-fork,
	check-provides-compliance): Use "non-compliance" as error message.
	* dzn/vm/report.scm (initial-error-message): Use message of compliance
	error.
	* test/all: Update baseline.

	verify: Use <non-compliance> trace instead of <compliance>.
	* dzn/verify/pipeline.scm (report-fail): Rename error for compliance
	check to non-compliance.
	* test/all: Update baseline.

2021-11-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Ensure modeling event is executed in run-interface.
	This fixes false positive unobservably non-deterministic errors.

	Reported by Joran Jessurun <joran.jessurun@gmail.com> via IRC.

	* dzn/vm/run.scm (run-interface): Filter traces: modeling event must be
	executed.
	* test/all/hello_optional_nondet: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-11-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Fix false positive unobservably non-deterministic.
	* dzn/vm/ast.scm (ast:equal?)[end-of-trail]: New specialization.
	* dzn/simulate.scm (check-interface-determinism): Remove dead copy.
	(check-interface-determinism): Add start of traces instead of end of
	traces to silent traces.
	* test/all/hello_modeling_nondet: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-11-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Skip compliance fork check for systems.
	* dzn/simulate.scm (check-provides-compliance): Only call
	check-provides-fork and check-requires-provides-fork if sut is a
	component.

2021-11-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid crash in compliance check.
	* dzn/simulate.scm (check-provides-compliance): Avoid trace rewrite on
	emtpy trace.

2021-10-22  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Avoid crash in deadlock check.
	* dzn/simulate.scm (event-traces-alist): Also match empty trace.

2021-10-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Move well-formedness examples to files, generate messages.
	* doc/dezyne.texi (Well-formedness): Remove outdated and fabricated
	parse error messages and replace them by including output from dzn parse.
	Update and move examples to...
	* doc/parse/action-discard-value.dzn,
	doc/parse/action-in-complex-expression.dzn,
	doc/parse/action-in-member-definition.dzn,
	doc/parse/action-outside-on.dzn,
	doc/parse/assign-outside-on.dzn,
	doc/parse/binding-cycle-elaborate.dzn,
	doc/parse/binding-cycle.dzn,
	doc/parse/binding-mismatch-direction.dzn,
	doc/parse/binding-mismatch-external.dzn,
	doc/parse/binding-two-wildcards.dzn,
	doc/parse/binding-wildcard-requires.dzn,
	doc/parse/blocking-in-interface.dzn,
	doc/parse/blocking-multiple-provides.dzn,
	doc/parse/call-discard-value.dzn,
	doc/parse/call-in-complex-expression.dzn,
	doc/parse/component-action-used-as-trigger.dzn,
	doc/parse/component-provides-without-trigger.dzn,
	doc/parse/component-requires-without-trigger.dzn,
	doc/parse/component-trigger-used-as-action.dzn,
	doc/parse/component-without-provides.dzn,
	doc/parse/event-with-bool-parameter.dzn,
	doc/parse/function-missing-return.dzn,
	doc/parse/function-not-tail-recursive.dzn,
	doc/parse/imperative-illegal.dzn,
	doc/parse/injected-with-out-event.dzn,
	doc/parse/inout-parameter-on-out-event.dzn,
	doc/parse/instance-port-not-bound.dzn,
	doc/parse/interface-action-used-as-trigger.dzn,
	doc/parse/interface-function-illegal.dzn,
	doc/parse/interface-if-illegal.dzn,
	doc/parse/interface-trigger-used-as-action.dzn,
	doc/parse/interface-without-behaviour.dzn,
	doc/parse/interface-without-event.dzn,
	doc/parse/mixing-declarative.dzn,
	doc/parse/mixing-imperative.dzn,
	doc/parse/nested-blocking.dzn,
	doc/parse/nested-on.dzn,
	doc/parse/otherwise-without-guard.dzn,
	doc/parse/out-binding-reversed.dzn,
	doc/parse/out-parameter-on-out-event.dzn,
	doc/parse/port-bound-twice.dzn,
	doc/parse/port-not-bound.dzn,
	doc/parse/recursive-system.dzn,
	doc/parse/requires-port-reply.dzn,
	doc/parse/return-outside-function.dzn,
	doc/parse/second-otherwise.dzn,
	doc/parse/valued-out-event.dzn: ...these new files.
	* doc/parse/local.mk: Add them to new file.
	* Makefile.am: Include it.
	(update-doc): New target to generate parse output.

	doc: Many cleanups.
	* doc/dezyne.texi: Remove duplicate sections.
	Remove redundant whitespace.
	Mark keywords with @b{} in initial examples.
	Use @code{} when quoting code in text.
	Remove all 'my' and 'My' prefixes.
	Remove all iCantReadThis casing and most Capital case from examples.
	Move full Dezyne examples out to...
	* doc/examples/ imessage-handler.dzn,
	doc/examples/ca.dzn,
	doc/examples/compliance-multiple-provides-fork.dzn,
	doc/examples/decompose2-proxy.dzn,
	doc/examples/decompose2.dzn,
	doc/examples/function-call-status.dzn,
	doc/examples/icode.dzn,
	doc/examples/iconsole.dzn,
	doc/examples/imotion1.dzn,
	doc/examples/imotion2.dzn,
	doc/examples/imotion3.dzn,
	doc/examples/imotion4.dzn,
	doc/examples/imotion5.dzn,
	doc/examples/imperative-action.dzn,
	doc/examples/inner-space.dzn,
	doc/examples/iprocess-safety1.dzn,
	doc/examples/iprocess-safety2.dzn,
	doc/examples/iprotocol-stack.dzn,
	doc/examples/iprotocol-stack1.dzn,
	doc/examples/isensor.dzn,
	doc/examples/isimple-protocol.dzn,
	doc/examples/isiren.dzn,
	doc/examples/isiren1.dzn,
	doc/examples/isiren2.dzn,
	doc/examples/itimer.dzn,
	doc/examples/itimer2.dzn,
	doc/examples/message-handler.dzn: ...these new files.
	* doc/examples/local.mk (DEZYNE_EXAMPLES): Add them.

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_mixing_imperative.
	* dzn/parse/ast.scm (parse-tree->ast): Cater for guard without
	statement.
	* dzn/wfc.scm (wfc)[guard]: Likewise.
	* test/all/parse_mixing_imperative: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2021-11-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add README to clarify license of baseline.
	* test/all/README: New file.
	* test/all/local.mk (EXTRA_DIST): Add it.

2021-11-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Retain copyright and license when generating ChangeLog.
	Fixes https://savannah.nongnu.org/task/?16067.
	Reported via savannah by Ineiev <ineiev@gnu.org>.

	* Makefile.am (gen-ChangeLog $(distdir)/ChangeLog): Include copyright
	and license part of ChangeLog stub.

2021-11-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Distribute COPYING.LESSER too.
	* Makefile.am (EXTRA_DIST): Add COPYING.LESSER.

2021-11-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add mising copyright headers.
	Run

	    build-aux/copyright-header.scm $(git ls-files test '*.cc' '*.cs' '*.sh')

	and also remove version tags.

	* test/all/async_calling_context/c++/main.cc,
	test/all/async_calling_context/cs/main.cs,
	test/all/async_shell/c++/main.cc,
	test/all/async_shell/cs/main.cs,
	test/all/blocking_shell/c++/main.cc,
	test/all/blocking_shell/cs/main.cs,
	test/all/hello_namespace_foreign/c++/library_foreign.cc,
	test/all/shell_injected/c++/main.cc,
	test/all/shell_injected/cs/main.cs,
	test/bin/semantics.sh: Add header.

2021-11-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build-aux/copyright-header.scm: Include .cc and .cs as code file.
	* build-aux/copyright-header.scm (code-file?): Add cc,cs.
	(main): Remove debugging.

2021-10-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.14.0.rc1.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.14.0.rc1.

2021-10-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.14.0 since 2.13.3): Mention fixing of #29.

2021-10-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Allow only one action or call in an (in)equality expression.
	This is a follow-up to commit
	    c4012253534be1b10db39ed9670adddc43b54114
	    Allow implicit temporaries for valued actions and calls.

	* dzn/wfc.scm (call-context): Only allow action or call at left side
	of (in)equality.
	* test/all/wf_actionInExpression/wf_actionInExpression.dzn: Test it.
	* test/all/wf_actionInExpression/baseline/verify/wf_actionInExpression.stderr:
	Update baseline.
	* test/all/wf_functionInExpression/wf_functionInExpression.dzn: Test it.
	* test/all/wf_functionInExpression/baseline/verify/wf_functionInExpression.stderr:
	Update baseline.

2021-10-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Run check on individual arguments.
	* dzn/wfc.scm (wfc)[arguments]: Run wfc on individual arguments.
	* test/all/wf_actionInExpression/wf_actionInExpression.dzn: Test it.
	* test/all/wf_actionInExpression/baseline/verify/wf_actionInExpression.stderr:
	Update baseline.
	* test/all/wf_functionInExpression/wf_functionInExpression.dzn: Test it.
	* test/all/wf_functionInExpression/baseline/verify/wf_functionInExpression.stderr:
	Update baseline.
	* test/all/undefined/component/argument/baseline/verify/argument.stderr,
	test/all/undefined/component/argument_seen/baseline/verify/argument_seen.stderr:
	Update baseline.

2021-10-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove explicit temporaries.
	* test/all/LegoBallSorter/ConstrainedAxis.dzn,
	test/all/LegoBallSorter/Conveyor.dzn,
	test/all/LegoBallSorter/EndConstrainedAxis.dzn,
	test/all/LegoBallSorter/HomeConstrainedAxis.dzn,
	test/all/LegoBallSorter/TouchSensor.dzn,
	test/all/end_of_trail/end_of_trail.dzn,
	test/all/foreign_reply/foreign_reply.dzn,
	test/all/hello_choice_reply/hello_choice_reply.dzn,
	test/all/hello_complete_reply/hello_complete_reply.dzn,
	test/all/hello_silent/hello_silent.dzn,
	test/all/hello_system_reply/hello_system_reply.dzn,
	test/all/illegal_async_silent/illegal_async_silent.dzn,
	test/all/livelock_iterator/livelock_iterator.dzn,
	test/all/silent_optional/silent_optional.dzn,
	test/all/silent_unused_out/silent_unused_out.dzn,
	test/all/system_nondet_reply/system_nondet_reply.dzn,
	test/all/system_reply_bool/system_reply_bool.dzn: Remove explicit temporaries.
	* test/all/illegal_async_silent/baseline/simulate/illegal_async_silent:
	Update baseline.

	doc: Remove explicit temporaries.
	* doc/dezyne-tutorial.texi: Remove explicit temporaries.
	* doc/dezyne.texi: Likewise.
	* doc/examples/ArmourIBVIRR.dzn: Likewise.
	* doc/examples/ArmourIBVIRRError.dzn: Liewise.

2021-10-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Fix crash on implicit temporary in a function.
	This is a follow-up to commit
	    c4012253534be1b10db39ed9670adddc43b54114
	    Allow implicit temporaries for valued actions and calls.

	* dzn/normalize.scm (add-explicit-temporaries): Also add temporaries in
	functions.
	* test/all/hello_implicit_temporaries/hello_implicit_temporaries.dzn:
	Test it.

2021-10-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Fix crash on implicit temporary of interface-scoped type.
	This is a follow-up to commit
	    c4012253534be1b10db39ed9670adddc43b54114
	    Allow implicit temporaries for valued actions and calls.

	* dzn/normalize.scm (add-explicit-temporaries): Use full scope of
	expression type for variable.
	* test/all/hello_implicit_enum/hello_implicit_enum.dzn:
	Test it.

2021-10-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Fix crash on implicit temporary in a compound.
	This is a follow-up to commit
	    063481882538930b8cf20f061f1045799cd152b1
	    normalize: Only create compound for explicit temporary when necessary.

	Reported by Joran Jessurun <joran.jessurun@gmail.com> via IRC.

	* dzn/normalize.scm (add-explicit-temporaries): Oops, do not add extra
	list in <if> and <reply>.
	* test/all/hello_implicit_temporaries/hello_implicit_temporaries.dzn:
	Test it.

2021-10-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove obsolete languages selection construct.
	* test/all/async_shell/META,
	test/all/blocking_shell/META,
	test/all/collateral_blocking_shell/META,
	test/all/collateral_blocking_shell2/META: Remove obsolete "languages":["c++"].

2021-10-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	explore: Show warning when bailing out because of livelock.
	* dzn/explore.scm (pc->rtc-lts): Print warning when bailing out.

2021-10-21  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: Add compliance_livelock_escape.
	* test/all/compliance_livelock_escape: New test.
	* test/all/local.mk (REGRESSION_TESTS, XFAIL_TESTS): Add it.

2021-10-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add compliance_fork_requires.
	* test/all/compliance_fork_requires: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support detection or requires Y-fork.
	* dzn/vm/goops.scm (<fork-error>)[action]: New field.
	* dzn/vm/report.scm (final-error-messages): Use it to report Y-fork.
	* dzn/simulate.scm (action-other-provides-port?): Factor-out from...
	(check-provides-fork): ...here.
	(check-requires-provides-fork): New method.
	(check-provides-compliance): Use it.

2021-10-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_out_binding.
	* dzn/ast.scm (.variable)[formal-binding]: Fix resolving by starting to
	look parent scope.
	* dzn/wfc.scm (wfc)[out-binding]: Remove; <out-binding>s are only
	created during normalization.
	(wfc)[formal-binding]: New specialization.
	(wfc)[formals]: Use it.
	* test/all/parse_out_binding: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

	test: Add parse_out_binding_argument.
	* test/all/parse_out_binding_argument: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

	test: Add parse_on_without_statement.
	* dzn/parse/ast.scm (parse-tree->ast): Also create-node> if statement is
	missing.
	* dzn/wfc.scm (wfc)[on]: Report missing statement.
	* test/all/parse_on_without_statement: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2021-10-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Reverse reporting of second otherwise error and info.
	* dzn/wfc.scm (wfc): Report second otherwise as error, first as info.
	* test/all/wf_otherwiseWithOtherwise/baseline/verify/wf_otherwiseWithOtherwise.stderr: Update
	baseline.

	test: Add parse_behaviour_without_trigger.
	* dzn/wfc.scm (wfc)[component-model]: Report error if there is no
	trigger.
	* test/all/parse_component_without_trigger: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.
	* test/all/wf_componentNeedsTrigger/baseline/verify/wf_componentNeedsTrigger.stderr:
	Update baseline.

	wfc: Use <info> for informational messages, use defined throughout.
	* dzn/goops.scm (<info>): New status type.
	* dzn/wfc.scm (wfc:report-error): Support it.
	(wfc-info): New procedure.
	(wfc): Use it for informational messages.  Also use "defined" for event
	and port instead of "declared".
	* test/all: Update baseline.

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: parse_import_self: Add baseline and enable.
	* test/all/parse_import_self: Add baseine.
	* test/all/local.mk (PARSER_TESTS): Add it.

	test: parse_assign_void: Add baseline and enable.
	* test/all/parse_assign_void: Add baseine.
	* test/all/local.mk (PARSER_TESTS): Add it.

2021-10-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	peg: Make types, events, behaviour optional.
	* dzn/parse/peg.scm (peg:parse): Relax parser to allow empty
	types-and-events, make behaviour optional.
	* dzn/parse/ast.scm (parse-tree->ast): Cater for missing
	types-and-events and behaviour.  Rewrite using srfi-71.
	* dzn/wfc.scm (wfc)[interface]: Check for at least one event.
	* test/all/wf_interfaceMustDefineBehaviour,
	* test/all/wf_interfaceMustDefineEvent: Update baseline.
	* dzn/parse/complete.scm (complete:root): Cater for incomplete or empty
	types-and-events.

2021-10-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add livelock_unfold.
	* test/all/livelock_unfold: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	simulate: Run <loop>...<livelock> part of trail trice.
	* dzn/vm/util.scm (string->trail): Copy the trail beyond <loop> and add
	it twice to the trail.
	* test/all/livelock_synchronous_illegal/trace: Add livelock trace with
	<loop>.
	* test/all/livelock_synchronous_illegal/baseline/simulate/livelock_synchronous_illegal,
	test/all/livelock_synchronous_illegal/baseline/simulate/livelock_synchronous_illegal.stderr:
	Update baseline.

2021-10-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	trace: Insert <loop> message for --format=json.
	* dzn/trace.scm (step->communication): Handle messages without location
	too.
	(trace:steps->json): Synthesize arrow for <loop> message.

2021-10-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Mark start of livelock with <loop>.
	* dzn/vm/util.scm (pc:ast:eq?): Rename to...
	(pc:ast:equal?): ...this.
	(pc-equal?): Update accordingly and actually use it.  Remove call to
	rtc-program-counter-equal?, instead incorporate bits of it.  Remove
	.TRAIL equality and .STATEMENT eq-ness.
	* dzn/vm/run.scm (livelock?): Return the index of the end of the
	livelock loop.  Skip <end-of-on> statements.
	(extend-trace, flush-async-trace, flush-async): Update accordingly,
	passing the index to...
	(mark-livelock-error): ...here.  Add index parameter.  Use it to insert
	<loop> message.  Also truncate trace to only show first loop.
	* test/all/livelock_async/baseline/simulate/livelock_async,
	test/all/livelock_async/baseline/simulate/livelock_async.stderr,
	test/all/livelock_async_cancel/baseline/simulate/livelock_async_cancel,
	test/all/livelock_async_cancel/baseline/simulate/livelock_async_cancel.stderr,
	test/all/livelock_recurse/baseline/simulate/livelock_recurse,
	test/all/livelock_synchronous/baseline/simulate/livelock_synchronous,
	test/all/livelock_synchronous/baseline/simulate/livelock_synchronous.stderr:
	Update baseline.

2021-10-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Prepend location before <error> markers too.
	* dzn/vm/report.scm (pc->event): Use ast from error instead of #f.
	* test/all/compliance_failures_illegal/baseline/simulate/compliance_failures_illegal.stderr:
	Update baseline.

2021-10-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: livelock_synchronous, livelock_synchronous2: Skip LTS.
	* test/all/livelock_synchronous/META: Skip lts.
	* test/all/livelock_synchronous/baseline/verify/livelock_synchronous,
	test/all/livelock_synchronous/baseline/verify/livelock_synchronous.stderr:
	Update baseline.
	* test/all/livelock_synchronous2/META: Skip lts.
	* test/all/livelock_synchronous2/baseline/verify/livelock_synchronous2,
	test/all/livelock_synchronous2/baseline/verify/livelock_synchronous2.stderr:
	Update baseline.
	test/all/local.mk (XFAIL_TESTS): Remove both tests.

2021-09-24  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	lts: Add <loop> marker at beginning of livelock loop.
	* dzn/lts.scm (make-edge-loop): New procedure.
	(assert-livelock): Use it to insert <loop> marker.
	* test/dzn/lts.scm (test:assert-livelock): Add <loop> edges.
	* test/all/livelock_async/baseline/verify/livelock_async,
	test/all/livelock_async_cancel/baseline/verify/livelock_async_cancel,
	test/all/livelock_component/baseline/verify/livelock_component,
	test/all/livelock_interface0/baseline/verify/livelock_interface0,
	test/all/livelock_iterator/baseline/verify/livelock_iterator,
	test/all/livelock_recurse/baseline/verify/livelock_recurse,
	test/all/livelock_synchronous_illegal/baseline/verify/livelock_synchronous_illegal:
	Update baseline.

2021-10-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Do not copy error-pc to create complement arrow.
	* test/all/range_local/baseline/simulate/range_local: Update baseline.

	vm: Do not check error-trace for livelock.
	* dzn/vm/run.scm (extend-trace): Do not call livelock? if status is set.

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.14.0.rc0.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.14.0.rc0.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.14.0 since 2.13.3): New section.

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.14): Move done items...
	(DONE): ...here.
	(Release 2.17): Add some notes aboout documentation.

	test: Update to use dzn graph.
	* test/dzn/dzn.scm (run-lts): Update to use "graph".

	graph: New command.
	* dzn/explore.scm (state-diagram): Add #:behaviour? parameter.  Use it
	instead of --verbose kludge.
	* dzn/code.scm (code): New entry point, split-out from...
	* dzn/commands/code.scm (main): ...here.
	* dzn/commands/graph.scm: New file.
	* dzn/commands/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/commands/simulate.scm (main): Remove obsolete "behaviour" option.
	* dzn/commands/explore.scm (main): Likewise.
	* dzn/code/json.scm (system-diagram): New procedure.
	(ast->): Use it.
	* dzn/code/dot.scm (system-diagram): New procedure.
	(ast->): Use it.
	(dependency-diagram): New procedure.
	* doc/dezyne.texi (Invoking dzn graph): New section.
	(Invoking dzn explore): Note deprecation.
	(Invoking dzn lts): Refer to dzn graph.
	* Makefile.am (dist_man_MANS): Add dzn-graph.1.

2021-10-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	dot: System and dependency diagram.
	* dzn/code/dot.scm: New file.
	* dzn/code/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/templates/dot.scm: New file.
	* dzn/templates/local.mk (dist_nocompile_%C%_scm_DATA): Add it.
	* dzn/templates/dot: New template directory.
	* dzn/templates/local.mk (EXTRA_DIST): Add it.
	* dzn/vm/ast.scm (ast:async?)[runtime:port]: New specialization.
	* dzn/vm/runtime.scm (runtime:path->instance): Resurrect for AST with
	strings.
	(runtime:other-port-unmemoized):  Robustify against unbound ports.
	(runtime:rank!): Likewise.

	Co-written-by: Jan (janneke) Nieuwenhuizen <janneke@gnu.org>

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Refactor to split multiple use of call-context.
	* dzn/ast.scm (ast:member?): New method.
	* dzn/wfc.scm (call-context): Use it and move imperative statement check
	to...
	(imperative-context): ...this new procedure.
	(wfc)[compound],
	[variable],
	[assign],
	[if],
	[illegal],
	[reply]: Use it instead of call-context.
	[var]: Move member variable check inline.

2021-10-20  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: Add 5 'undefined identifier' tests.
	* test/all/undefined/and,
	test/all/undefined/group,
	test/all/undefined/not,
	test/all/undefined/reply,
	test/all/undefined/return: New tests.
	* test/all/local.mk (PARSER_TESTS): Add them.

2021-10-20  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	parse: Gracefully handle unknown identifier.
	This is a follow-up to commit:
	    e047e93e79c5afc0c35b8e16fdbffcdbf16b3227
	    peg: Avoid redundant skipping during fallback.

	Reported by Michael van de Ven <michael.van.de.ven@thermofisher.com> via
	IRC.

	* dzn/parse/tree.scm (tree:record): Add tree node 'unknown-identifier.
	* dzn/parse/peg.scm: (define-peg-string-patterns): Keep
	unknown-identifier explicitly in parse-tree.
	* dzn/parse/complete.scm (complete:root): Handle 'unknown-identifier.
	* dzn/goops.scm (<undefined>): Add new type...
	* dzn/parse/ast.scm (helper): ...and map tree-node 'unknown-identifier
	onto it.
	* dzn/wfc.scm: (wfc)[undefined]: New specialization.
	(wfc)[guard],[if],[var]: Rewrite check for string?
	(argument-type-check, assign, reply-in-on, call-context): Likewise.  Add
	check for <var> at global scope.
	(typed-expression): Add undefined check.
	* test/all/parse_missing_event,
	test/all/wf_variableInitExpression,
	test/all/undefined/guard,,
	test/all/undefined/if,
	test/all/wf_actionInExpression,
	test/all/wf_functionInExpression,
	test/all/wf_interfaceMustDefineBehaviour,
	test/all/wf_interfaceMustDefineEvent,
	test/all/wf_variableInitExpression: Update baseline.

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Only create compound for explicit temporary when necessary.
	* dzn/normalize.scm (add-explicit-temporaries)[add-temporary]: Return
	list of statements when parent is a compound.  Splice it into compound.

	test: Add hello_implicit_enum.
	* test/all/hello_implicit_enum/hello_implicit_enum.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add hello_implicit_temporaries.
	* test/all/hello_implicit_temporaries/hello_implicit_temporaries.dzn:
	New file.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Allow implicit temporaries for valued actions and calls.
	This patch allows implicit temporaries for valued actions and calls as
	if-expression and reply-expression.

	* dzn/wfc.scm (call-context): Allow valued action and call.
	* dzn/normalize.scm (add-explicit-temporaries): New procedure.
	* dzn/vm/normalize.scm (vm:normalize): Use it.
	* dzn/code/makreel.scm (makreel:om): Use it.
	* doc/dezyne.texi (Interface and Component Behaviour): Mention actions
	and functions in simple expressions.  Remove valued action in interface.
	* test/all/wf_actionInExpression/wf_actionInExpression.dzn: Use
	action in compound expression.
	* test/all/wf_actionInExpression/baseline/verify/wf_actionInExpression.stderr:
	Update baseline.
	* test/all/wf_functionInExpression/wf_functionInExpression.dzn: Use call
	in compound expression.
	* test/all/wf_functionInExpression/baseline/verify/wf_functionInExpression.stderr:
	Update baseline.
	* test/all/wf_actionValueDiscarded/baseline/verify/wf_actionValueDiscarded.stderr,
	test/all/wf_functionValueDiscarded/baseline/verify/wf_functionValueDiscarded.stderr,
	test/all/wf_undefined_function/baseline/verify/wf_undefined_function.stderr:
	Update baseline.

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove explicit interface illegals part 2: remove.
	Remove the uncommented illegals and add copyright lines.  This changes
	no dezyne code (or scheme code) but has a large impact on the locations
	in the baseline.

	* test/all: Remove commented interface illegals; update baseline.

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove explicit interface illegals part 1: comment-out.
	Commenting-out interface illegals only has a small baseline impact: It
	changes the error location in the baseline of five tests.

	Run
	    sed -i \
	      -re 's,^( *on (a|cb|e|hello|bye|cruel|world): illegal;),//\1,' \
	     $(find test -name '*.dzn')

	* test/all: Comment-out interface illegals.
	* test/all/compliance_requires_illegal,
	test/all/illegal_garbage,
	test/all/illegal_requires,
	test/all/illegal_requires2,
	test/all/illegal_system_requires: Update baseline.

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: LegoBallSorter: Remove explicit interface illegals.
	* test/all/LegoBallSorter/Conveyor.dzn (IConvey): Remove illegals.
	* test/all/LegoBallSorter/IConstrainedMove.dzn (IConstrainedMove): Likewise.
	* test/all/LegoBallSorter/IFeed.dzn (IFeed): Likewise.
	* test/all/LegoBallSorter/Inspector.dzn (IInspect): Likewise.
	* test/all/LegoBallSorter/LightSensor.dzn (ILightSense): Likewise.
	* test/all/LegoBallSorter/MaterialHandler.dzn (IHandle, Handle,
	ITransfer, Transfer, IRetain): Likewise.
	* test/all/LegoBallSorter/Motor.dzn (IMove): Likewise.
	* test/all/LegoBallSorter/Stage.dzn (IMove2D): Likewise.
	* test/all/LegoBallSorter/TouchSensor.dzn (ITouchSense): Likewise.
	* test/all/LegoBallSorter/foreign_timer.dzn (itimer): Likewise.

	test: Camera: Remove explicit interface illegals.
	* test/all/Camera/Acquisition.dzn (ISensor, IAcquisition): Remove
	illegals.
	* test/all/Camera/Camera.dzn (IControl): Likewise.
	* test/all/Camera/Optics.dzn (ILens, IFocus, FocusControl, IOptics):
	Likewise.

	test: AlarmSystem: Remove explicit interface illegals.
	* test/all/AlarmSystem/AlarmSystem.dzn (ISiren, ISensor, IConsole,
	Alarm): Remove illegals.

	test: Alarm: Remove explicit interface illegals.
	* test/all/Alarm/Alarm.dzn (IConsole, ISensor, ISiren): Remove illegals.
	* test/all/Alarm/META: New file.
	* test/all/Alarm/baseline/simulate/Alarm,
	test/all/Alarm/baseline/simulate/Alarm.stderr,
	test/all/Alarm/baseline/verify/Alarm.stderr: Update baseline.

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add illegal_interface_incomplete.
	* test/all/illegal_interface_incomplete/baseline/simulate/illegal_interface_incomplete,
	test/all/illegal_interface_incomplete/baseline/simulate/illegal_interface_incomplete.stderr,
	test/all/illegal_interface_incomplete/illegal_interface_incomplete.dzn,
	test/all/illegal_interface_incomplete/trace: New files.
	* test/all/local.mk (HELLO_TESTS): Add test.

	Co-written-by: Rutger van Beusekom <rutger.van.beusekom@verum.com>.

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support implicit interface illegals.
	* dzn/vm/normalize.scm (transform-end-of-on): Remove support for
	<complete>.
	* dzn/simulate.scm (run-trail): Filter implicit-illegal traces.
	* dzn/vm/step.scm (step)[initial-compound]: Add <implicit-illegal-error>
	traces in interface too, for non-modeling events.
	* dzn/vm/run.scm (filter-implicit-illegal-only): New procedure.
	* dzn/explore.scm (pc->rtc-lts): Use it.

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Support implicit interface illegals.
	* dzn/goops.scm (<incomplete>): Remove.
	(<illegal>)[incomplete]: Remove field.
	* dzn/wfc.scm (wfc)[inclomplete]: Remove.
	* dzn/templates/dzn/statement@incomplete,
	dzn/templates/makreel/proc@incomplete: Remove files.
	* dzn/normalize.scm (triples:->on-guard*): Remove marking <illegal> as
	incomplete.
	(add-illegals): Add <declarative-illegal> for interface.
	* dzn/lts.scm (parse-label): Remove support for incomplete.
	* dzn/templates/makreel/external-proc@port,
	dzn/templates/makreel/model@component,
	dzn/templates/makreel/proc@interface,
	dzn/templates/makreel/queue-proc@component,
	dzn/templates/makreel/source@root: Remove incomplete.
	* dzn/verify/pipeline.scm (report-fail): Remove support for <complete>.
	* doc/dezyne.texi (Interfaces as abstraction of a component's
	behaviour): Remove illegal from examples.  Remove mention of
	completeness and mention implicit illegals.
	(Verifying Models): Remove completeness.
	* doc/dezyne-tutorial.texi (States and Illegal Events Asserts): Also
	mention implicit illegals for interfaces.
	* test/all/incomplete: Rename to...
	* test/all/hello_incomplete: ...this.  Add some state, remove baseline.
	* test/all/hello_incomplete/META: Remove.
	* test/all/local.mk (REGRESSION_TESTS): Move incomplete to...
	(HELLO_TESTS): ...hello_incomplete here.

	Co-written-by: Rutger van Beusekom <rutger.van.beusekom@verum.com>.

2021-10-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	trace: Support system error trace for --format=json.
	* dzn/trace.scm (trace:steps->json): Default to first component instance
	otherwise '(sut).

2021-10-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove empty baselines.
	* test/all/compliance_system_provides_bool/baseline/verify/compliance_system_provides_bool,
	test/all/failures_nondet_optional/baseline/verify/failures_nondet_optional,
	test/all/hello_two/baseline/verify/hello_two,
	test/all/illegal_system_requires/baseline/verify/illegal_system_requires,
	test/all/livelock_synchronous_illegal/baseline/simulate/livelock_synchronous_illegal.stderr,
	test/all/parse_assign_void/baseline/verify/parse_assign_void: Remove.

2021-10-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hellocheckcompbindings, hellochecksystembindings: Rename trace.
	* test/all/hellocheckcompbindings/hellocheckcompbindings.trace: Rename
	to...
	* test/all/hellocheckcompbindings/trace: ...this.
	* test/all/hellochecksystembindings/hellochecksystembindings.trace:
	Rename to...
	* test/all/hellochecksystembindings/trace: ...this.

	doc: Add find recipe to `HACKING'.
	* HACKING (Regression test): Add example with multiple names.

	doc: Distribute tutorial examples.
	* Makefile.am (dist_info_images_DATA): Move image file list...
	* doc/images/local.mk: ...here.
	* Makefile.am (EXTRA_DIST): Move tutorial semantics file list...
	* doc/semantics/local.mk: ...here.

	simulate: Do not insert status mid-trace in zip.
	* dzn/simulate.scm (zip): Clear status on port-trace-prefix.

2021-10-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add undefined/component/enum_as_action.
	This avoids a triggering in internal error, running ast:in? on an
	<enum>.

	* dzn/wfc.scm (action)[action]: Do not assume event is an <event> even
	if it resolved.
	(wfc)[formals]: Likewise.
	* test/all/undefined/component/enum_as_action: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

	Reported by Michael van de Ven <michael.van.de.ven@thermofisher.com> via
	IRC.

2021-10-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: deadlock_blocking_guard: Remove obsolete interface baseline.
	* test/all/deadlock_blocking_guard/baseline/verify/ISimpleBlockingGuard:
	Remove obsolete baseline.

	explore: Generate diagram for component behaviour.
	* dzn/ast.scm (ast:return-values)[action]: New specialization.
	* dzn/vm/util.scm (%explore-behaviour?): New parateter.
	(state->string)[state]: Use it to omit port state for component
	behaviour diagram.
	* dzn/explore.scm (state->scm)[state]: Likewise.
	(run-to-completion**): Use it to skip run-requires for
	(state-diagram): Use it to component behaviour state diagram unless
	--verbose is used.
	component behaviour diagram.
	* dzn/vm/step.scm (step-action-down): Use it to skip running the
	requires ort for component behaviour diagram.

2021-10-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove duplicate undefined/component tests.
	These tests needlessly repeat the generic tests that use an
	interface.

	* test/all/undefined/component/guard,
	test/all/undefined/component/if,
	test/all/undefined/component/var: Remove tests.
	* test/all/local.mk (PARSER_TESTS): Remove them.

2021-10-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: undefined/var: Rename from undefined/interface/var.
	* test/all/undefined/interface/var: Move to...
	* test/all/undefined/var: ...here.
	* test/all/local.mk (PARSER_TESTS): Update accordingly.

	test: undefined/if: Rename from undefined/interface/if.
	* test/all/undefined/interface/if: Move to...
	* test/all/undefined/if: ...here.
	* test/all/local.mk (PARSER_TESTS): Update accordingly.

	test: undefined/guard: Rename from undefined/interface/guard.
	* test/all/undefined/interface/guard: Move to...
	* test/all/undefined/guard: ...here.
	* test/all/local.mk (PARSER_TESTS): Update accordingly.
	* .gitignore: Ignore test output in undefined subdirectory.

	test: rename: Support renaming into different directory.
	* test/bin/rename: Avoid attempting rename of .dzn file name and
	baselines the file name itself is unchanged, i.e., only the directory
	level changes.  Also rename directory in local.mk.

	wfc: Fix check for declarative illegal in formals check.
	* dzn/wfc.scm (wfc)[formals]: Allow only toplevel illegal, do not use
	tree-collect.

	test: parse_interface_parens: Remove cruft.
	* test/all/parse_interface_parens/.err,
	test/all/parse_interface_parens/.out: Remove files.

	doc: Update `README'.
	* README (Requirements): Add Guile-JSON 4 as requirement.

	verify: Use code makreel --init in debug pipeline.
	* dzn/verify/pipeline.scm (pretty-verify-pipeline): Use code --init,
	remove cat and echo.

	makreel: Add --init option.
	* dzn/commands/code.scm (parse-opts): Add --init option.
	* dzn/code/makreel.scm (makreel:init-process): New procedure.
	(root->): Use it when --init is set.
	* dzn/verify/pipeline.scm (in-out:dzn->makreel): Use it.
	* doc/dezyne.texi (Invoking dzn code): Document it.

	doc: Update mCRL2 requirement.
	* doc/dezyne.texi (Requirements): Bump mCRL2 to 202106.0.  Remove m4.
	* README (Requirements): Likewise.  Update Guile requirement.  Mention
	optional Guile-JSON dependency.

	guix: Remove mcrl2-changeword.
	* guix/gnu/packages/dezyne.scm (m4-changeword): Remove.

	guix: dezyne: Remove m4-changeword dependency.
	* guix/gnu/packages/dezyne.scm (dezyne)[inputs]: Remove m4-changeword.

2021-07-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Remove m4-cw from pipeline.
	Starting from the mcrl2-202106.0 release, the m4 hack for performance is
	no longer necessary.

	* configure.ac: Do not check for m4-cw.
	* dzn/templates/makreel/source@root: Remove m4 preamble.
	* dzn/verify/pipeline.scm (in-out:makreel->mcrl2): Remove.
	(in-out.pipeline): Remove it from pipeline.
	(in-out:dzn->makreel): Append init to makreel.
	(pretty-verify-pipeline): Update debug printing.
	* dzn/templates/makreel/interface-action-proc@port: Add "proc".
	* dzn/templates/makreel/external-proc@port,
	dzn/templates/makreel/interface-action-proc@port,
	dzn/templates/makreel/model@component,
	dzn/templates/makreel/proc@interface,
	dzn/templates/makreel/queue-proc@component,
	dzn/templates/makreel/source@root: Remove m4 defines.

2021-10-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Strictly consider interfaces used by component.
	* dzn/code/makreel.scm (ast:interface*): Move to...
	* dzn/ast.scm (ast:interface*): ...here.  Strictly return interfaces for
	the component's ports.

2021-09-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Use guile-3.0.5.
	The pack-binaries use guile-3.0.5; using the same version makes
	development easier.

	* guix/gnu/packages/dezyne.scm (guile-3.0-latest): Redefine to
	guile-3.0.5.

2021-07-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: Bump to 9bd65f05833fb2d1a28c25d431a82dd752046c09.
	* guix.scm: Bump to 9bd65f05833fb2d1a28c25d431a82dd752046c09.

2021-10-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Previous release is 2.13.3.
	* Makefile.am (--previous-version): Update to 2.12.3.

	doc: Update windows URL to x86_64, mention the need for 7zip.
	* doc/dezyne.texi (Binary Installation): Update windows URL to x86_64,
	mention the need for using 7zip.

2021-10-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.13.3.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.13.3.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.13.3 since 2.13.2): Mention --queue-size bug in
	explore.

2021-10-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	doc: Update `ROADMAP' (renumber).
	* ROADMAP (Release 2.13.3): Remove.  Merge todo items into...
	(Release 2.14): ...here.  Renamed from 2.13.4.
	(Renamed 2.13.5): Rename to ...
	(Release 2.15): ..this
	(Renamed 2.13.6): Rename to ...
	(Release 2.16): ..this
	(Release 2.14): Rename to...
	(Release 2.17): ...this.

	vm: Avoid crash on on <queue-full>.
	* dzn/vm/run.scm (run-flush): Do not flush a pc in error.

	explore: Fix for setting of -q,--queue-size.
	* dzn/commands/explore.scm (main) Convert queue-size option from string
	to number.

2021-10-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.13.3.rc2.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.13.3.rc2.

2021-10-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.13.3 since 2.13.2): Add new items.

2021-10-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.13.3): Move done items...
	(DONE): ...here.

	test: Add determinism_deadlock.
	* test/all/determinism_deadlock/META,
	test/all/determinism_deadlock/baseline/simulate/determinism_deadlock,
	test/all/determinism_deadlock/baseline/simulate/determinism_deadlock.stderr,
	test/all/determinism_deadlock/baseline/verify/determinism_deadlock,
	test/all/determinism_deadlock/baseline/verify/determinism_deadlock.stderr,
	test/all/determinism_deadlock/baseline/verify/determinism_inevitable.stderr,
	test/all/determinism_deadlock/determinism_deadlock.dzn,
	test/all/determinism_deadlock/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-10-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	explore: Early bail out on livelock.
	* dzn/explore.scm (pc->rtc-lts): Bailout on first livelock.
	* dzn/vm/run.scm (run-to-completion-unmemoized): idem
	* test/all/livelock_async/META,
	test/all/livelock_async_cancel/META,
	test/all/livelock_recurse/META,
	test/all/livelock_synchronous_illegal/META: Skip LTS for livelock models.

2021-10-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Find deadlock in a non-deterministic interface.
	* dzn/simulate.scm (check-deadlock): Cater for an <end-of-trail> PC.
	(end-report)[interface-deadlock-report]: New procedure.  Use it for
	finding deadlock in interfaces.

2021-10-01  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parse: Re-allow newlines between dollars.
	* dzn/parse/peg.scm (peg:parse): Remove restriction on newline in dollar
	rule.
	* test/all/dollars/c++/foobar.h: Rename to...
	* test/all/dollars/c++/foo.h: ...this.
	* test/all/dollars/c++/bar.h: New file.
	* test/all/dollars/c++/includes.dzn: Use them by adding newlines between
	dollars.
	* test/all/dollars/cs/includes.dzn: Add newlines between dollars.
	* test/all/dollars/c/foobar.h: Rename to...
	* test/all/dollars/c/foo.h: ...this.
	* test/all/dollars/c/bar.h: New file.
	* test/all/newlines_between_dollars: Remove test.
	* test/all/local.mk (PARSER_TESTS): Remove it.

2021-10-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Resurrect --verbose.
	* dzn/vm/report.scm (pc-step?)[program-counter]: Call pc-event with
	program counter instead of status.
	(pc->step)[program-counter]: Prepend program-counter to result.
	* dzn/vm/report.scm (pc->arrow): Cater for (async) actions without other
	port.

2021-09-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add space.space.
	* test/all/space.space/ihello.dzn,
	test/all/space.space/space.space.dzn: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	ast: Fix instance type lookup in shadowing namespace.
	* dzn/ast.scm (.type)[instance]: Look down before looking up to avoid
	finding a namespace of the same name.

	test: Add imported.space.
	* test/all/imported.space/ihello.dzn,
	test/all/imported.space/imported.space.dzn,
	test/all/imported.space/iworld.dzn: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-09-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Have ast:get-model not default to imported model.
	This fixes #46.

	* dzn/ast.scm (ast:get-model): When model-name is not specified, select
	default from non-imported models.

2021-09-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: parse_interface_parens Add baseline and remove from XFAIL.
	* test/all/parse_interface_parens/baseline/verify/parse_interface_parens.stderr:
	New file
	* test/all/local.mk (XFAIL_TESTS): Remove entry.

2021-09-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Keep message if location differs for --format=json.
	* dzn/trace.scm (message-equal?): New procedure.
	(trace:steps->json): Use it.

	test: Reduce set of "hello" tests.
	* test/all/local.mk (HELLO_TESTS): Move deadlock_component1,
	daedlock_interface1, determinism_silent ...
	(REGRESSION_TESTS): ...here.

	test: Add determinism_modeling.
	* test/all/determinism_modeling/META,
	test/all/determinism_modeling/baseline/simulate/determinism_modeling,
	test/all/determinism_modeling/baseline/simulate/determinism_modeling.stderr,
	test/all/determinism_modeling/baseline/verify/determinism_modeling,
	test/all/determinism_modeling/baseline/verify/determinism_modeling.stderr,
	test/all/determinism_modeling/determinism_modeling.dzn,
	test/all/determinism_modeling/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-09-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Find non-silent unobservable non-deterministic errors.
	Also check non-silent traces for non-determinism.

	This is a follow-up to commit
	    c12bfe7530bf3cb8af87ef5efafdb2b23c0ccfd9a
	    simulate: Add non-deterministic check for interfaces.

	* dzn/simulate.scm (check-silence): Move into...
	(check-interface-determinism): New procedure.
	(end-report): Update to use it.
	(run-trail): Use it.
	* test/all/determinism_interface/baseline/simulate/determinism_interface,
	test/all/determinism_interface/baseline/simulate/determinism_interface.stderr,
	test/all/determinism_silent/baseline/simulate/determinism_silent,
	test/all/determinism_silent/baseline/simulate/determinism_silent.stderr:
	Update baseline.

2021-09-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Refactor run-silent to return traces.
	* dzn/vm/run.scm (run-silent): Return traces instead of PCs.
	(run-silent)[event]: Update caller.
	* dzn/vm/step.scm (step-action-down): Likewise.

	simulate: Move empty-trail check to run-trail.
	* dzn/simulate.scm (simulate): Move empty-trail check...
	 (run-trail): ...here.

2021-09-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Use error location of each individual determinism trace.
	* dzn/vm/report.scm (initial-error-message): For <determinism-error> use
	location of each individual trace.
	* test/all/determinism0/baseline/simulate/determinism0,
	test/all/determinism0/baseline/simulate/determinism0.stderr,
	test/all/determinism1/baseline/simulate/determinism1,
	test/all/determinism1/baseline/simulate/determinism1.stderr,
	test/all/determinism_async/baseline/simulate/determinism_async,
	test/all/determinism_async/baseline/simulate/determinism_async.stderr:
	Update baseline.

	misc: Cleanup merge-alist2.
	* dzn/misc.scm (merge-alist2): Use generic naming instead of event,
	traces.

	vm: Use actual location of trigger in on.
	* dzn/vm/report.scm (set-trigger-locations): Find the trigger in the on
	and use that location.

2021-09-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add livelock_synchronous_illegal.
	* test/all/livelock_synchronous_illegal/META,
	test/all/livelock_synchronous_illegal/baseline/simulate/livelock_synchronous_illegal,
	test/all/livelock_synchronous_illegal/baseline/simulate/livelock_synchronous_illegal.stderr,
	test/all/livelock_synchronous_illegal/baseline/verify/livelock_synchronous_illegal,
	test/all/livelock_synchronous_illegal/baseline/verify/livelock_synchronous_illegal.stderr,
	test/all/livelock_synchronous_illegal/livelock_synchronous_illegal.dzn,
	test/all/livelock_synchronous_illegal/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	simulate: Perform shallow run for deadlock check and eligibles.
	* dzn/vm/step.scm (%liveness?): New parameter.
	(mark-liveness?): Use it in new procedure to mark a PC <end-of-trail>
	when an imperative statement is reached.
	(step)[guard,on,compound]: Use it to stop when reaching an imperitive
	statement.
	* dzn/simulate.scm (event-traces-alist): Set %liveness? to perform a
	shallow run.
	(eligible-labels, check-deadlock): Cater for traces ending with
	<end-of-trail>.
	* test/all/compliance_fork_provides/trace: Use non-empty trace to
	trigger the fork compliance error.

2021-09-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Reset reply before starting step.
	This is a follow-up to commit
	    30837f29168f22d93c6eded3fd1741f1d64d2a61
	    vm: Maintain reply per instance.

	* dzn/vm/step.scm (begin-step)[runtime:instance]: Reset reply for
	current instance when running a provides port trigger.
	[runtime:port]: Reset reply for current instance.

2021-09-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Do not shadow livelock in eligibles and deadlock check.
	* dzn/simulate.scm (eligible-labels): Ignore livelock error for an event
	being eligible.
	(check-deadlock): Ignore livelock error when marking an event to
	deadlock.

	complete: Support imports.
	* dzn/parse/complete.scm (annotate-dir, dzn-file?, list-dir,
	strip-prefix, complete:imports): New procedures.
	(complete): Add #:imports parameter and pass it...
	(complete:root): ...here.  Add #:imports parameter.  Support IMPORT.
	* test/language/import/import.dzn,
	* test/language/import/lib/lib.dzn: New files.
	* test/dzn/language.scm (resolve-file): Do no prepend "test/language/"
	if file exists.
	(test-complete): Add #:imports keyword.
	("imports",
	"imports path",
	"imports lib/",
	"imports lib",
	"imports lib ../"): Use it in new tests.
	* test/language/local.mk (EXTRA_DIST): Add them.

2021-09-24  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Restrict list of taus for ltscompare to bare minimum.
	* dzn/verify/pipeline.scm (event-returns): Only add "return" for
	an in-event.  Together with...
	(enum-literal->event): ...this, move into...
	(event-alphabet): ...here.  Only add ".qout" version for an out-event.
	Add docstring.
	(compliance-taus): Only hide events which are present in the behaviour
	of the model, so look for all triggers and actions present.  Add docstring.

2021-09-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: blocking_system2: Add simulatior baseline.
	* test/all/blocking_system2/META: Set trace-format "trace".
	* test/all/blocking_system2/baseline/simulate/blocking_system2: New file.

2021-09-24  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Fix split-arrows for blocking_system2,3.
	Zip used to prepend the port trace prefix before the component trace.
	For system traces with multiple blocking components, a port trace may
	need to inserted mid-trace: just before the component handles the
	trigger.

	* dzn/ast.scm (ast:equal?)[trigger]: New specialization.
	* dzn/simulate.scm (zip): Add trigger parameter.  Use it to find proper
	location in the component trace to insert the port trace.  Also, do not
	insert the port trace twice.  Do not synthesize an action twice.  Be
	more strict in matching the component action with the port action; also
	consider runtime instance.
	(check-provides-compliance): Update caller.  Only reset PC for external
	triggers in a blocked context.  When resetting event for a blocked PC
	and a requires trigger, use the last trigger-return to find the matching
	trigger.

2021-09-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Default to split-arrow trace for baseline.
	* test/dzn/dzn.scm (run-simulate-trace): Switch default to "trace" when
	baseline is present.
	* test/all/*/baseline/simulate: Update.

	test: Rename blocked_system traces.
	* test/all/blocking_system/BlockedSystem1.trace: Move to...
	* test/all/blocking_system/trace: ..this.
	* test/all/blocking_system2/BlockedSystem2.trace: Move to...
	* test/all/blocking_system2/trace: ..this.
	* test/all/blocking_system3/BlockedSystem3.trace: Move to...
	* test/all/blocking_system3/trace: ..this.
	* test/all/blocking_system4/BlockedSystem4.trace: Move to...
	* test/all/blocking_system4/trace: ..this.

2021-09-24  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Read trigger only once per set of traces.
	* dzn/simulate.scm (run-sut): Add event parameter.  Move reading of
	input...
	(run-trail): ...here.

2021-09-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add deadlock_blocking_compliance.
	* test/all/deadlock_blocking_compliance/baseline/simulate/deadlock_blocking_compliance,
	test/all/deadlock_blocking_compliance/baseline/simulate/deadlock_blocking_compliance.stderr,
	test/all/deadlock_blocking_compliance/baseline/verify/deadlock_blocking_compliance,
	test/all/deadlock_blocking_compliance/baseline/verify/deadlock_blocking_compliance.stderr,
	test/all/deadlock_blocking_compliance/deadlock_blocking_compliance.dzn,
	test/all/deadlock_blocking_compliance/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-09-24  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: deadlock_blocking_inevitable: Canonicalize.

	step: Avoid skipping <block> when flush is required.
	* dzn/vm/step.scm (step)[block]: When queue is not empty, continue with
	pc instad of with continuation.
	* test/all/deadlock_blocking_flush/baseline/simulate/deadlock_blocking_flush,
	test/all/deadlock_blocking_flush/baseline/simulate/deadlock_blocking_flush.stderr,
	test/all/deadlock_blocking_flush/baseline/verify/deadlock_blocking_flush,
	test/all/deadlock_blocking_flush/baseline/verify/deadlock_blocking_flush.stderr,
	test/all/deadlock_blocking_flush/deadlock_blocking_flush.dzn,
	test/all/deadlock_blocking_flush/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	step: Do not release a blocked PC with a next blocking event.
	* dzn/vm/step.scm (step)[reply]: Only release pc on a requires trigger,
	or a non-blocking provides trigger.
	* test/all/deadlock_blocking_replies/baseline/simulate/deadlock_blocking_replies,
	test/all/deadlock_blocking_replies/baseline/simulate/deadlock_blocking_replies.stderr,
	test/all/deadlock_blocking_replies/baseline/verify/deadlock_blocking_replies,
	test/all/deadlock_blocking_replies/baseline/verify/deadlock_blocking_replies.stderr,
	test/all/deadlock_blocking_replies/deadlock_blocking_replies.dzn,
	test/all/deadlock_blocking_replies/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-09-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Also show q-out events for --format=diagram.
	* dzn/trace.scm (step:steps->diagram): Support q-out event.
	(trace:format-trace): Do not remove q-out events for component trace.
	* test/all/semantics/semantics.org: Update baseline.

	trace: Handle header with similar instance names.
	* dzn/trace.scm (step:steps->diagram): Start looking for matching name
	in header line beyond current position.  Also, use minimum length of 1
	for arrows and zero for padding.

	guix: dezyne: Update to 2.13.3.rc1.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.13.3.rc1.

2021-09-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.13.3): Move done items...
	(DONE): ...here.
	(Release 2.14): Plan to remove silent.  Fix lookup work item.

2021-09-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* (Changes in 2.13.3 since 2.13.2): Add new items.

2021-09-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Hide client when printing state of PC.
	* dzn/vm/goops.scm (write)[system-state]: Filter-out client.

2021-09-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	complete: Support partial behaviour,system keyword.
	* dzn/parse/complete.scm (complete:component): New procedure, split-out
	from...
	(complete:root): ...here.  Use it to handle toplevel PORTS.
	* test/language/interface6a.dzn,
	test/language/component1d.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.
	* test/dzn/language.scm ("interface6a",
	"component1d"): Use them in new tests.
	("component1c",
	"component-empty"): Update baseline.

	explore: Hide state of client.
	* dzn/vm/util.scm (state->string)[state]: For client port, skip variables.
	* dzn/explore.scm (state->scm)[state]: Likewise.

2021-09-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Update the state before checking for range-error.
	This avoids having an unevaluated expression in the state after a range
	error.

	* dzn/vm/util.scm (assign)[state,variable,top]: Change to...
	[pc,variable,top]: ...this.
	[pc,variable,expression]: Update caller.
	* dzn/vm/util.scm (update-variable): Update accordingly.  Take PC
	instead of STATE parameter.
	(update-state): Update accordingly.

2021-09-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_interface_silent.
	* test/all/hello_interface_silent/META,
	* test/all/hello_interface_silent/hello_interface_silent.dzn: New files.
	* test/all/local.mk (HELLO_TESTS): Add test.

	simulate: Make run-interface run silent separately for in-event.
	* dzn/vm/run.scm (run-interface): Run run-silent separately.  Only
	re-add event on trail when running an out-event.

2021-09-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Re-enable verify for non-observable non-deterministic interfaces.
	* test/dzn/dzn.scm (no-interface-determinism?): New procedure.
	(run-verify): Use it.
	* test/all/compliance_failures_inevitable/META,
	test/all/failures_nondet_optional/META,
	test/all/hello_nondet/META,
	test/all/hello_silent/META,
	test/all/illegal_async_silent/META,
	test/all/illegal_silent/META,
	test/all/silent_provides/META,
	test/all/silent_unused_out/META: Set "no-interface-determinism?" to true.
	* test/all/compliance_failures_inevitable/baseline/verify/compliance_failures_inevitable.stderr,
	test/all/failures_nondet_optional/baseline/verify/failures_nondet_optional,
	test/all/failures_nondet_optional/baseline/verify/failures_nondet_optional.stderr,
	test/all/illegal_async_silent/baseline/verify/illegal_async_silent.stderr,
	test/all/illegal_silent/baseline/verify/illegal_silent.stderr,
	Update baseline.

2021-09-13  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Add --no-interface-determinism option.
	* dzn/commands/verify.scm (parse-opts): Add --no-interface-determinism
	option.
	* dzn/verify/pipeline.scm (in-out:aut-dpweak-bisim->verify-component):
	Use it to skip check.
	* dzn/verify/pipeline.scm (mcrl2:verify-compliance): Use it to skip check.
	* doc/dezyne.texi (Invoking dzn verify): Document it.

2021-09-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Rewrite pipeline debugging to avoid warning.
	* dzn/verify/pipeline.scm (unmemoized-verify-pipeline): Move if outside
	of format.

2021-09-20  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Add memoization of LTS for interface non-determinism check.
	* dzn/verify/pipeline.scm (in-out:dzn->aut-dpweak-bisim-cached): New
	procedure.
	(in-out:aut->aut-weak-trace): Change "model-name"'silent to optional and inevitable.
	(pretty-verify-pipeline): For pipeline debug commands, hide the dzn
	command for the "verify-interface" pipelines.
	(unmemoized-verify-pipeline): For pipeline debug commands, insert an
	extra line-continuation and pipe symbol for the "aut-dpweak-bisim"
	output.
	(verify-pipeline-wrapper): New procedure.
	(memoizing-verify-pipeline): Use it.
	(verify-pipeline): Use it to avoid pipeline memoization when running the
	pipeline in debug mode.
	(mcrl2:verify-interface-asserts): Remove the check for the deterministic
	result.

2021-09-08  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Add deterministic check of interfaces.
	* dzn/verify/pipeline.scm (in-out:lpsconstelm->lpsparelm): Rename to...
	(in-out:lps->lpsparelm): ...this.
	(in-out:lpsparelm->aut): Rename to...
	(in-out:lps->aut): ...this.
	(in-out:aut->aut-weak-trace): Change to procedure.  For interfaces, map
	"model-name"'silent to tau.
	(in-out:aut-dpweak-bisim->aut-failures): Rename to...
	(in-out:aut->aut-failures): ...this.
	(in-out:aut-dpweak-bisim->verify-interface): Rename to...
	(in-out:aut->verify-interface): ..this.
	(in-out:aut->verify-interface-nondet): New variable.
	(in-out.pipeline): Update accordingly.  Use weak-trace instead of
	dpweak-bisim for LTS of interfaces.
	(report-fail): Add reporting of non-deterministic interfaces.
	(mcrl2:verify-interface-asserts): Run both verify-interface and
	verify-interface-nondet.  Add handling of results of determistic check
	on interfaces.
	* test/all/hello_nondet/META,
	test/all/hello_silent/META: Disable verify.
	* test/all/*/baseline/verify/*: Update verify baseline.

	lts: Add deterministic check of interfaces.
	* dzn/lts.scm (assert-partially-deterministic):
	  Add support for <state> labels; all <state> labels indepentent of parameters are the same.

	makreel: Add state vector event self loop for RTC nodes.
	* dzn/templates/makreel.scm (global-state-type, state-sum,
	members-name): New templates.
	* dzn/templates/makreel/event-act@interface,
	dzn/templates/makreel/global-state-type@variable,
	dzn/templates/makreel/members-name-grammar,
	dzn/templates/makreel/members-name@variable,
	dzn/templates/makreel/pair-grammar,
	dzn/templates/makreel/state-sum@variable,
	dzn/templates/makreel/sum-grammar: Use them in new files.
	* dzn/templates/makreel/proc@interface: Use them.
	* test/dzn/dzn.scm (run-lts): Also filter <state>.

	lts: Add support for state vector events.
	* dzn/lts.scm (remove-state-edges): Add remove state events...
	(deadlock-nodes): ...called from here.
	(parse-label): Add 'state' node with arguments to parser.
	(cleanup-label): Support cleaning of state events plus parameters.

2021-09-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Skip verify for non-observable non-deterministic interfaces.
	* test/all/compliance_failures_inevitable/META,
	test/all/failures_nondet_optional/META,
	test/all/hello_nondet/META,
	test/all/hello_silent/META,
	test/all/illegal_silent/META,
	test/all/silent_provides/META,
	test/all/silent_unused_out/META: New files.
	* test/all/illegal_async_silent/META: Include verify in skip.

	test: Add determinism_silent.
	* test/all/determinism_silent/META,
	test/all/determinism_silent/baseline/simulate/determinism_silent,
	test/all/determinism_silent/baseline/simulate/determinism_silent.stderr,
	test/all/determinism_silent/determinism_silent.dzn,
	test/all/determinism_silent/trace: New files.
	test/all/local.mk (HELLO_TESTS): Add test.

	test: Add determinism_interface.
	* test/all/determinism_interface/META,
	test/all/determinism_interface/baseline/simulate/determinism_interface,
	test/all/determinism_interface/baseline/simulate/determinism_interface.stderr,
	test/all/determinism_interface/determinism_interface.dzn,
	test/all/determinism_interface/trace: New files.
	test/all/local.mk (HELLO_TESTS): Add test.

2021-09-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Add --no-interface-determinism option.
	* dzn/commands/simulate.scm (parse-opts): Add --no-interface-determinism
	option.
	(main): Pass #:interface-determinism-check? to...
	* dzn/simulate.scm (simulate): ...here, using new #:interface-determinism-check?
	parameter.  Pass it to...
	(simulate*): ...here.  Likewise to...
	(run-trail): ...here.  Likewise to...
	(end-report): ...here.  Use it to switch check-silence.
	* doc/dezyne.texi (Invoking dzn simulate): Document it.

2021-09-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Nicer determinism error message.
	* dzn/vm/report.scm (initial-error-message): Add nicer and specific and
	wording for interface and component non-determinism.
	* test/all/determinism0/baseline/simulate/determinism0,
	test/all/determinism0/baseline/simulate/determinism0.stderr,
	test/all/determinism1/baseline/simulate/determinism1,
	test/all/determinism1/baseline/simulate/determinism1.stderr,
	test/all/determinism_async/baseline/simulate/determinism_async,
	test/all/determinism_async/baseline/simulate/determinism_async.stderr:
	Update baseline.

2021-09-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Add non-deterministic check for interfaces.
	* dzn/simulate.scm (check-silence): New method.
	(end-report): Use it.
	* test/all/hello_nondet/META: Skip simulate.

2021-09-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Remove dead code.
	* dzn/vm/step.scm (step)[list]: Remove.

2021-09-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	complete: Add support for partial if-expression.
	* test/language/partial-if-expression.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("partial-if-expression"): Use it in new test.
	* dzn/parse/complete.scm: Handle toplevel complete expression for IF and
	GUARD.

2021-09-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	wfc: Add check for undefined functions.
	This is a follow-up to commit
	    e047e93e79c5afc0c35b8e16fdbffcdbf16b3227
	    peg: Avoid redundant skipping during fallback.

	which now allows undefined variables in expresison.  This check prevents
	horrible errors in mCRL2.

	* dzn/wfc.scm (defined-function): New method.
	(wfc)[call]: Use it.
	* test/all/wf_undefined_function: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2021-09-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	complete: Add support for partial trigger name.
	* dzn/parse/complete.scm (complete:root): Handle toplevel OR in the
	context of ON.
	* test/language/partial-trigger-name.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("partial-trigger-name"): Use it in new test.

2021-09-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: Resurrect default initializing reply member values.
	* dzn/templates/c++/reply-member-initializer@bool,
	dzn/templates/c++/reply-member-initializer@enum,
	dzn/templates/c++/reply-member-initializer@int: New template files.
	* dzn/templates/c++/model@component: Use them.

	test: Add hello_function_void_bool_if.
	* test/all/hello_function_void_bool_if/META,
	* test/all/hello_function_void_bool_if/hello_function_void_bool_if.dzn:
	New files.
	* test/all/local.mk (HELLO_TESTS): Add test.

	makreel: Fix call return for back-to-back function calls.
	* dzn/code/makreel.scm (step-into-assign/variable): Factor-out from...
	(makreel:continuation)[ast]: ...here.
	(fix-function): Remove.
	(makreel:then-continuation)[else]: Use step-into-assign/variable
	instead.
	(makreel:then-continuation)[if]: Likewise.  Make uniform by returning a
	list.
	* dzn/wfc.scm (wfc:continuation): Update accordingly.

2021-09-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add inevitable_performance.

2021-09-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	vm: Fix unbounded run-silent.
	This is a follow-up to commit
	    02fd7ddafe016cf69e6f7b0770c0c706129f2797
	    simulate: Make run-require always execute its event.

	* dzn/vm/run.scm (run-silent): Oops, do not return original PC.

2021-09-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: deadlock_optional_out_only: Rename from deadlock_interface_out_only.
	* test/all/deadlock_interface_out_only: Rename to...
	* test/all/deadlock_optional_out_only: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	simulate: Remove deadlock for interfaces with inevitable trace.
	* dzn/simulate.scm (check-deadlock): Filter "optional" interface traces.
	Remove special cased deadlock for interface with only out-events.

2021-09-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add hello_reply.
	* test/all/hello_reply/hello_reply.dzn: New file.
	* test/all/local.mk (HELLO_TESTS): Add it.

	test: Add hello_system_reply.
	* test/all/hello_system_reply/META,
	test/all/hello_system_reply/baseline/simulate/hello_system_reply,
	test/all/hello_system_reply/hello_system_reply.dzn,
	test/all/hello_system_reply/trace: New files.
	* test/all/local.mk (HELLO_TESTS): Add test.

	vm: Maintain reply per instance.
	* dzn/vm/goops.scm (<program-counter>): Move REPLY field to...
	(<state>): ...here.
	(write)[program-counter,state]: Update accordingly.
	* dzn/vm/run.scm (run-to-completion-unmemoized)[choice-label]: Use
	<trigger-return>'s value instead of REPLY.
	* dzn/vm/run.scm (extend-trace, run-interface, run-to-completion*):
	Remove reset of REPLY field.
	* dzn/vm/util.scm (get-reply, set-reply, reset-replies): New methods.
	(assign):
	* dzn/vm/step.scm (step): Use them.
	* dzn/explore.scm (run-to-completion**): Use reset-replies instead of
	setting REPLY.
	* dzn/simulate.scm (event-traces-alist, run-state): Use reset-replies.

	goops: Move trigger-return to vm, drop expression.
	* dzn/goops.scm (<trigger-return>): Move to...
	* dzn/vm/goops.scm (<trigger-return>): ...here.  Remove EXPRESSION
	field.
	* dzn/ast.scm (ast:rescope): Remove support for <trigger-return>.
	(.port)[trigger-return]: Move to...
	* dzn/vm/ast.scm (.port): ...here.

	simulate: Move determining return value from report to step.
	* dzn/vm/report.scm (pc->event, pc->arrow)[trigger-return]: Do no look
	at reply value.
	(pc->event,pc->arrow)[runtime:port,trigger-return]: Do not look at
	<trigger-return>'s EXPESSION.
	(pc->event,pc->arrow)[runtime:component,trigger-return]: Likewise.
	* dzn/vm/report.scm (label->string): Update to look at EVENT.NAME only.
	* dzn/vm/step.scm (step)[end-of-on]: Copy REPLY value into
	<trigger-return>'s EVENT-NAME.
	* test/all/end_of_trail/baseline/simulate/end_of_trail.stderr,
	* test/all/end_of_trail_interface/baseline/simulate/end_of_trail_interface.stderr,
	* test/all/livelock_iterator/baseline/simulate/livelock_iterator.stderr:
	Update baseline.

2021-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.13.3.rc0.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.13.3.rc0.

	doc: Update `NEWS'.
	* NEWS (Changes in 2.13.3 since 2.13.2): New section.

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.13.3): Update.  Move done items...
	(DONE): ...here.

	complete: Add support for incomplete system bindings.
	* dzn/parse/complete.scm (complete:root): Cater for toplevel 'END-POINT
	and handle partially filled END-POINT in BINDING.
	* test/language/system-binding.dzn (system_hello): Add incomplete
	end-points.
	* test/dzn/language.scm ("system end-point provides instance. on",
	"system end-point requires instance. on",
	"system end-point provides instance",
	"system end-point provides instance on",
	"system end-point requires instance",
	"system end-point requires instance on",
	"system end-point provides instance incomplete",
	"system end-point provides instance on incomplete",
	"system end-point requires instance incomplete",
	"system end-point requires instance on incomplete"): Use them in new tests.

	complete: Add support for partial enum-literal.
	* dzn/parse/complete.scm (complete:root): Cater for toplevel SCOPE and
	ENUM-LITERAL.
	* test/language/partial-enum-literal.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("partial-enum-literal",
	"partial-enum-literal on"): Use it in new test.

	tree: Memoize tree:top* and context:root-top*.
	* dzn/parse/tree.scm (tree:top*): Memoize.
	(context:root-top*): New memoized procedure, factored-out from.
	(context:top*): ...here.

	complete: Add support for partial type-name.
	* dzn/parse/complete.scm (complete:root): Recurse upward for complete
	COMPOUND-NAME.  Add handler for TYPE-NAME.
	* test/language/partial-type-name.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("partial-type-name",
	 "partial-type-name on" ): Use it in new tests.

	complete: Add support for incomplete variable.
	* dzn/parse/complete.scm (complete:root): Only recurse deeper for
	incomplete expressions, and only if the expression's value is complete.
	* test/language/variable-incomplete.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("variable-incomplete"): Use it in new test.
	* test/language/interface11.dzn,
	test/language/interface12.dzn: Remove trailing newline.

	complete: Add support for partial interface name.
	* test/language/component1b.dzn: New file.
	* test/language/component1.dzn: Move to...
	* test/language/component1c.dzn: ..this.
	* test/language/component1a.dzn: Move to...
	* test/language/component1.dzn: ..this.
	* test/language/local.mk (EXTRA_DIST): Add component11c.dzn.
	* dzn/parse/complete.scm (complete:root): Handle compoud-name for a
	port's interface.
	* test/dzn/language.scm ("component1"): Move to...
	("component1c"): ...this.
	("component1b",
	"component1b --point=15,10",
	"component1b --point=15,11",
	"component1b --point=15,12"): Move to...
	("component1a",
	"component1a --point=15,10",
	"component1a --point=15,11",
	"component1a --point=15,12"): ...this.
	("component1b",
	"component1b --point=15,11"): New tests.

	language: Show offset and tree of context when using -d,--debug.
	* dzn/commands/language.scm: When debug?, show offset and tree.

	complete: Add support for assign.
	* dzn/parse/tree.scm (.var): Cater for ASSIGN.
	* dzn/parse/lookup.scm (.type): Likewise.
	* dzn/parse/complete.scm (complete:root): Likewise.  Remove dead code.
	Complete statement of ON.
	* test/language/component11.dzn:
	test/language/component11a.dzn
	test/language/component12.dzn
	test/language/component12a.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.
	* test/dzn/language.scm ("component11",
	"component11a"
	"component12",
	"component12a"): Use them in new tests.
	("import statemement",
	"import event variable expression",
	"on imported triggers",
	"on->imported trigger-port"): Update location.
	("type->imported enum"):
	("import event assign expression"): New test.
	* test/language/import.dzn (hello_enum): Add requires port and
	assignment.

	test/language: Add simple expresion tests.
	* test/language/interface13.dzn,
	test/language/interface13a.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.
	* test/dzn/language.scm ("interface13",
	"interface13a"): Use them in new tests.

2021-09-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	lookup: Return #f when import resolving fails.
	* dzn/parse/lookup.scm (resolve-import): Return #f when file-name is #f.
	* test/language/import-nonexistent.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("import nonexistent"): Use it in new test.

2021-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	complete: Add support for action in variable.
	* dzn/parse/complete.scm (complete:root): For ACTION, try variable scope
	first.
	* test/dzn/language.scm ("on imported triggers",
	"space-ihello space nest types"): New tests.

	test/language: Add more import namespace completion tests.
	* test/dzn/language.scm ("space-hello space interfaces",
	"space-hello space types",
	"space-hello types"): New tests.

	test/language: Add namespace completion tests.
	* test/language/space-ihello.dzn (space.ihello.Bool): New type.
	(space.nest): New namespace.
	(space.foo): New component.
	(foo): New component.
	* test/language/space-hello.dzn (iworld): New interface.
	(space.goodbye): Remove.
	(space.hello): New component.
	(hello): New component.
	* test/dzn/language.scm ("provides interfaces, imported, namespace"):
	Rename to...
	("space-hello space interfaces"): ...this, and update.
	("port->namespace-interface"): Update.
	* test/dzn/language.scm ("space-ihello space nest types"):
	"space-ihello space types",
	"space-ihello types",
	"space-ihello space interfaces",
	"space-ihello interfaces"): New tests.

	complete: Add support for component with incomplete action.
	* test/language/component-incomplete-action.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("component-incomplete-action before port",
	"component-incomplete-action after port",
	"component-incomplete-action after behaviour",
	"component-incomplete-action behaviour",
	"component-incomplete-action behaviour end",
	"component-incomplete-action on"): New tests.

	complete: Add support for component with incomplete ports.
	* test/language/component-incomplete-port.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("component-incomplete-port before port",
	"component-incomplete-port after port",
	"component-incomplete-port after behaviour",
	"component-incomplete-port behaviour",
	"component-incomplete-port behaviour end",
	"component-incomplete-port on"): New tests.

	complete: Enhance support for enum variable without expression.
	* dzn/parse/complete.scm (tree:at-location-incomplete?): New procedure.
	(complete:context): Use it.
	(complete:root): For actions, handle position in relation to behaviour
	an on.
	* test/language/enum-variable-expression-missing.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("enum-variable-expression missing"): Use it in
	new test.

	complete: Fixes for before, in, and after incompete behaviour.
	* dzn/parse/complete.scm (tree:at-location?): No longer ignore
	end-location when incomplete?.
	(tree:after-location?, tree:before-location): False if also at location.
	(tree:around-location?): True if at location.
	(tree:at-location-incomplete?): New procedure.
	(complete:context): Use it.
	(complete:root): Fix completion for before,
	in and after an incomplete behaviour.
	* test/dzn/language.scm ("component1",
	"component1a"): Update baseline.

	complete: Handle damaged parse-tree.
	* dzn/parse/complete.scm (complete:root): When o is not a tree, travel
	up in context until we reach one, and recurse.

	test/language: Make models well-formed.
	* test/language/ihello.dzn (ihello): Remove parentheses after event.
	* test/language/space-ihello.dzn (ihello): Likewise.
	* test/language/import.dzn (hello_enum): Use variable with valued call.
	* test/language/interface9b.dzn (I): Make bar an out event.
	* test/language/interface9c.dzn (I): Likewise.
	* test/dzn/language.scm ("interface9b",
	"interface9c"): Update baseline.

	complete: Add support for illegal.
	* dzn/parse/complete.scm (complete:trigger-names): Add illegal when the
	on has no statements and the last trigger is complete.
	(complete:statements): Add illegal when there are no statements.
	* test/language/component5a.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("component5a"): Use it in new test.
	"component4",
	"component5",
	"component9a",
	"component10"): Update baseline.

	language: Add --line option as alias for --point.
	* dzn/commands/language.scm (parse-opts): Add --line.
	(main): Use it.

	complete: Use srfi-71 instead of receive.
	* dzn/parse/complete.scm (tree:around-location?): Replace receive by
	regular let from srfi-71.

	test/language: Revert semantic naming for interface test.
	* test/language/interface-I-enum-in.dzn,
	test/language/interface-I-in.dzn,
	test/language/interface-I-in2.dzn,
	test/language/interface-I-open.dzn,
	test/language/interface-I.dzn: Remove files.
	* test/language/component0.dzn,
	test/language/interface0.dzn,
	test/language/interface1.dzn,
	test/language/interface1b.dzn: New files.
	* test/dzn/language.scm: Update accordingly.  Strip extra level of
	naming from all tests.
	* test/language/local.mk (EXTRA_DIST): Update accordingly.

	complete: Fix interface names from other namespace.
	* dzn/parse/tree.scm (context:trigger*, context:variable*,
	context:type*, context:type*): New procedures.
	* dzn/parse/complete.scm (complete:interface-names): Use
	context:interface* include namespace.  Sort names.
	(complete:root): Update callers.
	* test/dzn/language.scm ("completion provides interfaces, imported,
	namespace"): Update baseline.

	complete: Remove duplication of completion procedures.
	* dzn/parse/tree.scm (tree:top*->context*): New procedure.
	(context:interface*, context:component*, context:model*): Use it to
	create new procedures.
	* dzn/parse/complete.scm (complete:type): Add #:actions? and #:type
	parameters.  Resolve type using context by default, do not include
	actions when actions? set to #f.
	(complete:for-type, complete:on): Remove.
	(complete-literal, complete-for-type, complete:behaviour): Refactor
	using complete:type.
	(complete:function): Rename to...
	(complete:reply): ...this, and refactor.
	(complete:reply): New procedure.

	complete: Simplify fall-back in complete:root.
	* dzn/parse/complete.scm (complete:root): Split fall-back case in two.

	tree: Cleanup tree:name, reduce its use.
	* dzn/parse/tree.scm (.name): Cater for formal and function.  Return #f
	for root.
	(tree:name): Simlify using .name.
	* dzn/parse/lookup.scm (search): Use .name instead of tree:name.
	* dzn/parse/complete.scm (complete:root): Likewise.

	tree: Rename tree:context? and parent-context.
	* dzn/parse/tree.scm (tree:context?): Rename to...
	(context?): ...this.
	(parent-context): Rename to...
	(context:parent): ...this.
	(tree*->context*): New procedure.
	(context:event*, context:formal*, context:function*, context:port*,
	context:trigger*, context:variable*): Use it to refactor.

	complete: Use uniform naming.
	* dzn/parse/complete.scm (at-location?): Rename to...
	(tree:at-location?): ...this.
	(after-location?): Rename to...
	(tree:after-location?): ...this.
	(around-location?): Rename to...
	(tree:around-location?): ...this.
	(before-location?): Rename to...
	(tree:before-location?): ...this.
	(context:event-names): Rename to...
	(complete:event-names): ...this.
	(context:interface-names): Rename to...
	(complete:interface-names): ...this.
	(context:port-event-names): Rename to...
	(complete:port-event-names): ...this
	(context:trigger-names): Rename to...
	(complete:trigger-names): ...this
	(context:action-names): Rename to...
	(complete:action-names): ...this.
	(tree:function-names): Rename to...
	(complete:function-names): ...this.
	(context:enum-value-names): Rename to..
	(complete:enum-literal-names): ...this.
	(tree:int-value-names):  Rename to...
	(complete:int-literal-names): ...this.
	(tree:enum-field-test): Rename to...
	(complete:field-test-names): ...this.
	(context:type-value-names): Rename to...
	(complete:type-literal-names): ...this.
	(complete-enum-literal): Rename to...
	(complete:enum-literal): ...this.
	(complete-literal): Rename to...
	(complete:literal): ...this.
	(complete-for-type): Rename to...
	(complete:for-type): ...this.
	(context:complete-for-type): Rename to...
	(complete:type): ...this.
	(complete-function): Rename to...
	(complete:function): ...this.
	(complete-on): Rename to...
	(complete:on): ...this.
	(complete:boolean-expressions): Rename to...
	(complete:boolean-expression): ...this.
	(instance-ports): Move into...
	(instance-ports-alist): ...here.
	(complete-other-end-point): Rename to...
	(complete:other-end-point): ...this.
	(behaviour-top): Rename to...
	(complete:behaviour): ...this.
	(context:on-type): Rename to...
	(.type-of-on): ...this.
	(context:statements): Rename to...
	(complete:statements): ...this.
	(system-top): Rename to...
	(complete:system): ...this.
	(context:complete): Rename to...
	(complete:root): ...this.
	And update all callers.

	complete: Use context to avoid type leakage.

	complete: Add support for else.
	* dzn/parse/complete.scm (context:statements): Add offset parameter.
	Use it to determine whether to complete ELSE.
	(context:complete): Update callers.  Make sure to pass valid context.

	complete: Add support damaged for expression.
	* dzn/parse/tree.scm (.value): Cater for damaged expression.
	* dzn/parse/complete.scm (context:statements): Handle damaged expression.

	complete: Add support for if-statement.
	* dzn/parse/tree.scm (.else, then): New procedures.
	(.value): Cater for partially parsed expression.
	(tree:imperative): Add skip-statement.
	* dzn/parse/complete.scm (context:statements): Include "if".
	(context:complete): Cater for 'if.
	* test/dzn/language.scm ("language component5", "language component6",
	"language component6a", "language component6b", "language component10",
	"language component10a"): Update baseline.

	complete: Cleanup context:complete.
	* dzn/parse/complete.scm (context:complete): Use predicates instead of
	destructors.

	complete: Cleanup direction accessors.
	* dzn/parse/tree.scm (.direction): Cater for 'direction.
	(tree:direction): New procedure.
	* dzn/parse/complete.scm (tree:type-name,
	.direction, tree:event-dir, tree:port-dir): Remove.
	(context:event-names, context:port-event-names): Update callers.

	complete: Use context resolving instead of manual lookup.

	complete: Add support for otherwise.
	* dzn/parse/complete.scm (context:complete): ALso return "otherwise" for
	'otherwise expression.
	* test/dzn/language.scm ("language interface10",
	"language interface10a"): Update tests.

	complete: Add support for arguments.
	* dzn/parse/tree.scm (context:stripped-dotted-name, tree:argument*): New
	procedures.
	(context:full-name): Filter-out null strings here, instead of...
	(context:dotted-name): ...here.
	* dzn/parse/lookup.scm (.function): New procedure.
	* dzn/parse/complete.scm (context:type-names): Simplify using
	context:stripped-dotted-name.  Sort.
	(tree:enum-value-names): Rename to...
	(context:enum-value-names): ...this.  Take a context and add optional
	context parameter.
	(tree:type-value-names): Rename to...
	(context:type-value-names): ...this.  Take a context and add optional
	context parameter.
	(complete-enum: Remove.
	(complete-enum-literal, complete-literal, context:complete-for-type,
	complete-function, complete-on, context:complete): Update callers.
	* test/dzn/language.scm ("language interface I { enum E; in _",
	"completion component-state"
	"completion component-enum member",
	"completion component-enum local",
	"completion enum local",
	"completion enum reply",
	"completion enum formal",
	"completion bool local",
	"completion bool reply",
	"completion bool formal",
	"completion int local",
	"completion int reply",
	"completion int formal"): Update baseline.

2021-09-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: Avoid redundant skipping during fallback.
	* dzn/parse/peg.scm (peg:parse): Add # after formal.  Allow
	unknown-identifier in not-expresssion.
	* test/all/undefined/component/argument/baseline/verify/argument.stderr,
	test/all/undefined/component/argument_seen/baseline/verify/argument_seen.stderr,
	test/all/undefined/component/guard/baseline/verify/guard.stderr,
	test/all/undefined/component/if/baseline/verify/if.stderr,
	test/all/undefined/interface/guard/baseline/verify/guard.stderr,
	test/all/undefined/interface/if/baseline/verify/if.stderr,
	test/all/wf_variableInitExpression/baseline/verify/wf_variableInitExpression.stderr:
	Update baseline.

2021-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Gracefully handle undeclared argument.
	* dzn/goops.scm (<arguments>): Inherit from <locationed> too.
	* dzn/wfc.scm (argument-type-check): Add arguments parameter.  Use it to
	report unidentified identifier when argument is a string.
	(wfc)[arguments]: Update caller.

	wfc: Gracefully handle bare string as guard expression.
	* dzn/wfc.scm (wfc)[guard]: If EXPRESSION is a string, generate an
	undefined identifier error.

	complete: Fix for incomplete enum variable.
	* dzn/parse/complete.scm (context:complete): Sue complete-enum for
	incomplete enum variable too.

	complete: Add support for formals.
	* dzn/parse/lookup.scm (.type): Cater for 'formal.
	* dzn/parse/complete.scm (context:complete): Complete it.

	complete: Add support for optional, inevitable.
	* dzn/parse/complete.scm (context:trigger-names): Add "optional",
	"inevitable" for interface.
	* test/dzn/language.scm ("language interface9"): "language interface9a",
	"language interface9b", "language interface9c", "language interface9d"):
	Update baseline.

	tree: Robustifications for fall-back tree.
	* dzn/parse/tree.scm (.event-name): Cater for incomplete action.
	(.port-name): Likewise.
	(context:full-name): Cater for scopes without name.

	complete: Include type names at toplevel behaviour.
	* dzn/parse/complete.scm (context:enum-names, context:int-names,
	complete:type-names): Remove.
	(complete-enum-literal, complete-literal, context:complete-for-type,
	complete-function, complete-on, context:complete): Update to use
	context:type-names.

	complete: Fix completion of interface types.
	* dzn/parse/tree.scm (context:top*, context:type*): New procedures.
	(tree:scope?): Add EXTERN, INT.
	(.type-name): Use tree:context? instead of null?.
	* dzn/parse/complete.scm (context:type-names): Use them to include the
	(interface) namespace for (interface) types.
	(complete:types-names): Remove "bool", "void".
	* test/language/interface-enum.dzn: Add blank line.
	* test/dzn/language.scm ("language component7"): Update baseline.
	("completion interface-enum"): Add test.
	* test/dzn/language.scm ("language component5", "language component6",
	"language component6a", "language component6b", "language component10",
	"language component10a"): Update baseline.

	complete: Add support for reply expression.
	* dzn/parse/tree.scm (.expression): Cater for reply.
	* dzn/parse/complete.scm (context:members): Only run
	tree:variable* on valid scope.
	(context:on-type): New procedure, factored-out from...
	(context:statements): ...here.  Includde variable names.
	(context:complete): Use context-on-type to support reply.

	complete: Add support completing of reply.
	* dzn/parse/tree.scm (context:bool, context:void): New variables.
	* dzn/parse/complete.scm (context:trigger*): New procedure.
	(context:statements): Use it.
	* dzn/parse/lookup.scm (tree:lookup): Move lookup of bool,
	void to...
	(context:lookup): ...here.

	complete: Add support for return in function.
	* dzn/parse/complete.scm (context:statements): New procedure.
	(context:complete): Use it.

	complete: Add support for skip statement.
	* dzn/parse/complete.scm (context:complete): Complete on skip-statement.

2021-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	complete: Stop recursion when no tree found.
	This may happen for fall-back trees.

	* dzn/parse/complete.scm (context:statements): Return null on #f.

2021-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	complete: Add support for event type.
	* dzn/parse/lookup.scm (.type): Cater for event.
	* dzn/parse/tree.scm (tree:name): Likewise.
	* dzn/parse/complete.scm (context:complete): Likewise.

	complete: Add support for system completion.
	* dzn/parse/tree.scm (.instances-and-bindings, .left, .right): New
	procedures.
	(.type-name): Cater for 'instance.
	(tree:dotted-name): Likewise.
	(context:port*): New procedure.
	* dzn/parse/lookup.scm (.instance): New procedure.
	(.port): Cater for 'instance.
	(.type): Likewise.
	* dzn/parse/complete.scm (instance-ports, instance-ports-alist):
	instance-binding): complete-other-end-point): system-top): New
	procedures.
	* dzn/parse/complete.scm (context:complete): Use them to complete system
	and binding.
	* test/language/system.dzn: Update.
	* test/language/system-binding.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("completion system before ports"
	("completion system between ports",
	("completion system after ports",
	("completion system before instance",
	("completion system after instance",
	("completion system after binding",
	("completion system binding port provides",
	("completion system binding port requires",
	("completion system binding instance provides",
	("completion system binding instance requires",
	("completion system end-point provides",
	("completion system end-point requires"): Use them in new tests.

	tree: Add tree:list-model*.
	* dzn/parse/tree.scm (tree:model*): Rename to...
	(tree:list-model*): ...this.
	* dzn/commands/parse.scm (list-models): Update caller.
	* dzn/parse/tree.scm (context:collect,
	tree:model*): New procedures.

	lookup: Add context resolving.
	* dzn/parse/lookup.scm (.event, .port, .type): New procedures.

	peg: Support partially parsing of binding and end-points.
	* dzn/parse/peg.scm (peg:parse): Add # after second end-point.

	language: stress: Strip /**/ comments.
	* dzn/parse/stress.scm (tipex-comments): Include /*..*/ in comment
	regexp.

	language: stress: Whitespace expression for assign expectations.
	* dzn/parse/stress.scm (assert-completions)[make-hole]: Whitespace
	expression for assign at offset.

	language: stress: Whitespace dangling parameter lists.
	* dzn/parse/stress.scm (assert-completions): Whitespace any dangling
	parameter list instead of only for reply.

2021-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	language: stress: Add filtered to remove some expectations.
	This removes completion tests for "behaviour", "system", and user type
	declarations.

	* dzn/parse/stress.scm (filtered): New procedure.
	(stress): Use it.

2021-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	language: stress: Whitespace expression in variable expectation.
	* dzn/parse/stress.scm (assert-completions)[make-hole]: Whitespace
	expression for variable at offset.

	language: stress: Whitespace parentheses after reply expectiation.
	* dzn/parse/stress.scm (assert-completions)[make-hole]: Whitespace
	parentheses and expression after a whitespaced reply.

	language: Support -d,--debug for stress.
	* dzn/commands/language.scm (main): Pass #:debug? to...
	* dzn/parse/stress.scm (stress): ...here.  Add new #:debug? parameter,
	pass it to...
	(assert-completions): ...here.  Add new #:debug? parameter.  Dump string
	to util-<offset>.dzn in debug mode.

	language: stress: Fix offset of identifier snippets.
	* dzn/parse/stress.scm (completion-heuristics): Use match:start as
	offset from identifiers-regex matches too.

	language: stress: Refactor to allow dumping failed snippets.
	* dzn/parse/stress.scm (test:complete): Uncurry.  Take
	already-whitespaced string.
	(assert-completions): Add #:file-name parameter.
	[make-hole]: New inner procedure.
	[assert-completion]: Dump <file-name>-<offset>.dzn if snippet completion
	fails.

	language: stress: Fix off-by one.
	* dzn/parse/stress.scm (test:complete): Fix off by one.

2021-09-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	language: Add -s,--stress option for complete.
	This adds a stress test for the Dezyne Language completion.

	* dzn/parse/stress.scm: New file.
	* dzn/parse/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/commands/language.scm (parse-opts): Add -s,--stress.
	(main): Call stress if used.

2021-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	complete: Fixes for toplevel interface, component, and behaviour.
	* test/language/interface-behaviour.dzn: New file.
	* test/dzn/language.scm ("language interface-behaviour before",
	"language interface-behaviour after",
	"language interface-behaviour before on",
	"language interface-behaviour between on",
	"language interface-behaviour after on"): Use it in new tests.
	* test/language/local.mk (EXTRA_DIST): Add it.

	complete: Fixes for "provides", "requires", and "on".
	* dzn/parse/complete.scm (context:complete): Return provides, requires
	when positioned before behaviour.
	* test/language/component-behaviour.dzn,
	test/language/component-provides.dzn: Add spacing.
	* test/dzn/language.scm ("completion component-provides"): Rename to...
	("completion component-provides before"): ...this and update.
	("completion component-provides"): Rename to...
	("completion component-provides inside"): ...this and update.
	("completion component-behaviour before",
	"completion component-provides after"): New tests.
	("completion component-behaviour"): Rename to...
	("completion component-behaviour behaviour"): ...this and update.
	("completion component-behaviour"): Rename to...
	("completion component-behaviour end"): ...this and update.

	complete: Add support for port completion in complete component.
	* dzn/parse/complete.scm (context:complete):
	* test/language/component-behaviour.dzn: Add behaviour.
	* test/dzn/language.scm ("completion component-provides"): New test.
	("completion component-behaviour"): Update.

	complete: Add support for port qualifiers.
	* test/language/component-requires.dzn: New file.
	* test/dzn/language.scm ("completion component-requires provides"
	"completion component-requires requires",
	"completion component-requires external",
	"completion component-requires injected",
	"completion component-requires external injected",
	"completion component-requires injected external"): Use it in new tests.
	* test/language/local.mk (EXTRA_DIST): Add it.

	complete: Add support for data.
	* test/language/component-data.dzn: New file.
	* test/dzn/language.scm ("completion data literal",
	"completion data local",
	"completion data formal",
	"lookup data var->formal"): Use it in new tests.
	* test/language/local.mk (EXTRA_DIST): Add it.

	complete: Add support for bool and int.
	* test/language/component-bool.dzn,
	test/language/component-int.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.
	* test/dzn/language.scm ("completion bool literal",
	"completion bool local",
	"completion bool reply",
	"completion bool formal",
	"lookup bool var->formal",
	"completion int literal",
	"completion int local",
	"completion int reply",
	"completion int formal",
	"lookup int var->formal"): Use it in new tests.
	* dzn/parse/tree.scm (tree:bool,tree:void): New variables.
	(tree:type?): Use them to cater for bool, int, void.
	(.value): Cater for literal.
	(.name): Cater for bool, int, void.
	* dzn/parse/complete.scm (complete-literal): New procedure.
	(context:complete): Use it to complete at literal.

	complete: Support completion in function.
	* dzn/parse/tree.scm (.name): Cater for formal.
	(.type-name): Likewise.
	(tree:variable*): Cater for function.
	(is-a?): Cater for raw string.
	(tree:name-equal?): Likewise.
	(tree:scope+name): Likewise.
	* dzn/parse/complete.scm (context:locals): Include formals.
	(complete-enum-literal): Cater for function.
	(complete-function, filter-self): New procedures.
	(context:complete): Use them.
	(complete-on): Include function names.
	* test/language/component-enum.dzn: Use Bool as formal type, add formal
	reference.
	* test/dzn/language.scm ("completion enum field",
	"completion enum local",
	"completion enum reply"): Update baseline.
	("completion enum formal",
	"lookup enum var->formal"): New tests.

	complete: Avoid unbounded recursion.
	* dzn/parse/complete.scm (context:complete): Do not recurse for var.

	language: Exit early upon lookup failure.
	* dzn/commands/language.scm (main): Avoid collateral error when lookup
	failed.

2021-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Flatten fall-back tree.
	This avoids untyped tree elements, such as ... ((action ...) ...).

	* dzn/parse.scm (peg:flatten-tree): New procedure.
	(string->parse-tree): Use it when using the fall-back parser.

2021-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test/language: Add tests for enum field with comments.
	* test/language/enum.dzn (Tri_bool): New enum with comments.
	(ihell): Use it.
	* test/dzn/language.scm ("completion enum-literal with comment",
	"lookup enum-literal->field with comment"): New tests.

	tree: Cater for comments in enum definition.
	* dzn/parse/tree.scm (.name): Cater for comment attached to name.
	(tree:id*): Use .name instead of destructor.

	test/language: Add blocking tests.
	* test/language/blocking.dzn: New file.
	* test/dzn/language.scm ("lookup import-double.space prefix",
	"lookup reply-port->port"): Use it in new tests.
	* test/language/local.mk (EXTRA_DIST): Add it.

	test: blocking_binding: Use canonical names.
	* test/all/blocking_binding/blocking_binding.dzn: Canonicalize.
	* test/all/blocking_binding/main.cc,
	* test/all/blocking_binding/main.cs,
	test/all/blocking_binding/main.js: Update accordingly.

	lookup: Support lookup of blocking out-binding.
	* dzn/parse/lookup.scm (tree:lookup-var): Cater for trigger-formal.
	(resolve-var): Likewise.
	(context-lookup-definition): Likewise.

	lookup: Support lookup of reply port.
	* dzn/parse/tree.scm (.port-name): Cater for reply.
	* dzn/parse/lookup.scm (resolve-port): Rename to...
	(resolve-interface): ...this.
	(context-lookup-definition): Update caller.
	(resolve-interface): New procedure.
	(context-lookup-definition): Use it to lookup reply port.

	test/language: Add variable expression lookup test.
	* test/language/lookup.dzn: Add variable reference in variable
	expression.
	* test/dzn/language.scm ("lookup variable-expression->variable"): Use it
	in new test.

	lookup: Support lookup of variable in expression.
	* dzn/parse/tree.scm (tree:statement?): Export.
	* dzn/parse/lookup.scm (tree:lookup-var): Use it to also resolve
	expression.

	test/language: Add completion tests.
	* test/language/interface9b.dzn: Move to...
	* test/language/interface9a.dzn: ...here.
	* test/language/component2c.dzn,
	* test/language/interface9b.dzn,
	* test/language/interface9c.dzn,
	* test/language/interface9d.dzn,
	test/language/interface9c.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.
	* test/dzn/language.scm ("language component2c",
	"language interface9a",:
	"language interface9c"): New tests.

2021-09-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	complete: Complete at empty on, empty triggers, and comment.
	* dzn/parse/complete.scm (context:complete): Handle empty triggers,
	empty on and comment.

2021-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test/language: Add five completion tests.
	* test/language/component3.dzn: Move to...
	* test/language/component3a.dzn: ...this.
	* test/language/component2.dzn: Move to...
	* test/language/component3.dzn: ...this.
	* test/language/component2.dzn,
	test/language/component2a.dzn,
	test/language/component2b.dzn,
	test/language/component6a.dzn,
	test/language/component6b.dzn,
	test/language/interface8a.dzn,
	test/language/interface8b.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.
	* test/dzn/language.scm ("language component3"): Move to...
	("language component3a"): ...this.
	("language component2"): Move to...
	("language component3"): ...this.
	("language component2",
	"language component2a",
	"language component2b",
	"language component6a",
	"language component6b",
	"language interface8a",
	"language interfa8e8b"): New tests.

2021-09-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	complete: Better completion for behaviour, guard, and on.
	* dzn/parse/complete.scm (context:complete): Add completion for
	'behaviour-statements.  Rewrite matchers for 'guard and 'on.

2021-09-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	peg: Avoid crash popping from empty variable stack.
	* dzn/parse/peg.scm (peg:parse)[-add-var-]: Do not pop when no stack is
	available.

2021-09-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: Make the empty variable-stack the empty list.
	* dzn/parse/peg.scm (peg:parse)[variable-stack]: Change to a list of
	null.
	[enter-frame,exit-frame,-add-var-,-var-]: Update accordingly.

2021-09-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: Avoid accidentally parsing white-space.
	* dzn/parse/peg.scm (peg:parse): Use skip-parser for reset and
	enter/exit frame.
	* test/all/parse_locations/baseline/parse_locations,
	test/all/parse_peg_locations/baseline/parse_peg_locations: Update baseline.

2021-09-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lookup: Add memoization.
	* dzn/parse/lookup.scm (search-import, search, widen-to-imports,
	context:lookup): Wrap in pure-funcq.

2021-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test/language: Add namespace tests.
	* test/language/double.space.dzn:
	test/language/import-double.space.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.
	* test/dzn/language.scm ("lookup double.space",
	"lookup double.space prefix",
	"lookup import-double.space",
	"lookup import-double.space prefix"): Use them in new tests.

	test/language: Add global tests.
	* test/language/global.space.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("lookup global.space global",
	"lookup global.space namespaced"): Use it in new tests.

	lookup: Support explicit global.
	* dzn/parse/tree.scm (.global): New procedure.
	* dzn/parse/lookup.scm (context:lookup): Cater for 'global.
	(context-lookup-definition): Likewise.
	(lookup-definition): Likewise.

2021-03-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parse: Make global namespace reference explicit.
	* dzn/parse/peg.scm (peg:parse): Allow optional global scope for
	enum-literal and compound-name.
	* dzn/parse/ast.scm (parse-tree->ast): Update accordingly.
	* test/dzn/language.scm ("lookup port->imported-interface, with
	fallback"): Remove.

2021-03-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lookup: Refactor to breadth-first and to allow memoization.
	* dzn/commands/language.scm (main): Update caller.
	* dzn/parse/lookup.scm (lookup-import): Rename to...
	(search-import): ...this.
	(lookup-imported): Remove.
	(look-in-scope): Rename to...
	(search): ...this, rewrite.
	(lookdown): Rename to...
	(widen-to-parent): ...this, rewrite.
	(widen-to-imports, search-or-widen-to-imports): New procedures.
	(context:lookup): Rewrite.
	(tree:lookup): Rewrite.
	* dzn/parse/tree.scm (tree:type-name, context:type-name, debug-name):
	New procedures.
	* dzn/parse/tree.scm (.name): Cater for models and types without name.

2021-09-10  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Use --exclude-tau option to reduce command-line length.
	* dzn/verify/pipeline.scm (component-exclude-taus): New procedure.
	(model-taus): Use it.

	lts: Add --exclude-tau option.
	* dzn/commands/lts.scm (parse-opts): Add --exclude-tau option.
	(main): Pass it to...
	* dzn/lts.scm (lts-hide): ...here, adding new parameter.  Handle it.
	* test/dzn/lts.scm (test:lts-hide,
	test:lts-tau-loops): Update accordingly.

2021-08-16  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Remove event names from taus to reduce command-line length.
	* dzn/verify/pipeline.scm (component-taus)[port-taus]: Remove inner
	procedure.  Use port-name only.

	lts: Allow prefixes for taus.
	* dzn/lts.scm: Filter on prefix of TAU too.

2021-09-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Avoid quadratic duplication of traces with each new event.
	* dzn/simulate.scm (run-trail): When debug?, show number of traces.
	Remove duplicate PCs before recursing.

2021-09-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	pre-inst-env: Add ./emacs to EMACSLOADPATH.
	* build-aux/pre-inst-env.in (EMACSLOADPATH): Add $abs_top_srcdir/emacs.

2021-09-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	language: Cache parse tree for command-line use.
	* dzn/commands/language.scm (main)[file-name->parse-tree): Cache
	parse-alist.

2021-09-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	.dir-locals.el: Expand directory name for Geiser.
	* .dir-locals.el (prefix-dir-locals-dir): Expand the directory name
	added to geiser-guile-load-path.

2021-09-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.13.2.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.13.2.

	doc: Update 'NEWS'.
	* NEWS (Changes in 2.13.2 since 2.13.1): New section.

	doc: Update 'ROADMAP'.
	* ROADMAP (Release 2.13.3): Rename from 2.13.0.
	Add XFAIL external_blocking_livelock and Simulator UX.
	(Release 2.13.4): New section.
	(Release 2.13.5): Likewise.
	(Release 2.13.6): Likewise.
	(DONE): Update.

	trace: Synthesize complement for all split-arrow orphans.
	* dzn/trace.scm (merge-communications)[second-half?]: New inner procedure.
	[merge-able?]: Rewrite in terms of first-half? and second-half?.
	[synthesize-complement]: Extract new inner procedure.
	(merge-communications): Anywhere in the trace, a missing first
	half-arrow or missing second half-arrow is synthesized and added to the
	steps.

2021-09-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Cleanup compliance trace debugging.
	* dzn/simulate.scm (check-provides-compliance): Only print prepared
	port-trail and sut-trail.

	trace: In case of split-arrow error, also preserve input errors.
	* dzn/trace.scm (merge-communications): Append split-arrows errors to
	input error messages.

	simulate: Fix modeling livelock in interface.
	* dzn/vm/run.scm (run-interface): Do not add event to trail if it is a
	modeling events.

	simulate: Cleanup (.ast (.type (%sut))).
	* dzn/ast.scm (ast:type)[model]: New specialization.
	* dzn/vm/runtime.scm (runtime:ast-model): New method.
	(runtime:%sut-model): Use it.
	* dzn/vm/util.scm (provides/requires-trigger?): Use it.
	* dzn/vm/run.scm (mark-livelock-error): Use it.
	(run-external): Use it.
	* dzn/explore.scm (state-diagram->dot): Use it.
	* dzn/simulate.scm (check-deadlock): Use it.
	(run-sut): Use it.
	(end-report): Use it.

2021-09-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add hello_external_inevitable.
	* test/all/hello_external_inevitable/hello_external_inevitable.dzn: New file.
	* test/all/local.mk (HELLO_TESTS): Add it.

	simulate: Make trail determine external q-out.
	* test/all/semantics/semantics.org (external_multiple_out): Update
	accordingly.
	* dzn/vm/run.scm (external-trigger?): New function ...
	(external-trigger-in-q?): Rename from external-event? ...
	(run-external): ... and use it.
	(run-to-completion*): ... and here too.
	* test/all/semantics/semantics.org (external_multiple_out)
	test/all/compliance_external_inevitable/baseline/simulate/compliance_external_inevitable,
	test/all/compliance_external_inevitable/baseline/simulate/compliance_external_inevitable.stderr:
	Update baseine.

	test: Add illegal_external_inevitable.
	* test/all/illegal_external_inevitable/baseline/simulate/illegal_external_inevitable,
	test/all/illegal_external_inevitable/baseline/simulate/illegal_external_inevitable.stderr,
	test/all/illegal_external_inevitable/baseline/verify/illegal_external_inevitable,
	test/all/illegal_external_inevitable/baseline/verify/illegal_external_inevitable.stderr,
	test/all/illegal_external_inevitable/illegal_external_inevitable.dzn,
	test/all/illegal_external_inevitable/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	simulate: Prioritize reporting <illegal> over other errors.
	* dzn/vm/run.scm (filter-illegal+implicit-illegal): New procedure.
	* dzn/simulate.scm (end-report): Use it.

2021-09-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Refactor report.
	* dzn/vm/report.scm (report): Be explicit about reporting the first trace.

	simulate: Use all traces to determine eligibles and deadlock.
	* dzn/simulate.scm (end-report)[deadlock-report]: Determine deadlock
	using all traces at once; [eligible]: Split-out to...
	(eligible-labels)[traces]: ...this new specialization.
	(event-traces-alist)[async-trace->alist]: Also include async traces.
	(event-traces-alist)[list]: New specialization.
	(eligible-labels)[list]: Remove specialization.
	(eligible-labels)[pc, list]: Remove pc parameter.
	(end-report, run-trail): Update accordingly.

2021-09-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	misc: Add merge-alist utilities.
	* dzn/misc.scm (merge-alist2, merge-alist-list): New procedures.

2021-09-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Remove "is-not-deadlock?".
	* dzn/simulate.scm (is-not-deadlock?): Remove.
	(eligible-labels): Use (negate .status) instead.
	(check-deadlock): Likewise.

2021-09-01  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Hide external q-in in split-arrows trace.
	* dzn/vm/report.scm (pc-arrow?): Hide external out events.
	(complete-split-arrows-pcs): Do not synthesize <q-in> for external out
	events.  Set parent of action to interface, not port.
	* test/all/semantics/semantics.org (external_multiple_out,
	indirect_blocking_multiple_external_out): Update accordingly.

2021-09-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Fix parent when synthesizing actions.
	* dzn/vm/report.scm (complete-split-arrows-pcs): Set parent of action to
	interface, not port.

2021-09-01  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Hide state of client.
	* dzn/vm/util.scm (serialize)[state]: For client port, skip variables.

	test: Add hello_blocking_external.
	* test/all/hello_blocking_external/hello_blocking_external.dzn: New file.
	* test/all/local.mk (HELLO_TESTS): Add it.

2021-09-01  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Add initial <exernal>.port.event for blocked trace.
	This fixes hello_blocking_external.

	* dzn/simulate.scm (zip): Make idempotent.
	(check-provides-compliance): Zip blocked trace like any other.
	(run-sut): At end-of-trail run check-provides-compliance.

2021-08-31  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add compliance_external_inevitable.
	Reproduce external compliance not reported by dzn simulate as reported
	by Joran Jessurun <joran.jessurun@ajmail.com>.

	* test/all/compliance_external_inevitable/baseline/simulate/compliance_external_inevitable,
	test/all/compliance_external_inevitable/baseline/simulate/compliance_external_inevitable.stderr,
	test/all/compliance_external_inevitable/baseline/verify/compliance_external_inevitable,
	test/all/compliance_external_inevitable/baseline/verify/compliance_external_inevitable.stderr,
	test/all/compliance_external_inevitable/compliance_external_inevitable.dzn,
	test/all/compliance_external_inevitable/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-09-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Make run-require always execute its event.
	The run-requires procedure had implicit handling of silent events.  This
	mechanism allowed generating traces where the event itself did not
	execute.

	This fixes compliance_external_inevitable.

	* dzn/vm/util.scm (dequeue-external): Robustify against unset queue.
	* dzn/vm/run.scm (run-requires): Continue with event-executed? traces.
	(run-to-completion*): Run run-silent before run-requires.
	(run-to-completion-unmemoized)[reset-postponed-match]: Instead of taking
	the first of traces, reset them all and run delete-duplicates on them.

2021-08-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Always show labels for --format=trace.
	* dzn/simulate.scm (end-report): Set #:eligible when calling report.

	simulate: Report location of <imperative>s in determinism errors.
	* dzn/vm/run.scm (mark-determinism-error): Look for <on> instead fo
	<initial-compound>.
	* test/all/determinism0/baseline/simulate/determinism0,
	test/all/determinism0/baseline/simulate/determinism0.stderr,
	test/all/determinism1/baseline/simulate/determinism1,
	test/all/determinism1/baseline/simulate/determinism1.stderr,
	test/all/determinism_async/baseline/simulate/determinism_async,
	test/all/determinism_async/baseline/simulate/determinism_async.stderr:
	Update baseline.

2021-08-30  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Fix action-equal? with runtime:instance in zip.
	* dzn/simulate.scm (zip)[action-equal?]: Use runtime port-instance
	instead of port-name.

	trace: Filter out non-error messages in JSON.
	* dzn/trace.scm (trace:steps->json): When there is no "error:"
	message (e.g., "info: end-of-trail ..."), ignore all messages.

	trace: Accept and complete last dangling split-arrow.
	* dzn/trace.scm (merge-communications): Synthesize second half of
	dangling split-arrow.

	report: For synthesized return use location of matching action.
	* dzn/vm/report.scm (complete-split-arrows-pcs)[action-matches?]: New
	inner define.  Use it to set location of synthesized <trigger-return>.

2021-08-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Synthesize event for error messages in --format=json.
	* dzn/trace.scm (communication->string): Add #:locations?
	parameter.
	(merge-communications): Set line instead of location
	for message, also set line with location and actual location.
	(lifeline-event->scm): Make message structured: location and text.
	(trace:steps->json): Instead of adding messages to last event, sythesize
	an arrow from sut -> sut and add messages there.
	* dzn/trace.scm (location-string->scm-location): Split-off from...
	(lifeline-activity->scm): ...here.
	* dzn/trace.scm (lifeline-event->scm): Use it to produce structured
	location in structured message.

2021-08-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: livelock_synchronous2: Update baseline.
	* test/all/livelock_synchronous2/baseline/simulate/livelock_synchronous2,
	test/all/livelock_synchronous2/baseline/simulate/livelock_synchronous2.stderr: Update.

	trace: Split-off library.
	* dzn/commands/trace.scm (trace:format-trace, ...): Split-off library
	to...
	* dzn/trace.scm: ...this new file.
	* dzn/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/commands/simulate.scm,
	dzn/vm/report.scm,
	test/dzn/dzn.scm: Update module import.

	trace: Remove command-line:get from library.
	* dzn/commands/trace.scm (communication->string): Always use location if
	available.
	(step:steps->diagram): Add #:locations? parameter.
	(communication->code): Likewise.
	(step->code): Likewise, and pass it.
	(main): Pass it.

	trace: Drop --json support for --format=sexp.
	* dzn/commands/trace.scm (trace:format-trace): For format "sexp", just
	return the sexp.

	trace: Remove seqdiag support.
	* dzn/commands/trace.scm (<seqdiag:step>): Remove type
	(seqdiag:get-model, seqdiag:sequence->trail, seqdiag:step->string,
	json-vector->list, seqdiag:sexp->location, seqdiag:sequence->steps,
	seqdiag:sexp->steps, seqdiag:format-trace, format-trace): Remove
	procedure.
	(main): Call trace:format-trace directly.

	trace: Remove unused procedure.
	* dzn/commands/trace.scm (trace:step->trace:code): Remove.

2021-08-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Remove obsolete export.
	* dzn/parse.scm (exports): Remove preprocess.

2021-08-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	vm: Fix memoization of run-to-completion by distinguishing on root.
	* dzn/vm/run.scm (run-to-completion): Add root-id to key.

2021-08-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Use forgetful memoization in run-to-completion.
	* dzn/vm/run.scm (run-to-completion): Use weak-key-hash-table and
	add gc-buffer for key.

	simulate: Optimize filter-root.
	* dzn/ast.scm (ast:model*): New specialization.
	* dzn/simulate.scm (filter-root): Use it instead of mis-using
	runtime:create-instances.

2021-08-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Add library entry point to allow memoizations in daemon.
	* dzn/simulate.scm (simulate**): New entry point, allowing memoization
	of root, sut, instances and dependents. Split-off from...
	(simulate*): ...this.
	(filter-root): Extracted from simulate*

2021-08-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Fix for setting of queue-size.
	This is a follow-up to commit

	    d6f468f1af2be6778be1197d25f7067220fa0265
	    vm: Support queue-size.

	* dzn/commands/simulate.scm: Use string->number on --queue-size input.

2021-08-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Synthesize arrow for empty component-acceptance compliance.
	* dzn/vm/goops.scm (<synth-trigger>): New type.
	* dzn/vm/report.scm (complete-split-arrows-pcs): Use it to create
	a complement split-arrow for compliance error where component-acceptance
	is unset.
	* dzn/vm/report.scm (pc-arrow?)[synth-trigger]: New specialization.
	(pc->arrow)[synth-trigger]: Likewise.
	* dzn/commands/trace.scm (merge-communications): Avoid using
	inevitable,optional event.

	test: Add illegal_pessimism_external.
	* test/all/illegal_pessimism_external/baseline/simulate/illegal_pessimism_external,
	test/all/illegal_pessimism_external/baseline/simulate/illegal_pessimism_external.stderr,
	test/all/illegal_pessimism_external/baseline/verify/illegal_pessimism_external,
	test/all/illegal_pessimism_external/baseline/verify/illegal_pessimism_external.stderr,
	test/all/illegal_pessimism_external/illegal_pessimism_external.dzn,
	test/all/illegal_pessimism_external/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	simulate: Stop when an error trace is found.
	* dzn/simulate.scm (run-trail): Stop and end-report when there is an
	error trace.

	explore: Ignore external queue in state equality for --format=json.
	* dzn/vm/util.scm (rtc-program-counter-equal-state-diagram): New method.
	* dzn/explore.scm (state-diagram->json): Use it instead of pc->string
	equality.

	explore: Display tau transitions with an empty label.
	* dzn/explore.scm (state-diagram->dot): Use "" instead of "tau".
	(state-diagram->json): Likewise.

	explore: Have DOT remove duplicate transitions for --format=dot.
	* dzn/explore.scm (state-diagram->dot): Add strict.

	explore: Hide external queue in state labels.
	* dzn/vm/util.scm (pc->string-state-diagram): New method.
	* dzn/explore.scm (state-diagram->dot): Use it instead of pc->string.

	explore: Fix states without a named label in --format=dot.
	* dzn/explore.scm (state-diagram->dot): Add missing string-append.

	trace: Gracefully handle missing split arrow complement.
	* dzn/commands/trace.scm (merge-communications): When split-arrow steps
	do not match, insert an error and truncate the trace.

2021-07-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Optimise livelock check.
	* dzn/ast.scm (ast:equal?)[pair]: New specialization.
	* dzn/vm/util.scm (async-ports): Outline from...
	(pc->string): ...here.
	(rtc-program-counter-equal): New method.
	(pc:eq?): Rename to...
	(pc-equal?): Use it instead of pc->string equality.
	(trace-head:eq?): Update caller.
	* dzn/vm/run.scm (livelock?): Likewise.

2021-08-24  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Optimise simulate* performance.
	* dzn/simulate.scm (simulate*): filter-root to do less work.

	normalize: Optimise purge-data and annotate-otherwise.
	* dzn/normalize.scm (purge-data): Reduce amount of work by
	short-circuiting match.
	* dzn/vm/normalize.scm (annotate-otherwise): Reduce amount of work by
	short-circuiting match.

	vm: Refactor run-to-completion.
	* dzn/vm/run.scm (run-to-completion): Pull (%exploring?) condition up.

2021-08-23  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add external_blocking_livelock (#33).
	This demonstrates bug #33
	    https://gitlab.com/dezyne/dezyne-issues/-/issues/33

	* test/all/external_blocking_livelock/external_blocking_livelock.dzn,
	test/all/external_blocking_livelock/baseline/verify/external_blocking_livelock,
	test/all/external_blocking_livelock/baseline/verify/external_blocking_livelock.stderr:
	New files.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	(XFAIL_TESTS): Likewise.

2021-08-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Compute provide port traces only once.
	* dzn/simulate.scm (pc->provides-traces,
	provides-instance-traces-alist): Split-out from...
	(check-provides-compliance): ...here.  Add parameter port-traces-alist.
	(check-provides-compliance*): Use them to pre-calculate
	port-traces-alist and pass them.
	(check-deadlock): Likewise.

2021-08-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Fix provides port traces calculation and performance.
	This is a follow-up to
	    317358036f331297d0fc06dfa213a1c02507a7e0
	    simulate: Support silent events on provides port.

	This fixes very bad performance for some models that use async.

	Reported by Joran Jessurun <joran.jessurun@ajmail.com>.

	* dzn/simulate.scm (check-provides-compliance)[pc->provides-traces]:
	Reset #:async and #:external in PC before creating LTS.

2021-08-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	guix: dezyne: Update to 2.13.1.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.13.1.

2021-07-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'NEWS'.
	* NEWS (Changes in 2.13.1 since 2.13.0): New section.

2021-07-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	vm/util.scm: Display eligible context in interactive simulation.
	* dzn/vm/util.scm (show-eligible): Add parameter, display action for
	eligible choices.

	test: Add injected_dangling.
	* test/all/injected_dangling/META,
	test/all/injected_dangling/injected_dangling.dzn,
	test/all/injected_dangling/trace: New files.
	test/all/local.mk (REGRESSION_TESTS): Add test.

2021-07-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Support dangling injected port.
	* dzn/vm/runtime.scm
	(runtime:create-instances): For dangling injected port instances, create boundary
	counterpart.
	 (runtime:other-port-): Rename to...
	(runtime:other-port-unmemoized): ...this.  Find counterpart of dangling
	injected port.
	(runtime:rank!)[runtime:component-model]: Skip injected ports.

	vm: Refactor runtime:system* and rename to runtime:create-instances.
	* dzn/vm/runtime.scm (runtime:system*): Rename to
	runtime:create-instances.
	(runtime:create-instances): Refactor.

	test: hello_async: Remove trace and handwritten main.
	* test/all/hello_async/main.cc,
	test/all/hello_async/trace: Remove files.

	test: Add async_provides.
	* test/all/async_provides/META,
	test/all/async_provides/async_provides.dzn,
	test/all/async_provides/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-07-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Run compliance check on deadlock trace.
	Calling check-provides-compliance fixes the split-arrows output by
	zipping the provides port trace.

	* dzn/simulate.scm (check-deadlock): Unless simulating an interface,
	run check-provides-compliance.

2021-07-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Run compliance check after flushing async.
	Call check-provides-compliance* updates the provides port and fixes the
	split-arrows format by zipping the provides port trace.

	* dzn/simulate.scm (run-sut): After flush-async, call
	check-provides-compliance* to update provides ports.

2021-07-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Do not run deadlock check on an illegal trace.
	* dzn/simulate.scm (end-report): Skip exception for illegal trace to run
	deadlock check.
	* test/all/deadlock_implicit/baseline/simulate/deadlock_implicit,
	test/all/deadlock_implicit/baseline/simulate/deadlock_implicit.stderr,
	test/all/illegal_garbage/baseline/simulate/illegal_garbage: Update baseline.

	simulate: Add first observable async action to eligible labels.
	* dzn/simulate.scm (eligible-labels): Also generate async traces and add
	first observable actions.

2021-07-25  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	wfc: Add type check for ports of a binding.
	* dzn/wfc.scm (binding-type): New method.
	(wfc)[system]: Use it.
	* test/all/wf_bindingSameType/baseline/verify/wf_bindingSameType.stderr,
	* test/all/wf_bindingSameType/wf_bindingSameType.dzn: New files.
	* test/all/local.mk (PARSER_TESTS): Add test.

2021-07-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support --format=diagram.
	* dzn/commands/simulate.scm (parse-opts): Add -i,--internal.  Add
	"diagram" to format option.
	(main): Pass #:internal? to...
	* dzn/simulate.scm (simulate): ...here, using new #:internal?
	parameter.  Pass it to...
	(simulate*): Likewise to...
	(run-trail): ...here.  Likewise to...
	(end-report): ...here, and to...
	* dzn/vm/report.scm (report): ...here.  Use it for "diagram" format;
	When format is "diagram", show trace as ASCCI diagram.
	* doc/dezyne.texi (Invoking dzn simulate): Document new options.

2021-08-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Avoid displaying duplicate choice labels.
	* dzn/ast.scm (ast:equal?)[action]: New specialization.
	* dzn/vm/run.scm (run-to-completion-unmemoized): Use it to avoid
	creating duplicate labels.

2021-07-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Use GNU Readline and interactive use fixups.
	* dzn/vm/run.scm (interactive?): Remove check for %next-input.
	(%next-input): Move to ...
	* dzn/vm/util.scm (%next-input): ...here.
	(read-input): Remove input prompt.  Cater for string-based input from
	readline.
	(show-eligible): Reset it in new function, setting-up readline
	completion and prompt.
	* dzn/simulate.scm (run-trail): Use it instead of printing eligible
	prompt.
	* dzn/vm/run.scm (run-to-completion-unmemoized): Likewise.
	* dzn/simulate.scm (simulate): Close input port when a trail was given,
	i.e., when not running in interactive mode.

2021-07-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Add guile-readline dependency.
	* configure.ac: Check for guile-readline.
	* README (Requirements): Mention it.
	* doc/dezyne.texi (Requirements): Likewise.

	guix: dezyne: Add guile-readline.
	* guix/gnu/packages/dezyne.scm (dezyne)[propagated-inputs]: Add
	guile-readline.
	[arguments]: Add guile-readline to paths in wrap-binaries stage.

2021-07-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Remove duplicate traces introduced by provides silent events.
	This is a follow-up to commit
	    317358036f331297d0fc06dfa213a1c02507a7e0
	    simulate: Support silent events on provides port.

	* dzn/simulate.scm (rtc-lts->traces): Do not return duplicate traces.

2021-07-19  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: collateral_blocking_shell2: Avoid using pump's destructor.
	The pump dtor in c++ hides the missing release of the
	collateral_blocked.  This reproduces the #23 as reported by Perry Wesel
	<perry.van.wesel@thermofisher.com>

	* test/all/collateral_blocking_shell2/main.cc (main): Wait for futures
	instead of falling into the pump's destructor.

2021-07-23  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++ runtime: collateral_release after unblock.
	* runtime/c++/dzn/pump.hh (collateral_block_lambda): Remove member.
	(unblocked): New member.
	* runtime/c++/pump.cc (collateral_block): Use member function instead of
	lambda.
	(pump::pump): Initialize it.
	(pump::release): Set it.
	(pump::create_context): Use it for collateral-release.
	(pump::collateral_release): Unset it.
	(pump::remove_finished_coroutines): Rename from finish.
	* runtime/cs/dzn/pump.cs: (unblocked): New member.
	(pump::release): Set it.
	(pump::create_context): Use it for collateral-release.
	(pump::collateral_release): Unset it.
	(pump::remove_finished_coroutines): Rename from finish.

	c++ context: Disable some debugging.
	* runtime/c++/dzn/context.hh (context, call, do_block, do_release,
	do_finish): Comment-out debugging.

	test: collateral_blocking_shell: Sleep less.
	* test/all/collateral_blocking_shell/main.cc (main): Reduce sleep by
	factor 10 to 200ms.

2021-07-22  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: wf_functionReturnValue: Add missing cases.
	* test/all/wf_functionReturnValue/wf_functionReturnValue.dzn: Also test
	empty function, non-returning else and several more variants with
	IF-statements.

	wfc: Report missing return for non-returning else and empty body.
	* dzn/wfc.scm (missing-return): Rewrite.
	* test/all/wf_functionReturnValue/baseline/verify/wf_functionReturnValue.stderr:
	Update baseline.

2021-07-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	peg: Parse body of function as regular compound.
	* dzn/parse/peg.scm (peg:parse): Parse body of function as regular compound.
	* dzn/parse/ast.scm (parse-tree->ast): Remove function without body.

	test: Add end_of_trail_interface_action.
	* test/all/end_of_trail_interface_action/META,
	test/all/end_of_trail_interface_action/baseline/simulate/end_of_trail_interface_action,
	test/all/end_of_trail_interface_action/baseline/simulate/end_of_trail_interface_action.stderr,
	test/all/end_of_trail_interface_action/end_of_trail_interface_action.dzn,
	test/all/end_of_trail_interface_action/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-07-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add end_of_trail_interface.
	* test/all/hello_interface/META: Fix comment.
	* test/all/end_of_trail_interface/META,
	test/all/end_of_trail_interface/baseline/simulate/end_of_trail_interface,
	test/all/end_of_trail_interface/baseline/simulate/end_of_trail_interface.stderr,
	test/all/end_of_trail_interface/end_of_trail_interface.dzn,
	test/all/end_of_trail_interface/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	simulate: Remove choice-point events from some traces.
	* dzn/vm/run.scm (run-to-completion-unmemoized): Reset statement in
	choice-point pc.
	* dzn/simulate.scm (pc->modeling-lts): Set %exploring?.

	simulate: Remove "sut." prefix from choice labels for interface.
	* dzn/vm/run.scm (run-to-completion-unmemoized)[choose-postponed-match]:
	Do not prepend "sut." when simulating an interface.
	* dzn/vm/report.scm (final-error-messages): Likewise.
	(end-of-trail-labels): Likewise.

	simulate: Skip deadlock check if choice labels available.
	* dzn/simulate.scm (end-report): Only run deadlock check for traces
	without errors or illegal traces.

	trace: Support interface traces for --format=diagram.
	* dzn/commands/trace.scm (step:steps->diagram)[port-instance->name): Use
	"client" if path is empty.

2021-07-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	report: Fix injected-related crash in split-arrows format.
	* dzn/vm/report.scm (pc-arrow?)[runtime-port trigger-return]: Avoid
	fetching triggers from synthesized ast which has no <on>.
	(complete-split-arrows-pcs): Do not synthesize an extra <trigger-return>
	if next already is a port.

2021-07-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add function_early_return for implicit compounds.
	* test/all/function_early_return/META,
	test/all/function_early_return/function_early_return.dzn: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-07-22  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	normalize: Do not add return to valued functions.
	This is a follow-up to commit
	    50eaf2454ce1404ab8ce208a26ddac0c97ea9005.
	    makreel: Fix early function return.

	* dzn/normalize.scm (add-function-return): Skip non-void function.

2021-07-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Pop solitary variable.
	* dzn/vm/step.scm (step)[variable]: If variable is not in a compound,
	pop it before continuing.

	vm: Recursively pop function nested scope variables upon early return.
	* dzn/vm/step.scm (function-return): New method.
	(continuation)[return]: Use it.

2021-07-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Avoid crash in runtime:other-port for injected.
	* dzn/vm/runtime.scm (runtime:other-port-): Return #f instead of calling
	.container on #f.
	* dzn/vm/report.scm (complete-split-arrows-pcs): Cater for
	runtime:other-port returning #f.

2021-07-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: shell: Add ranking.
	* dzn/templates/c++/model@shell-system: Add missing system-rank template.

2021-07-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add async_ranking_disorder.
	Reported by Joran Jessurun <joran.jessurun@ajmail.com>.

	* test/all/async_ranking_disorder/async_ranking_disorder.dzn,
	test/all/async_ranking_disorder/trace: New files
	* test/all/local.mk (REGRESSION_TESTS, XFAIL_TESTS): Add test.

2021-07-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Fix location of <q-out>.
	* dzn/vm/report.scm (complete-split-arrows-pcs): Refactor recursion to obtain
	on location to add to q-out.

2021-07-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	makreel: Avoid forking random global state for process numbers.
	* dzn/code/makreel.scm (%id-alist, %next-alist): New parameters.
	(root->): Set them.
	(mcrl2:process-identifier): Use them instead of global values.  Remove
	redundant model from ast key.

2021-08-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	cs: Implement collateral_blocking_shell* mains in cs.

2021-07-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "test: Add collateral_blocking_shell3."
	Joran's bug report was captured in async_ranking_disorder.

	This reverts commit 666bfcf908ca28d58342cd1e9154fdf4ba64c3f4.

2021-07-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "test: collateral_blocking_shell3: Support cs."
	Joran's bug report was captured in async_ranking_disorder.

	This reverts commit 65a6df387cf5aa4b729d44f8c3d8c7c59f108960.

2021-07-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Post-release update.
	* doc/announce/ANNOUNCE-2.13.0: Update hashes.

	guix: dezyne: Update to 2.13.0.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.13.0.

2021-07-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'NEWS' and 'ANNOUNCE-2.13.0'.
	* NEWS (Noteworthy bug fixes): Mention fixing of #23.
	* doc/announce/ANNOUNCE-2.13.0: Likewise.

2021-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: collateral_blocking_shell3: Support cs.
	* test/all/collateral_blocking_shell3/main.cs: New file.
	* test/all/collateral_blocking_shell3/META: Remove cs from skip.

	test: collateral_blocking_shell2: Support cs.
	* test/all/collateral_blocking_shell2/main.cs: New file.
	* test/all/collateral_blocking_shell2/META: Remove cs from skip.

2021-07-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	cs: Event on blocked port blocks using collateral-block.
	* runtime/cs/dzn/pump.cs (blocked_p): New method.
	* runtime/cs/dzn/locator.cs (try_get): New method.
	* runtime/cs/dzn/pump.cs (port_blocked_p, collateral_block):
	Use it in New procedures.
	* runtime/cs/dzn/runtime.cs (call_in, call_out): Use it
	collateral_block when port is blocked.
	* dzn/templates/cs/event-slot@trigger,
	dzn/templates/cs/main-port-connect-out@trigger,
	dzn/templates/cs/valued-event-slot@trigger: Pass port instead of meta.
	* test/all/async_calling_context/cs/main.cs (connect_ports): Update accordingly.
	* test/all/async_shell/cs/main.cs: Likewise.
	* test/all/blocking_shell/cs/main.cs: Likewise.
	* test/all/shell_injected/cs/main.cs: Likewise.

2021-07-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add collateral_blocking_shell3.
	Attempt to reproduce problem reported by logocp.

	* test/all/collateral_blocking_shell3/META,
	test/all/collateral_blocking_shell3/collateral_blocking_shell3.dzn,
	test/all/collateral_blocking_shell3/main.cc,
	test/all/collateral_blocking_shell3/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-07-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add collateral_blocking_shell2.
	Test next event on blocked port.

	* test/all/collateral_blocking_shell2/META,
	test/all/collateral_blocking_shell2/collateral_blocking_shell2.dzn,
	test/all/collateral_blocking_shell2/main.cc,
	test/all/collateral_blocking_shell2/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-07-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: Event on blocked port blocks using collateral-block.
	* dzn/templates/c++/event-slot@trigger,
	dzn/templates/c++/main-port-connect-out@trigger: Pass port instead of meta.
	* runtime/c++/pump.cc (pump::blocked_p): New member.
	(port_blocked_p): New helper function.
	* runtime/c++/dzn/runtime.hh (call_helper): Use it to call
	collateral_block when port is blocked.
	* test/all/async_calling_context/c++/main.cc (connect_ports): Update
	accordingly.
	* test/all/async_shell/c++/main.cc (connect_ports): Likewise.
	* test/all/blocking_shell/c++/main.cc (connect_ports): Update
	accordingly.
	* test/all/hello_namespace_foreign/c++/library_foreign.cc (foreign::foreign):
	Likewise.
	* test/all/shell_injected/c++/main.cc (connect_ports): Likewise.

2021-07-19  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: collateral_blocking_shell: Support cs.
	* test/all/collateral_blocking_shell/main.cs: New file.
	* test/all/collateral_blocking_shell/META: Remove cs from skip.

2021-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Remove early collateral_release.
	* runtime/cs/dzn/pump.cs (create_context): Do not collateral_release
	upon release.

2021-07-19  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	cs: Make thread safe shells IDisposable.
	* dzn/templates/cs/model@shell-system: Make IDisposable.
	(pump): Use public access specifier.
	(Dispose): New method.

2021-06-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add collateral_blocking_shell.
	* test/all/collateral_blocking_shell/collateral_blocking_shell.dzn,
	test/all/collateral_blocking_shell/META,
	test/all/collateral_blocking_shell/main.cc,
	test/all/collateral_blocking_shell/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-07-01  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: Remove early collateral_release.
	* runtime/c++/pump.cc (create_context): Do not collateral_release
	upon release.
	* runtime/c++/pump.cc (collateral_block): Add debug printing.

2021-07-19  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	trace: Cater for absolute file-names on Windows.
	* dzn/commands/trace.scm (trace-parse): Allow colon in file-name.
	* dzn/parse/util.scm (string->location): Likewise.

2021-07-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'NEWS' and 'ANNOUNCE-2.13.0'.
	* NEWS (Noteworthy bug fixes): Mention fixing of #27.
	* doc/announce/ANNOUNCE-2.13.0: Likewise.

2021-07-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: function_reply_early_return.
	Fixes: <https://gitlab.com/dezyne/dezyne-issues/-/issues/27>.

	* test/all/function_reply_early_return/function_reply_early_return.dzn,
	test/all/function_reply_early_return/META:
	New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-07-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Fix early function return.
	* dzn/vm/normalize.scm (add-function-return): Move to...
	* dzn/normalize.scm (add-function-return): ...here.
	* dzn/code/makreel.scm (makreel:add-function-return): Remove.
	(makreel:om): Use add-function-return instead.

	verify: Also show normalized ast for -dd.
	* dzn/commands/verify.scm (main): Pretty print ast for debugity > 1.

2021-07-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.13.0.rc1.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.13.0.rc1.

2021-07-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'ANNOUNCE-2.13.0'.
	* doc/announce/ANNOUNCE-2.13.0: Update from NEWS files.

2021-07-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'NEWS'.
	* NEWS (Verification, Code generation): Mention new enum-literal
	representation in the trace format.
	(Noteworthy bug fixes): Mention async multiple-definition fix.

2021-06-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Install NEWS.
	* guix/gnu/packages/dezyne.scm (dezyne)[arguments]: Add
	'install-readmes' phase.

2021-07-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update from pack.
	* guix/gnu/packages/dezyne.scm (dezyne)[arguments]: Remove DATADIR, LANG
	settings.

2021-07-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Avoid multiple definitions of async using parameters.
	Reported by Joran Jessurun <joran.jessurun@gmail.com> via IRC.

	* test/all/async_types/async_types.dzn (async_types_interference): New
	component; copy of
	(async_types).
	* test/all/async_types/interference.dzn: New file.
	* dzn/parse/ast.scm (annotate-ast): Compare formals using every
	ast:equal?  Fixes adding multiple definitions.

2021-07-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Async in runtime.
	This fixes async_types.

	* runtime/cs/dzn/meta.cs (dzn.async): New generic.
	* dzn/code/cs.scm (cs:formals, cs:async-signature-name,
	cs:async-interface*): New methods.
	(cs:arguments)[action]: Add exception for async clr: do not add calling
	context.
	(cs:model): Filter-out ast:async? interfaces.
	* dzn/templates/cs.scm (async-signature-name,
	async-port-declare-delegate): New templates.
	* dzn/templates/cs/async-port-declare-delegate@interface: New template.
	* dzn/templates/cs/async-port-declare@port,
	dzn/templates/cs/async-port-init@port: Update to use delegate.
	* dzn/templates/cs/async-clr-event-slot@trigger: Remove formals.

2021-07-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	.dir-locals: Set java indent.
	* .dir-locals.el (java-mode): New entry.

	ast: Recognize async interfaces with parameters.
	* dzn/ast.scm (ast:async?): Compare dzn.async prefix instead of full name.

2021-07-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Use ":" as separator in enum literals.
	* dzn/lts.scm (cleanup-label): Use ":" instead of "_" as separator in
	enum literals.
	* dzn/commands/trace.scm (trace-parse, step->communication,
	trace:steps->json): Likewise.
	* dzn/templates/c++/enum-field-to-string@enum-field: Likewise.
	* dzn/templates/c++/string-to-enum@enum-field: Likewise.
	* dzn/vm/goops.scm (->sexp): Likewise.
	* dzn/vm/report.scm (label->string): Likewise.
	* dzn/vm/util.scm (string->value): Likewise.
	(sexp->value): Likewise.
	* runtime/cs/dzn/container.cs (string_to_value, to_string): Likewise.
	* runtime/cs/dzn/runtime.cs (call_in): Likewise.
	* dzn/verify/pipeline.scm (enum-literal->event): Likewise.
	* test/all/Camera/trace,
	test/all/Camera/trace.1,
	test/all/Camera/trace.2,
	test/all/Camera/trace.3,
	test/all/blocking_shell/trace.1,
	test/all/blocking_system4/BlockedSystem4.trace,
	test/all/data_full/trace,
	test/all/illegal_async_silent/baseline/simulate/illegal_async_silent,
	test/all/illegal_async_silent/baseline/verify/illegal_async_silent
	test/all/illegal_async_silent/trace,
	test/all/semantics/semantics.org,
	test/all/system_reply_enum/trace: Update trace.

2021-07-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts: Remove redundant states, transitions from structured output.
	This info is unused and moreover, it is present in the LTS.

	* dzn/commands/lts.scm (main): Remove redundant states and transitions
	info from structured output.
	* dzn/verify/pipeline.scm (result-split): Split on first colon only.
	(get-trace): Update accordingly.
	(get-info): Remove.
	(report-fail): Remove info from parameter list.
	(report-ok): Likewise.
	(report): Likweise.
	(mcrl2:verify-interface-asserts): Do not get-info, do not pass it to report.
	(mcrl2:verify-component-asserts): Likewise.

2021-07-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Deduplication of external choice points.
	* dzn/vm/run.scm (run-to-completion-unmemoized)[choice-labels]: New
	procedure.  Use it to avoid defining a choice point when labels are
	identical.

	simulate: Fix crashes in split-arrows report.
	* dzn/vm/report.scm (complete-split-arrows-pcs): Fix parent of q-in,
	use statement instead of next-statement for return location.

2021-07-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	vm: Memoize modeling-names.
	This speeds-up running the LegoBallSorter's "Handle" by a factor of 2.

	* dzn/vm/util.scm (modeling-names): Rename to...
	(modeling-names-unmemoized): ...this.
	(modeling-names): New memoizing procedure.

2021-07-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Fix q-in logging.
	* runtime/scheme/dzn/runtime.scm (dzn:trace-qin): Use component path on
	both sides.

	test: step_state: Skip for scheme.
	* test/all/step_state/META: Add scheme to skip.

	test: hello_state_out: Support for scheme.
	* dzn/code/scheme.scm (wrap-lonely-variable): New procedure.
	(scheme:om): Use it in new procedure.
	(ast->): Use it instead of code:om.

2021-07-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.13.0.rc0.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.13.0.rc0.

2021-06-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Add ANNOUNCE-2.13.0.
	* doc/announce/ANNOUNCE-2.13.0: New file.

2021-04-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'NEWS'.
	* NEWS (Changes in 2.13.0 since 2.12.0): New section.

2021-04-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'ROADMAP'.
	* ROADMAP (Release 2.13): Further specify 2.13 release.  Move some items to...
	(Release 2.14): ...here, and done items...
	(DONE): ...here.

2021-07-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support injected in split-arrows format.
	* dzn/vm/report.scm (complete-split-arrows-pcs): Sythesize return for
	injected port too.
	(pc->arrow)[trigger-return]: Handle sythesized injected return.  Add
	arrow to injected return.

2021-07-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Synthesize <q-in> for out actions only.
	* dzn/vm/report.scm (complete-split-arrows-pcs): Guard <q-in>
	synthesizing for ast:out? actions.

2021-06-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Handle split-arrows mismatch gracefully.
	* dzn/commands/trace.scm (merge-communications): Check if split-arrows
	steps match.  If they don't, stop and add an error message.
	(communication-complete?): New predicate.
	(communication->string, communication->code): Use it and refactor error
	case.

	c++-exception-wrappers: Oops, avoid crash without --output option.
	* dzn/code/c++-exception-wrappers.scm (dump-name): Remove.
	(ast->): Update to use code-util:file-name.

	c++-exception-wrappers: Update example to support zero exceptions.
	* runtime/examples/exception_context.hh (operator()): Check exception
	queue size before referencing first element.

2021-06-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Avoid field access on a boolean.
	Fixes: <https://gitlab.com/dezyne/dezyne-issues/-/issues/19>.

	* dzn/wfc.scm (wfc)[field-test]: Only look-up fields for a boolean
	type.  Allows proper type-mismatch reporting.
	* test/all/parse_type_mismatch/parse_type_mismatch.dzn: Add test case.
	* test/all/parse_type_mismatch/baseline/verify/parse_type_mismatch.stderr:
	Update baseline.

2021-06-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Avoid lookup of arguments of undefined function.
	Fixes: <https://gitlab.com/dezyne/dezyne-issues/-/issues/18>.

	* dzn/wfc.scm (wfc)[arguments]: Skip argument check when function is
	undefined.
	* test/all/undefined/interface/function/function.dzn,
	* test/all/undefined/interface/function/baseline/verify/function.stderr:
	New files.
	* test/all/local.mk (PARSER_TESTS): Add test.

2020-09-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add ASCII diagrams of simulator semantics.
	* test/bin/semantics.sh: New script.
	* Makefile.am (EXTRA_DIST): Add it
	* test/all/semantics/run,
	test/all/semantics/semantics.org: New files.

2021-06-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: systems_hello: Add synchronous out event.
	* test/all/system_hello/system_hello.dzn (ihello)[world]: New out event.
	(hello): Use it.
	* test/all/system_hello/trace: Update accordingly.

2021-06-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: For systems, run deadlock check on ports only.
	* test/all/blocking_system/BlockedSystem1.trace: Use trace to
	non-deadlock state.
	* test/all/state_deadlock/baseline/simulate/state_deadlock: Update
	accordingly.
	* test/all/local.mk (XFAIL_TESTS): Remove it.

2021-06-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Synthesize provides-out actions for split-arrows.
	* dzn/vm/report.scm (complete-split-arrows-pcs): For the boundary
	provides port, synthesize actions that were created by a <q-trigger>.

2021-06-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Cleanup run-silent.
	* dzn/vm/run.scm (run-silent): Update state of original pc instead of
	re-inserting original-PCs fields.

	test: blocking_silent_external: Rename from hello_blocked_external.
	* test/all/hello_blocked_external: Rename to...
	* test/all/blocking_silent_external: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: illegal_silent_external: Rename from illegal_external.
	* test/all/illegal_external: Rename to...
	* test/all/illegal_silent_external: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2021-06-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Re-implement refusals using LTS stability.
	* dzn/simulate.scm (pc->modeling-lts): New method.
	(modeling-lts-stable?, modeling-lts->observables): New procedures.
	(end-report): Use them to rewrite refusals check.
	* test/all/local.mk (XFAIL_TESTS): Remove
	compliance_failures_inevitable2.

2021-06-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Run compliance check on prefix of blocked trace.
	When a blocking trace is completed, a full compliance check is done.
	However, the initial blocking trigger may already contain a compliance
	error.

	* test/all/compliance_blocking_out/baseline/simulate/compliance_blocking_out.stderr,
	* test/all/compliance_blocking_out/baseline/simulate/compliance_blocking_out:
	Update baseline
	* dzn/simulate.scm (check-provides-compliance): Use initial PC when
	blocked.  For a blocked trace, match prefix only.
	(check-provides-compliance*): Do not skip blocked trace set.

2021-06-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Oops, zip provides port trace only.
	* dzn/simulate.scm (check-provides-compliance): Only zip provides port
	trace.

2021-06-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Fix for illegal_async_silent.
	* dzn/vm/run.scm (run-silent): Oops, do not reset trigger.
	* test/all/illegal_async_silent: Update baseline.
	* test/all/local.mk (XFAIL_TESTS): Remove test.
	* dzn/vm/run.scm (run-silent):

2021-06-23  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Refactor determinism check.
	* dzn/vm/run.scm (non-deterministic?): New procedure.  Split out from...
	(extend-trace): ...here.
	(run-to-completion-unmemoized): Use it.

2021-06-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add end_of_trail_action2.
	* test/all/end_of_trail_action2/META,
	test/all/end_of_trail_action2/baseline/simulate/end_of_trail_action2,
	test/all/end_of_trail_action2/baseline/simulate/end_of_trail_action2.stderr,
	test/all/end_of_trail_action2/end_of_trail_action2.dzn,
	test/all/end_of_trail_action2/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	simulate: Refactor run-to-completion-unmemoized.
	* dzn/vm/run.scm (run-to-completion-unmemoized)[loop]: New inner
	define.  Move other procedures out of loop.

	simulate: Synchronize trace on observable choice.
	* dzn/vm/run.scm (mark-determinism-error): Remove procedure.
	(run-to-completion-unmemoized): Remove caller.
	(extend-trace): Instead of extending the trace with only one step,
	introduce a loop.  For a declarative statement, keep extending the trace
	until all traces reach an imperative statement.  Check for
	non-determinism.  For an imperative statement, keep extending the trace
	until there is an observable statement.

	test: Add end_of_trail_action.
	* test/all/end_of_trail_action/META,
	test/all/end_of_trail_action/baseline/simulate/end_of_trail_action,
	test/all/end_of_trail_action/baseline/simulate/end_of_trail_action.stderr,
	test/all/end_of_trail_action/end_of_trail_action.dzn,
	test/all/end_of_trail_action/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	simulate: For action choice, show action.
	* dzn/vm/report.scm (pc->event)[postponed-match]: New specialization.
	* dzn/vm/run.scm (run-to-completion-unmemoized)[reply-label]: Rename
	to...
	[choice-label]: ...this and also support action choices.
	[choose-postponed-match, mark-end-of-trail]: Use it.

2021-06-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Fix crash in report.
	This fixes

	    ./pre-inst-env dzn simulate -l --state -I ../../ide/wip/dzn ../../ide/wip/dzn/all.dzn

	Reported by Rob Wieringa <rob.wieringa@verum.com>.

	* dzn/vm/report.scm (complete-split-arrows-pcs): Guard <q-in> creation
	with existance of next.

2021-06-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Remove <error>s from input trail.
	* dzn/vm/util.scm (string->trail): Remove events that start with "<".
	(string->trail+model): New procedure, factored-out from...
	* dzn/simulate.scm (simulate): ...here.  Use it.

	test: failures_second_inevitable: Rename from second_inevitable.
	* test/all/second_inevitable/second_inevitable.dzn: Rename to...
	* test/all/failures_second_inevitable/failures_second_inevitable.dzn: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: failures_nondet_optional: Renme from nondet_optional.
	* test/all/nondet_optional/nondet_optional.dzn: Rename to...
	* test/all/failures_nondet_optional/failures_nondet_optional.dzn: ..this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: failures_nondet_inevitable: Rename from nondet_inevitable.
	* test/all/nondet_inevitable/nondet_inevitable.dzn: Rename to...
	* test/all/failures_nondet_inevitable/failures_nondet_inevitable.dzn: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2021-06-22  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add failures_inevitable.
	* test/all/failures_inevitable/failures_inevitable.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add compliance_failures_inevitable2.
	* test/all/compliance_failures_inevitable2/baseline/simulate/compliance_failures_inevitable2.stderr,
	test/all/compliance_failures_inevitable2/baseline/simulate/compliance_failures_inevitable2,
	test/all/compliance_failures_inevitable2/baseline/verify/compliance_failures_inevitable2.stderr,
	test/all/compliance_failures_inevitable2/baseline/verify/compliance_failures_inevitable2,
	test/all/compliance_failures_inevitable2/compliance_failures_inevitable2.dzn,
	test/all/compliance_failures_inevitable2/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.
	(XFAIL_TESTS): Likewise.

2021-06-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Support compliance_failures_choice.
	Port traces were extended beyond one run to completion; such traces
	never match the component trace which stops after communicating with the
	provides port.

	* dzn/simulate.scm (rtc-lts->traces): Add #:continue-on-silent?
	parameter.
	* dzn/vm/report.scm (debug:lts->alist): New procedure.
	* test/all/local.mk (XFAIL_TESTS): Remove compliance_failures_choice.
	* test/all/compliance_failures_choice: Update baseline.

2021-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Add missing copyright READMEs.
	* doc/announce/README,
	doc/images/README,
	test/language/README,
	dzn/templates/README,
	doc/semantics/README: New files.

	doc: Update AUTHORS.
	* AUTHORS: Add main contributions and update email addresses.

2021-06-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Update copyright lines.
	Run

	    build-aux/copyright-header.scm

	* README (Legalese): Add copyright year.
	* test/all/*: Update baseline.

2021-06-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build-aux: Add copyright-header.scm.
	* build-aux/copyright-header.scm: New file.

2021-06-18  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: compliance_optional: Canonicalize.
	* test/all/compliance_optional/compliance_optional.dzn: Use canonical
	names.
	* test/all/compliance_optional/baseline/simulate/compliance_optional,
	test/all/compliance_optional/baseline/simulate/compliance_optional.stderr:
	Update accordingly.

	test: nondet_optional: Simplify and canonicalize.
	* test/all/nondet_optional/nondet_optional.dzn (ihello, iworld):
	Simplify and canonicalize.
	(nondet_optional): Update accordingly.

	test: component_modeling_loop: Canonicalize.
	* test/all/component_modeling_loop/component_modeling_loop.dzn (I):
	Rename to...
	(ihello): ...this.  Also rename events.
	(II): Rename to...
	(iworld): ...this.  Also rename events.
	(component_modeling_loop): Update accordingly.
	(i): rename to h.
	(ii): Rename to w.

	test: compliance_single_to_multiple: Simplify.
	* test/all/compliance_single_to_multiple/compliance_single_to_multiple.dzn: Simplify.
	* test/all/compliance_single_to_multiple/baseline/simulate/compliance_single_to_multiple.stderr,
	test/all/compliance_single_to_multiple/baseline/simulate/compliance_single_to_multiple: Update.

2021-06-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_out_two: Remove.
	* test/all/compliance_out_two/META,
	test/all/compliance_out_two/baseline/simulate/compliance_out_two,
	test/all/compliance_out_two/baseline/simulate/compliance_out_two.stderr,
	test/all/compliance_out_two/baseline/verify/compliance_out_two,
	test/all/compliance_out_two/baseline/verify/compliance_out_two.stderr,
	test/all/compliance_out_two/compliance_out_two.dzn,
	test/all/compliance_out_two/trace: Remove.
	* test/all/local.mk (REGRESSION_TESTS): Remove test.

2021-06-18  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add livelock_component.
	* test/all/livelock_component/META,
	test/all/livelock_component/livelock_component.dzn,
	test/all/livelock_component/baseline/simulate/livelock_component,
	test/all/livelock_component/baseline/simulate/livelock_component.stderr,
	test/all/livelock_component/trace: New files.
	* test/all/local.mk (HELLO_TESTS): Add test.

2021-06-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	explore: Export structured actions, state for state-diagram format=json.
	* dzn/explore.scm (state->json-scm): New method.
	(state-diagram->json): Use it to add structured state as "states".
	* dzn/vm/util.scm (state->string): Nitpicks.

	explore: Refactor state-diagram state.
	* dzn/explore.scm (rtc-lts->state-diagram): Pass PC instead of
	FROM-LABEL.
	(state-diagram->dot, state-diagram->json): Update accordingly.

2021-05-31  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add silent_provides.
	* test/all/silent_provides/silent_provides.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-06-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support silent events on provides port.
	* dzn/explore.scm (pc->rtc-lts): Add #:labels parameter.
	* dzn/simulate.scm (check-provides-compliance): Use it to generate
	provides traces.

2021-06-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Refactor trace generation from LTS.
	This prepares for silent provides.

	* dzn/simulate.scm (rtc-lts-node->traces): New procedure, split-out
	from...
	(rtc-lts->traces): ...this.  Refactor.  Add #:prefix-set? parameter.
	(end-report): Update accordingly.   Also factor-out...
	* dzn/vm/report.scm (trace->string-trail): ...this new procedure.

2021-06-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Add labels to interface trace format=json..
	* dzn/commands/trace.scm (trace:steps->json): Handle labels for
	interface trace.

	simulate: Support split-arrows trace for interface.
	* dzn/vm/report.scm (complete-split-arrows-pcs): Complete interface
	trace.
	(report): Remove unused #:header parameter.
	(pc->arrow)[initial-compound, action]: Handle "client" vs "sut" for
	interface trace.
	* dzn/simulate.scm (run-trail): Update caller.
	* dzn/vm/runtime.scm (runtime:instance->path): Use kinds "client" and "interface"
	for interface simulation.
	(runtime:kind): Use paths ("client") and (%sut) for interface
	simulation.
	(runtime:instance->string): Cater for interface trace.
	(runtime:system*)[runtime:port]: New specialization.
	* test/all/hello_interface/hello_interface.dzn (hello_interface)[world]:
	Add event.

	test: livelock_async_cancel: Add trace and simulate baseline.
	* test/all/livelock_async_cancel/baseline/simulate/livelock_async_cancel.stderr,
	test/all/livelock_async_cancel/baseline/simulate/livelock_async_cancel,
	test/all/livelock_async_cancel/trace: New files.

2021-06-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Remove whitespace, none, from report.
	* dzn/vm/report.scm (final-error-messages): Remove whitespace, use `-'
	instead of `none' consistently.
	* test/all/*: Update baseline.

2021-06-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Exit non-zero upon match error.
	* dzn/vm/goops.scm (<match-error>): Inherit from <error> instead of
	<status>.

2021-06-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: verbose to stderr.
	Also, remove obsolete verify result ordering from the regession test.

	* dzn/verify/pipeline.scm (report-ok, report-fail, report-skip): When
	verbose?, print to current-error-port.
	* test/bin/reorder.in: Remove.
	* configure.ac: Do not expand it.
	* test/dzn/dzn.scm (verification-reorder): Remove.
	(run-verify): Do net use it.
	* test/all/*: Update baseline.

2021-06-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Print model: <model-name> on trail.
	This enables loose command-line integration like

	    ./pre-inst-env dzn verify foo.dzn | ./pre-inst-env simulate foo.dzn

	* dzn/verify/pipeline.scm (report-fail): Print "model: <model-name>".
	* test/all/*: Update baselne.

2021-06-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Parse model:<model-name> from input trail.
	* dzn/simulate.scm (simulate): If the input trail starts with
	model-name, use that as model and remove it from input trail.

2021-06-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Show refinement-trace, drop --json support.
	* dzn/verify/pipeline.scm (report-ok): Remove json support.
	(report-skip): Likewise.
	(report-fail): Likewise.  Remove interface-trace parameter.
	(report): Update accordingly.  Remove interface-trace parameter.
	(mcrl2:verify-interface-asserts): Update accordingly.
	(mcrl2:verify-component-asserts): Update accordingly, pass
	refinement-trace instead of component trace.

2021-06-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Skip verify only for mCRL2-non-reproducible tests.
	* test/all/local.mk (NON_REPRODUCIBLE_TESTS): Move into...
	(REGRESSION_TESTS): ...here.
	* test/all/compliance_provides_illegal4/META,
	test/all/compliance_reply_bool/META: New files.
	* test/all/compliance_provides_illegal4/baseline/simulate/compliance_provides_illegal4.stderr:
	Update baseline.

2021-06-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add compliance_invalid_action.
	* test/all/compliance_invalid_action/baseline/simulate/compliance_invalid_action,
	test/all/compliance_invalid_action/baseline/simulate/compliance_invalid_action.stderr,
	test/all/compliance_invalid_action/baseline/verify/compliance_invalid_action,
	test/all/compliance_invalid_action/baseline/verify/compliance_invalid_action.stderr,
	test/all/compliance_invalid_action/compliance_invalid_action.dzn,
	test/all/compliance_invalid_action/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	simulate: Report invalid trigger in compliance error.
	* dzn/vm/goops.scm (<compliance-error>)[trigger]: New field.
	* dzn/simulate.scm (check-provides-compliance): Use it to store trigger
	when component trail is empty.
	* dzn/vm/report.scm (final-error-messages): Report it.

	simulate: Calculate and show eligible at end of trail.
	* dzn/simulate.scm (end-report): When at end of trail and not at a
	choice-point, calculate eligible for report.
	(check-deadlock): Cater for system deadlock.
	(end-report): Aslo check deadlock for systems.
	* test/all/state_deadlock/baseline/simulate/state_deadlock.stderr:
	Update to <deadlock>.

2021-06-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove hello_optional_system.

2021-06-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Camera: Add trace.
	* test/all/Camera/trace.2: Move to...
	* test/all/Camera/trace.3: ...new file.
	* test/all/Camera/trace.2: New image trace.

2021-06-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add compliance_optional.
	* test/all/compliance_optional/baseline/simulate/compliance_optional,
	* test/all/compliance_optional/baseline/simulate/compliance_optional.stderr,
	* test/all/compliance_optional/baseline/verify/compliance_optional,
	* test/all/compliance_optional/baseline/verify/compliance_optional.stderr,
	* test/all/compliance_optional/compliance_optional.dzn,
	* test/all/compliance_optional/trace,
	* test/all/hello_foreign/hello_foreign.dzn: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	simulate: Check provides compliance for port refusal.
	* dzn/simulate.scm (check-provides-compliance): When a component trace
	exists, but no provides port traces, mark a <compliance-error>.
	* dzn/vm/report.scm (initial-error-message, final-error-messages):
	Handle the case of no port acceptances.

2021-06-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Cleanup check-provides-compliance.
	* dzn/simulate.scm (check-provides-compliance): Remove attempt at refusal.
	* test/all/compliance_failures_illegal/baseline/simulate/compliance_failures_illegal,
	est/all/compliance_failures_illegal/baseline/simulate/compliance_failures_illegal.stderr:
	Update baseline.

2021-06-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add nondet_optional.
	* test/all/nondet_optional/nondet_optional.dzn,
	test/all/nondet_optional/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	test: Add nondet_inevitable.
	* test/all/nondet_inevitable/nondet_inevitable.dzn,
	test/all/nondet_inevitable/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-06-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Print initial error message also to stdout.
	* dzn/vm/report.scm (report): Print initial message also stdout.
	* test/all/*: Update baselines.

	simulate: Typo in deterministic error.
	* dzn/vm/report.scm (initial-error-message): Remove extra newline.

	test: Add hello_garbage.
	* test/all/hello_garbage/baseline/simulate/hello_garbage,
	test/all/hello_garbage/baseline/simulate/hello_garbage.stderr,
	test/all/hello_garbage/baseline/verify/hello_garbage,
	test/all/hello_garbage/baseline/verify/hello_garbage.stderr,
	test/all/hello_garbage/hello_garbage.dzn,
	test/all/hello_garbage/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	simulate: Detect garbage on trail.
	* dzn/vm/run.scm (filter-match-error): Next to valid traces, also prefer
	any other error above match errors.
	* dzn/simulate.scm (run-trail): Use it.
	(run-sut): Report empty result as match error.
	* dzn/vm/report.scm (label->string): Handle model as ast.
	(final-error-messages): Report it.
	* test/all/incomplete/trace: Truncate trace.
	* dzn/simulate.scm (end-report): Filter match errors.

2021-06-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Truncate compliance traces to refinement trace.
	* test/all/compliance_async/trace: Drop <illegal>.
	* test/all/compliance_blocking_out/trace: Truncate to refinement trace.
	* test/all/compliance_blocking_out/baseline/simulate/compliance_blocking_out,
	test/all/compliance_blocking_out/baseline/simulate/compliance_blocking_out.stderr:
	Update baseline.
	* test/all/compliance_livelock/trace: Truncate to refinement trace.
	* test/all/compliance_livelock/baseline/simulate/compliance_livelock.stderr:
	Update baseline.
	* test/all/compliance_nonsynchronous_sync/trace,
	test/all/compliance_out_sync/trace,
	test/all/compliance_out_two/trace,
	test/all/compliance_provides_bool/trace,
	test/all/compliance_provides_int/trace,
	test/all/compliance_provides_out/trace: Truncate to refinement trace.
	* test/all/compliance_provides_out/baseline/simulate/compliance_provides_out:
	Update baseline.
	* test/all/compliance_reply_bool/trace,
	test/all/compliance_single_to_multiple/trace,
	test/all/compliance_system_provides_bool/trace: Truncate to refinement trace.

2021-06-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add compliance_fork_provides.
	* test/all/compliance_fork_provides/baseline/simulate/compliance_fork_provides,
	test/all/compliance_fork_provides/baseline/simulate/compliance_fork_provides.stderr,
	test/all/compliance_fork_provides/baseline/verify/compliance_fork_provides,
	test/all/compliance_fork_provides/baseline/verify/compliance_fork_provides.stderr,
	test/all/compliance_fork_provides/compliance_fork_provides.dzn,
	test/all/compliance_fork_provides/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	simulate: Detect provides fork for empty trace.
	* dzn/simulate.scm (zip): New procedure, split-out from...
	(check-provides-compliance): ...here.
	(run-trail): For a multiple-provides model, call check-provides-fork.

2021-06-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Detect provides fork.
	* dzn/simulate.scm (check-provides-fork): New procedure.
	(check-provides-compliance): Use it.
	* dzn/vm/goops.scm (<fork-error>): New type.
	* dzn/vm/report.scm (initial-error-message, final-error-messages):
	Report it.

2021-06-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_if_action.
	* test/all/hello_if_action/hello_if_action.dzn: New file.
	* test/all/local.mk (HELLO_TESTS): Add it.

2021-06-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add second_inevitable.
	* test/all/second_inevitable/second_inevitable.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-06-18  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: compliance_failures_choice: Update from compliance_out_inevitable_illegal.
	* test/all/compliance_out_inevitable_illegal:
	Rename to...
	* test/all/compliance_failures_choice: ...this.  Rewrite to trigger
	failures refusal.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.
	(XFAIL_TESTS): Add test.

2021-05-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_out_inevitable_illegal: Add missing baselines.
	* test/all/compliance_out_inevitable_illegal/baseline/simulate/compliance_out_inevitable_illegal,
	test/all/compliance_out_inevitable_illegal/baseline/simulate/compliance_out_inevitable_illegal.stderr,
	test/all/compliance_out_inevitable_illegal/baseline/verify/compliance_out_inevitable_illegal.stderr:
	New files.
	* test/all/local.mk (XFAIL_TESTS): Remove test.

2021-06-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add compliance_failures_multiple_provides.
	* test/all/compliance_failures_multiple_provides/baseline/simulate/compliance_failures_multiple_provides,
	test/all/compliance_failures_multiple_provides/baseline/simulate/compliance_failures_multiple_provides.stderr,
	test/all/compliance_failures_multiple_provides/baseline/verify/compliance_failures_multiple_provides,
	test/all/compliance_failures_multiple_provides/baseline/verify/compliance_failures_multiple_provides.stderr,
	test/all/compliance_failures_multiple_provides/compliance_failures_multiple_provides.dzn,
	test/all/compliance_failures_multiple_provides/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-06-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add compliance_failures_inevitable.
	* test/all/compliance_failures_inevitable/baseline/simulate/compliance_failures_inevitable,
	test/all/compliance_failures_inevitable/baseline/simulate/compliance_failures_inevitable.stderr,
	test/all/compliance_failures_inevitable/baseline/verify/compliance_failures_inevitable,
	test/all/compliance_failures_inevitable/baseline/verify/compliance_failures_inevitable.stderr,
	test/all/compliance_failures_inevitable/compliance_failures_inevitable.dzn,
	test/all/compliance_failures_inevitable/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-06-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_failures_optional: Rename from compliance_out_inevitable.
	* test/all/compliance_out_inevitable: Rename to...
	* test/all/compliance_failures_optional: ...this.

2021-06-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_out_inevitable: Simplify.
	* test/all/compliance_out_inevitable/compliance_out_inevitable.dzn (ihello):
	Remove state.
	(iworld): Likewise.
	(compliance_out_inevitable): Likewise.
	* test/all/compliance_out_inevitable/baseline/simulate/compliance_out_inevitable,
	test/all/compliance_out_inevitable/baseline/verify/compliance_out_inevitable,
	test/all/compliance_out_inevitable/trace: Update accordinly.

2021-06-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add compliance_failures_illegal.
	* test/all/compliance_failures_illegal/baseline/simulate/compliance_failures_illegal,
	test/all/compliance_failures_illegal/baseline/simulate/compliance_failures_illegal.stderr,
	test/all/compliance_failures_illegal/baseline/verify/compliance_failures_illegal,
	test/all/compliance_failures_illegal/baseline/verify/compliance_failures_illegal.stderr,
	test/all/compliance_failures_illegal/compliance_failures_illegal.dzn,
	test/all/compliance_failures_illegal/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-06-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support failures-refinement refusals.
	* dzn/commands/simulate.scm (parse-opts): Add -R,--no-refusals.
	(main): Pass #:refusal-check? to...
	* dzn/simulate.scm (simulate): ...here, using new #:refusal-check?
	parameter.  Pass it to...
	(simulate*): Likewise to...
	(run-trail): ...here.  Add refusal check.
	(optional-trace?): Split-out from...
	(check-deadlock): ...here.
	(rtc-lts->traces): New procedure.
	* dzn/explore.scm (pc->rtc-lts): Add new stop predicate: TRACE-DONE?
	* dzn/vm/goops.scm (<refusals-error>): New type.
	* dzn/vm/report.scm (initial-error-message, final-error-messages):
	Handle it.
	* doc/dezyne.texi (Invoking dzn simulate): Document it.

2021-06-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Fix other provides ports update for requires out events.
	* dzn/simulate.scm (check-provides-compliance): In case of a
	requires-out event, run compliance check for all for all provides ports.

2021-06-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: indirect_in: Remove refusals error.
	* test/all/indirect_in/indirect_in.dzn (U): Use in-event 'a' instead of
	'unused' out-event.
	(indirect_in): Update accordingly.

2021-06-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Respect --trail='' as empty trail.
	* dzn/simulate.scm (simulate): Avoid interactive mode when --trail was
	supplied.

2021-06-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: livelock_iterator: Rename from livelock_component2.
	Simulator LTSs differ from verification LTSs.

	* test/all/livelock_component2: Rename to...
	* test/all/livelock_iterator: ...this.
	* test/all/livelock_iterator/META: Skip lts.
	* test/all/livelock_iterator/baseline/simulate/livelock_iterator,
	test/all/livelock_iterator/baseline/simulate/livelock_iterator.stderr:
	Update baseline.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.
	(XFAIL_TESTS): Remove.

2021-06-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: component_modeling_loop: Rename from livelock_component1.
	There is no livelock in the component.

	* test/all/livelock_component1/META: Remove file.
	* test/all/livelock_component1: Rename to...
	* test/all/component_modeling_loop: ...this.
	* test/all/local.mk (HELLO_TESTS): Remove.
	* test/all/local.mk (REGRESSION_TESTS): Add.

2021-05-31  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support interactive use.
	* dzn/vm/run.scm (interactive?): New procedure.
	(extend-trace): Use it to avoid xoreading too often.
	(run-to-completion-unmemoized): When interactive?, resolve
	non-determining using user input.
	* dzn/simulate.scm (run-trail): Never use read-input unless
	current-input-port is not tty.  When interactive?, show eligible events
	before input prompt.

2021-05-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add hello_choice_action.
	* test/all/hello_choice_action/META,
	test/all/hello_choice_action/baseline/simulate/hello_choice_action,
	test/all/hello_choice_action/hello_choice_action.dzn,
	test/all/hello_choice_action/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	test: Add hello_complete_action.
	* test/all/hello_complete_action/META,
	test/all/hello_complete_action/baseline/simulate/hello_complete_action,
	test/all/hello_complete_action/hello_complete_action.dzn,
	test/all/hello_complete_action/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	test: add hello_complete_reply.
	* test/all/hello_complete_reply/META,
	test/all/hello_complete_reply/baseline/simulate/hello_complete_reply,
	test/all/hello_complete_reply/hello_complete_reply.dzn,
	test/all/hello_complete_reply/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-05-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_choice_reply.
	* test/all/hello_choice_reply/META,
	test/all/hello_choice_reply/baseline/simulate/hello_choice_reply,
	test/all/hello_choice_reply/hello_choice_reply.dzn,
	test/all/hello_choice_reply/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-06-01  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Support sparse choice-point trail.
	This allows for a simulation in non-strict mode to omit non-choice point
	events from the trail, even if they are observable, i.e., part of the
	strict trace.

	* dzn/vm/goops.scm (<postponed-match>): New type.
	(<end-of-trail>)[trigger]: Remove unused field.
	* dzn/vm/report.scm (label->string): Handle bare string.
	* dzn/vm/run.scm (filter-postponed-match): New procedure.
	(extend-trace): When non-strict, use <postponed-match-error> instead of
	<match-error> or <end-of-trail>.
	(run-to-completion-unmemoized): ...here.  When non-strict, reset
	<postponed-match-error> if there is only one choice, otherwise mark
	<end-of-trail>.

2021-05-31  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Do not run silent on provides port.
	* dzn/simulate.scm (check-provides-compliance): Remove dead silence code.

2021-05-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add end_of_trail.
	This supports testing simulate for

	   * non-strict: without --strict
	   * spilt-arrows trace: --format=trace

	* test/all/end_of_trail/META,
	test/all/end_of_trail/baseline/simulate/end_of_trail,
	test/all/end_of_trail/baseline/simulate/end_of_trail.stderr,
	test/all/end_of_trail/end_of_trail.dzn,
	test/all/end_of_trail/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.
	* test/dzn/dzn.scm (filter-state): Strictly filter "(state ".
	(trace-format): New procedure.
	(non-strict?): New predicate.
	(run-simulate-trace): Use them.

2021-05-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Show eligible (return) events at end of trail.
	* dzn/vm/ast.scm (ast:label*)[end-of-trail]: New specialization.
	* dzn/vm/report.scm (label->string): Fully support <trigger-return>.
	(report): When eligible not part of labels, show eligible as labels too.
	* dzn/vm/run.scm (run-to-completion-unmemoized): At end of trail, or
	non-deterministic trace that needs input, mark <end-of-trail> with labels.
	* dzn/simulate.scm (check-provides-compliance): For provides port, use
	%exploring? instead of %strict?.

2021-05-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove empty error baselines.
	* test/dzn/dzn.scm (run-simulate-trace): Treat non-existing baseline as
	empty.
	* test/all/compliance_livelock/baseline/verify/compliance_livelock.stderr,
	test/all/compliance_provides_illegal4/baseline/verify/compliance_provides_illegal4.stderr,
	test/all/hello_two/baseline/verify/hello_two.stderr,
	test/all/parse_assign_void/baseline/verify/parse_assign_void.stderr,
	test/all/parse_non_existent_import/baseline/verify/parse_non_existent_import: Remove.

	simulate: By default, use --format=trace.
	* dzn/commands/simulate.scm (main): Use "trace" as default.
	* test/dzn/dzn.scm (run-simulate-trace): Use --format=event.
	* doc/dezyne.texi (Invoking dzn simulate): Update accordingly.

2021-06-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Remove duplication in check-provides-compliance.
	* dzn/simulate.scm (check-provides-compliance)[run-provides-port]: New
	inner procedure.

2021-05-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Cleanup rtc? and memoization.
	* dzn/vm/goops.scm (rtc?): Remove "previous unset is rtc?" hack.
	* dzn/vm/run.scm (run-to-completion): Include %sut in the key.
	(run-silent): Reset, and put back statement.

2021-05-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add livelock_async.
	* test/all/livelock_async/livelock_async.dzn,
	test/all/livelock_async/baseline/verify/livelock_async,
	test/all/livelock_async/baseline/verify/livelock_async.stderr: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

	test: Add illegal_async_req.
	* test/all/illegal_async_req/baseline/simulate/illegal_async_req,
	test/all/illegal_async_req/baseline/simulate/illegal_async_req.stderr,
	test/all/illegal_async_req/baseline/verify/illegal_async_req,
	test/all/illegal_async_req/baseline/verify/illegal_async_req.stderr,
	test/all/illegal_async_req/illegal_async_req.dzn,
	test/all/illegal_async_req/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-05-31  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	vm: Flag async req while ack is pending as illegal.
	* dzn/ast.scm (ast:async-port*)[component-model]: Move to ...
	[component]: ...this specialization.
	[component-model]: New specialization.
	* dzn/vm/runtime.scm (runtime:port*)[runtime:port]: New specialization.
	[runtime:instance]: Include async ports.
	* dzn/vm/runtime.scm (runtime:system*): Update to not include async
	ports in boundary ports.
	* dzn/vm/step.scm (step-async-action-down): Mark a req for a pending ack
	as illegal.  Use runtime:port instead of ast port for pending ack.
	* dzn/vm/goops.scm (write): Update accordingly.

2021-05-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: livelock_async_cancel: Rename from livelock_async.
	* test/all/livelock_async: Rename to...
	* test/all/livelock_async_cancel: ...this.

2021-05-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	vm: Livelock check cleanups.
	* dzn/vm/run.scm (did-provides-out?): Handle "<livelock>" event on trail.
	(livelock?): Use regular procedure define, use higher
	order functions instead of lambda, use unfold instead of atypical suffixes
	loop.

2021-05-31  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Support async livelock.
	* dzn/explore.scm (process-async, check-mark-livelock): Remove.
	(did-provides-out?, flush-async, flush-async-trace): Move to...
	* dzn/vm/run.scm (did-provides-out?, flush-async, flush-async-trace):
	...here.
	* dzn/simulate.scm (run-sut): Use flush-async instead of run-async.

2021-05-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: illegal_async_silent: Add trace and simulate baseline.
	* test/all/illegal_async_silent/baseline/simulate/illegal_async_silent,
	test/all/illegal_async_silent/baseline/simulate/illegal_async_silent.stderr,
	test/all/illegal_async_silent/trace: New files.
	* test/all/local.mk (XFAIL_TESTS): Add test.

	test: determinism_async: Add trace and simulate baseline.
	* test/all/determinism_async/baseline/simulate/determinism_async,
	test/all/determinism_async/baseline/simulate/determinism_async.stderr,
	test/all/determinism_async/trace: New files.

	simulate: At end of trail, run pending async event.
	* dzn/vm/run.scm (run-async*): Export.
	* dzn/simulate.scm (run-sut): At end of trail, run async events.

2021-05-28  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	traces: Don't allow a trace to end in a state with pending ACKs.
	* dzn/commands/traces.scm (mark-async, remove-mark-async): New
	procedures.
	(model->lts, model->traces): ): Use them.
	* dzn/lts.scm (generate-trace): Do not allow to end when ACK is pending.

2021-05-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove symlink trees.
	* HACKING (Regression test): Remove example that uses symlink tree.
	* test/async,
	test/blocking,
	test/compliance,
	test/error,
	test/external,
	test/hello,
	test/import,
	test/namespace,
	test/parser,
	test/regression,
	test/semantics,
	test/smoke: Remove directories.

2021-05-27  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Detect async ack=>req livelock.
	* dzn/verify/pipeline.scm (component-taus): If port is async, hide
	inevitable.
	* test/all/livelock_async/baseline/verify/livelock_async,
	test/all/livelock_async/baseline/verify/livelock_async.stderr: New
	files.

2021-05-31  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: compliance_nonsynchronous_sync: Complete trace for simulate.
	* test/all/compliance_nonsynchronous_sync/trace: Add missing h.return.

2021-06-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_inevitable_hidden: Rename from livelock1.
	* test/all/livelock1/livelock1.dzn: Rename to...
	* test/all/hello_inevitable_hidden/hello_inevitable_hidden.dzn:
	...this.  Canonicalize.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

2021-05-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: livelock2: Remove.
	Only the interface livelocks, see livelock_interface.

	* test/all/livelock2/baseline/verify/ilivelock,
	test/all/livelock2/baseline/verify/livelock2.stderr,
	test/all/livelock2/baseline/verify/nolivelock,
	test/all/livelock2/livelock2.dzn,
	test/all/livelock2/trace: Remove files.
	* test/error/livelock2,
	test/regression/livelock2: Remove symlinks.
	* test/all/local.mk (REGRESSION_TESTS): Remove test.

2021-06-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: component_livelock0: Remove.
	* test/all/livelock_component0/META,
	test/all/livelock_component0/livelock_component0.dzn: Remove files.
	* test/all/local.mk (HELLO_TESTS): Remove.

2021-05-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: incomplete: Add trace and simulate baseline.
	* test/all/incomplete/baseline/simulate/incomplete,
	test/all/incomplete/baseline/simulate/incomplete.stderr,
	test/all/incomplete/trace: New files.

	test: illegal_interface.space: Add trace and simulate baseline.
	* test/all/illegal_interface.space/baseline/simulate/illegal_interface.space,
	test/all/illegal_interface.space/baseline/simulate/illegal_interface.space.stderr,
	test/all/illegal_interface.space/trace: New files.

	test: compliance_reply_bool: Add trace and simulate baseline.
	* test/all/compliance_reply_bool/baseline/simulate/compliance_reply_bool,
	test/all/compliance_reply_bool/baseline/simulate/compliance_reply_bool.stderr,
	test/all/compliance_reply_bool/trace: New files.

	simulate: Use location of initial compound for <determinism>.
	* dzn/vm/run.scm (mark-determinism-error): Truncate trace to component's
	initial-compound.
	* test/all/determinism0/baseline/simulate/determinism0.stderr,
	test/all/determinism1/baseline/simulate/determinism1.stderr: Update.

	test: compliance_reply_bool: Use canonical names.
	* test/all/compliance_reply_bool/compliance_reply_bool.dzn (I): Rename
	to...
	(ihello): ...this.  Use hello, bye instead of ia, ib.
	* test/all/compliance_reply_bool/baseline/verify/compliance_reply_bool:
	Update accordingly.
	* test/all/compliance_reply_bool/baseline/verify/compliance_reply_bool.stderr:
	New file.

	test: compliance_out_sync: Add trace and simulate baseline.
	* test/all/compliance_out_sync/baseline/simulate/compliance_out_sync,
	test/all/compliance_out_sync/baseline/simulate/compliance_out_sync.stderr,
	test/all/compliance_out_sync/trace: New files.

	test: compliance_out_sync: Use canonical names.
	* test/all/compliance_out_sync/compliance_out_sync.dzn (I): Rename to...
	(ihello): ...this.  Use hello, world instead of ia, oa.
	(compliance_out_sync): Update accordingly.
	test/all/compliance_out_sync/baseline/verify/compliance_out_sync: Update
	accordingly.

	test: compliance_out_nondet: Remove.
	* test/all/compliance_out_nondet/baseline/verify/compliance_out_nondet,
	test/all/compliance_out_nondet/baseline/verify/compliance_out_nondet.stderr,
	test/all/compliance_out_nondet/compliance_out_nondet.dzn: Remove files.
	* test/all/local.mk (REGRESSION_TESTS): Remove test.

	test: Alarm: Update trace and verify baseline, add simulate baseline.
	* test/all/Alarm/trace: Change to illegal trace.
	* test/all/Alarm/baseline/verify/Alarm,
	test/all/Alarm/baseline/verify/Alarm.stderr: Update for compliance skip.
	* test/all/Alarm/baseline/verify/IConsole,
	test/all/Alarm/baseline/verify/ISensor,
	test/all/Alarm/baseline/verify/ISiren: Remove.
	* test/all/Alarm/baseline/simulate/Alarm,
	test/all/Alarm/baseline/simulate/Alarm.stderr: New files.

	test: compliance_out_inevitable: Fix trace and add simulate baseline.
	* test/all/compliance_out_inevitable/trace: Change to compliance problem.
	* test/all/compliance_out_inevitable/baseline/simulate/compliance_out_inevitable,
	test/all/compliance_out_inevitable/baseline/simulate/compliance_out_inevitable.stderr:
	New files.

	test: range_assign: Add trace and simulate baseline.
	* test/all/range_assign/baseline/simulate/range_assign,
	test/all/range_assign/baseline/simulate/range_assign.stderr,
	test/all/range_assign/trace: New files.

	test: compliance_livelock: Add trace and simulate baseline.
	* test/all/compliance_livelock/baseline/simulate/compliance_livelock,
	test/all/compliance_livelock/baseline/simulate/compliance_livelock.stderr,
	test/all/compliance_livelock/trace: New files.

	test: Remove symlink trees.
	* HACKING (Regression test): Remove example that uses symlink tree.
	* test/async,
	test/blocking,
	test/compliance,
	test/error,
	test/external,
	test/hello,
	test/import,
	test/namespace,
	test/parser,
	test/regression,
	test/semantics: Remove directories.

	test: deadlock_blocking_optional: Add trace and simulate baseline.
	* test/all/deadlock_blocking_optional/baseline/simulate/deadlock_blocking_optional,
	test/all/deadlock_blocking_optional/baseline/simulate/deadlock_blocking_optional.stderr,
	test/all/deadlock_blocking_optional/trace: New files.

	simulate: Remove optional traces from deadlock check.
	* dzn/ast.scm (ast:optional?)[event,optional,trigger]: Add specialization.
	* dzn/simulate.scm (check-deadlock): Remove traces that contain an
	optional trigger.

	test: deadlock_reply_modeling: Add trace and simulate baseline.
	* test/all/deadlock_reply_modeling/baseline/simulate/deadlock_reply_modeling,
	test/all/deadlock_reply_modeling/baseline/simulate/deadlock_reply_modeling.stderr,
	test/all/deadlock_reply_modeling/trace: New files.

	vm: Set deadlock error when replying on a modeling event.
	* dzn/vm/step.scm (step)[reply]: For modeling event, deadlock.

	test: state_deadlock: Add trace and simulate baseline.
	* test/all/state_deadlock/state_deadlock (ihello): Fix completeness.
	* test/all/state_deadlock/baseline/simulate/state_deadlock,
	test/all/state_deadlock/baseline/simulate/state_deadlock.stderr,
	test/all/state_deadlock/trace: New files.

2021-05-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Do not lose labels when merging communications.
	* dzn/commands/trace.scm (merge-communications): Do not lose
	non-communication.

2021-04-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Support --format=json.
	Try:

	    ./pre-inst-env dzn simulate --trail=h.hello --format=trace test/all/helloworld/helloworld.dzn \
	        | ./pre-inst-env dzn trace --format=json

	    ./pre-inst-env dzn simulate --trail=p.hello --format=trace test/all/hello_system/hello_system.dzn \
	        | ./pre-inst-env dzn trace --format=json

	    ./pre-inst-env dzn simulate --format=trace test/all/Camera/Camera.dzn < test/all/Camera/trace.1 \
	        | ./pre-inst-env dzn trace --format=json

	* dzn/parse/util.scm (string->location): New procedure.
	* dzn/commands/trace.scm (q-in?): New procedure.
	(<lifeline-header>, <lifeline-activity>, <lifeline-label>,
	<lifeline-event>, <lifeline>): New types.
	(lifeline-header->scm, lifeline-activity->scm, lifeline-label->scm,
	lifeline-event->scm, lifeline->scm): New procedures.
	(trace:steps->json): Use them in new procedure.
	(trace:format-trace): Use it for format "json".
	(parse-opts): Mention "json".
	* doc/dezyne.texi (Invoking dzn trace): Document it.

2020-09-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Add --format=diagram.
	Try:

	    ./pre-inst-env dzn simulate --format=trace test/all/hello_bool/hello_bool.dzn -t h.hello \
	     | ./pre-inst-env dzn trace --format=diagram

	or with locations

	    ./pre-inst-env dzn simulate --locations --format=trace test/all/hello_bool/hello_bool.dzn -t h.hello \
	     | ./pre-inst-env dzn trace --format=diagram --locations

	    ./pre-inst-env dzn simulate --format=trace test/all/hello_system/hello_system.dzn \
	      < test/all/hello_system/trace \
	      | ./pre-inst-env dzn trace --format=diagram

	or, on a wide terminal

	    ./pre-inst-env dzn simulate --format=trace test/all/hello_system/hello_system.dzn \
	      < test/all/hello_system/trace \
	      | ./pre-inst-env dzn trace --format=diagram --internal

	    ./pre-inst-env dzn simulate --format=trace test/all/Camera/Camera.dzn \
	      < test/all/Camera/trace \
	      | ./pre-inst-env dzn trace --format=diagram

	* dzn/commands/trace.scm (parse-opts): Add -i,--internal.
	(format-trace): Pass it to...
	(trace:format-trace): ...here, using new #:internal? parameter.
	(trace-parse): Allow whitespace.
	(<communication>)[left-location,right-location]: New fields.
	(step->communication, merge-communications, step->event,
	trace:step->trace:code, serialize): Update accordingly.
	(communication-location, communication-instance->model-path,
	trail->string, instance->string, center, location-length,
	step:steps->diagram): New procedures.
	* doc/dezyne.texi (Invoking dzn trace): Document it.

2021-05-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support micro-step trace output.
	Using --format=trace --verbose also displays assignments, replies,
	function calls...

	* dzn/vm/report.scm (trace->steps, pc-step?, pc->step): New methods.
	(display-trace): Use it when verbose.

2021-05-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Cleanup: Remove statement->string.
	* dzn/vm/goops.scm (<labels>): New type.
	* dzn/vm/run.scm (extend-trace): Use it.  This avoids creating bare
	<node> objects.
	* dzn/vm/ast.scm (ast:label*): New method.
	* dzn/vm/report.scm (statement->string): Remove.
	(label->string): Remove bare <node> workaround.
	(end-of-trail-labels): Use them.  Remove bare <node>
	workaround.

2021-05-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support state reporting for every transition.
	* dzn/commands/simulate.scm (parse-opts): Add --state.
	(main): Pass it to...
	* dzn/simulate.scm (simulate): ...here, using new #:state parameter, and
	and on to...
	(simulate*): ...and here,
	(run-trail): ...and here,
	* dzn/vm/report.scm (report): ...and here,
	(display-trace): To here.  When state?, show state after every
	split-arrows pair.

	vm: Remove <trigger-return-trace>.
	* dzn/vm/goops.scm (<trigger-return-trace>): Remove.
	* dzn/vm/report.scm (statement->string): Remove it.

2021-05-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Rewrite split-arrows output: --format=trace.
	The split-arrows output was inherited from the hysterical failed system
	simulator experiment.  It lacked provides the port trace, correct
	locations and suffered from accidental complexity.

	* dzn/vm/normalize.scm (normalize-compounds, transform-end-of-on,
	add-function-return): Set location on new elements.
	* dzn/vm/report.scm (trace->arrows, pc-arrow?, pc->arrow): New methods.
	(complete-split-arrows-pcs, set-trigger-locations): New procedures.
	(display-trace): Use them in full rewrite.

2021-05-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	vm: Refactor trace->trail.
	This prepares for a rewrite of display-trace; the split-arrows output.

	* dzn/vm/ast.scm (ast:external?)[instance, runtime:port,
	runtime:instance]: New specializations.
	(ast:provides?, ast:requires?)[runtime:instance]: New specializations.
	* dzn/vm/report.scm (trace->trail): Split-off
	(pc-event?, pc->event): These new methods.

2021-05-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Zip provides port trace with component trace.
	This prepares for arrow trace output with correct locations.

	* dzn/simulate.scm (check-provides-compliance): Zip provides port trace
	with component trace.
	* dzn/vm/report.scm (pc-event?)[trigger-return]: Skip on requires port.

2021-05-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Do not add trigger-return statement for out-events.
	Out-events do not produce an observable "return" in the trail or
	trace (named event trace or arrow trace).  This avoids having to remove
	the return event afterwards.

	* dzn/vm/step.scm (step)[end-of-on]: Skip trigger-return for out events.

2021-04-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Pass all messages for --format=code,event.
	* dzn/commands/trace.scm (trace-parse): Exclude semicolon and newline
	from location.  Allow non-newline whitespace in messages.
	(eligible->string, header->string,
	labels->string, trail->string): New procedures.
	(step->code): Use them.
	(trace:format-trace): Do not filter-out messages for "event" format.

2021-05-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update check recipes in 'HACKING'.
	* HACKING (Regression test): Replace broken error example with find
	hack.

2021-05-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_local_bool.
	* test/all/hello_local_bool/hello_local_bool.dzn: New file.
	* test/all/local.mk (HELLO_TESTS): Add it.

2021-05-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Support compliance_out_two: empty component trace compliance.
	When an interface event is not handled by the component, the component
	traces are empty.  This case is only tested in "compliance_out_two".  A
	trace file was missing, so we missed this case.

	* test/all/compliance_out_two/trace: New file.
	* test/all/compliance_out_two/baseline/simulate: Add baseline.
	* dzn/simulate.scm (check-provides-compliance): Support empty component
	trace.

2021-05-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_out_two: Use canonical names, add copyright header.
	* test/all/compliance_out_two/compliance_out_two.dzn (I): Rename to...
	(ihello): ...this.  Use hello, hi, world instead of e,f,cb.
	(compliance_out_two): Update accordingly.  Rename provides port to "h".
	* test/all/compliance_out_two/baseline/verify/compliance_out_two: Update
	accordingly.

	vm: Program-counter write nitpick.
	* dzn/vm/goops.scm (write)[program-counter]: Make run-to-completion
	state more explicit.

2021-05-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Remove run-provides.
	* dzn/vm/run.scm (run-provides-port, run-provides): Remove.
	(run-to-completion*): Use run-to-completion* instead.

2021-05-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: parse_preprocessed_imported_baz: Remove generated output.
	* test/all/parse_preprocessed_imported_baz/parse_preprocessed_imported_baz.dzn:
	Remove file.
	* .gitignore: Ignore it.

2021-05-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Camera: Make trace strict.
	* test/all/Camera/trace: Add missing events.

2021-05-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add semantics/indirect_in symlink.
	* test/semantics/indirect_in/: New symlink.

2021-05-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Use destruction (match) instead of car/cdr makramee.
	* dzn/verify/pipeline.scm (semi->newline): New procedure.
	(get-lts, get-trace): Use it.  Use match instead of with c[ad]+r, throw
	programming-error upon mismatch instead of failing on pair?.
	(get-line, get-info): Likewise.
	(report-ok, report-fail): Use match instead of with c[ad]+r.

2021-05-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	runtime c++: Guard setting of DZN_STATE_TRACING define.
	This allows using `-D DZN_STATE_TRACING=1' without editing the runtime.

	* runtime/c++/dzn/runtime.hh (DZN_STATE_TRACING): Only set to 0 if
	unset.

2021-05-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Do not suppress mcrl2 error messages in debug mode.
	This makes debugging mcrl2 friendlier: error messages are directly
	visible when using --debug.

	* dzn/verify/pipeline.scm (in-out:mcrl2->lps): When --debug, omit the
	--quite on mcrl22lps.

2021-05-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Use destruction (match) instead of car/cdr makramee.
	* dzn/verify/pipeline.scm (semi->newline): New procedure.
	(get-lts, get-trace): Use it.  Use match instead of with c[ad]+r, throw
	programming-error upon mismatch instead of failing on pair?.
	(get-line, get-info): Likewise.
	(report-ok, report-fail): Use match instead of with c[ad]+r.

2021-05-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: multiple_provides: Use canonical names.
	* test/all/multiple_provides/multiple_provides.dzn: Use ihello, hello,
	world.

2021-05-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: compliance_nonsynchronous_sync: Use canonical names.
	* test/all/compliance_nonsynchronous_sync/compliance_nonsynchronous_sync.dzn:
	Use ihello, iworld, hello, world.
	* test/all/compliance_nonsynchronous_sync/baseline: Update accordingly.

2021-04-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts: Avoid car on empty list.
	* dzn/lts.scm (assert-partially-deterministic):  Check edges before
	using CAR.
	(assert-deterministic): Likewise.

2021-05-11  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	parse: Fix preprocessor line count off-by-one for more than one import.
	* dzn/parse.scm (string->file+import-content-alist): Remove bad copy of
	imported regex.
	* test/all/parse_preprocessed_imported_baz: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2021-05-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: inner.space: Remove multiple provides.
	* test/all/inner.space/inner.space.dzn (ranger): Move out from...
	(space): ...here.

	test: importPath: Remove multiple provides.
	* test/all/importPath/importPath.dzn (importPath): Use I2 as requires.
	* test/all/importPath/I2.dzn (I2): Update accordingly.

2021-04-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: async_calling_context: Support scheme.
	* test/all/async_calling_context/scheme/language.dzn,
	* test/all/async_calling_context/scheme/main.scm: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add async_calling_context.

	test: async_calling_context: Support cs.
	* dzn/templates/cs/async-req-event-slot@trigger: Add out-ref-local.
	* test/all/async_calling_context/async_calling_context.dzn: Move dollars to...
	* test/all/async_calling_context/c++/language.dzn: ...this new file.
	* test/all/async_calling_context/dzn/language.dzn,
	* test/all/async_calling_context/cs/main.cs: New files.

2021-04-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add async_calling_context: feature interaction.
	Fixes <https://gitlab.com/dezyne/dezyne-issues/-/issues/20>.
	Reported by Michael van de Ven <michael.van.de.ven@thermofisher.com>.

	* dzn/ast.scm (ast:async?)[action]: New specialization.
	* dzn/code.scm (code:arguments)[action]: Use it to skip adding
	calling-context for async clr.
	* dzn/code/c++.scm (c++:formal-type)[port]: Add code:formals
	indirection, to add calling-context if necessary.
	* dzn/templates/c++.scm (formal-type): Use it in new template.
	* dzn/templates/c++/async-clr-event-slot@trigger: Remove formals.
	* dzn/templates/dzn.scm (formal-type): Add missing comma-infix.
	* test/all/async_calling_context: New test.

2021-04-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Add version comment when installing c runtime.
	* Makefile.am (install-data-hook): Add case for c.

2021-04-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add skip to META for failing c tests.
	We use the XFAIL mechanism only for supported languages.

	* test/all/alpha_shadow_port/META,
	test/all/hello_multiple_provides_requires/META,
	test/all/hello_out_data/META,
	test/all/multiple_provides/META: New file.
	* test/all/data_full/META,
	test/all/hello_injected/META: Skip c.

2021-04-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c: Refactor foreign end-point.
	* dzn/code/c.scm (c:base-or-not): Rename to...
	(c:foreign-instance): ...this.
	* dzn/templates/c.scm (base-or-not-left, base-or-not-right): Remove.
	(base-or-not): Rename to...
	(foreign-instance): ...this.
	* dzn/templates/c/binding-instance@end-point: Use it.
	* dzn/templates/c/foreign-instance@end-point: New file.
	* dzn/templates/c/base-or-not-left@binding,
	dzn/templates/c/base-or-not-right@binding,
	dzn/templates/c/base-or-not-left@end-point,
	dzn/templates/c/base-or-not-right@end-point,
	dzn/templates/c/base-or-not@binding,
	dzn/templates/c/base-or-not@end-point: Remove.

	c: Remove method-prototype duplication.
	* dzn/templates/c.scm (method-prototype): Use standard accessor.
	(call-in-trigger-foreign): Remove.
	(method-prototypes): Rename to...
	(formal-method-prototype): ...this.
	* dzn/templates/c/method-prototypes@trigger: Remove.
	* dzn/templates/c/header-model@foreign: Use method-prototype.
	* dzn/templates/c/method-prototypes@trigger: Rename to...
	* dzn/templates/c/formal-method-prototype@trigger: ...this.

2021-04-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c: Use model namespace prefix throughout.
	Some functions did not use the model namespace and instead used the
	model name as a suffix.

	* dzn/templates/c/call-in-trigger-foreign@trigger,
	dzn/templates/c/call-in-trigger-prototype@trigger,
	dzn/templates/c/call-in-trigger@trigger,
	dzn/templates/c/call-out-trigger-prototype@trigger,
	dzn/templates/c/call-out-trigger@trigger,
	dzn/templates/c/expression@call,
	dzn/templates/c/functions-declarations@function,
	dzn/templates/c/functions@function,
	dzn/templates/c/helper-in-trigger-prototype@trigger,
	dzn/templates/c/helper-in-trigger@trigger,
	dzn/templates/c/method-prototype@trigger,
	dzn/templates/c/method-prototypes@trigger,
	dzn/templates/c/method@trigger,
	dzn/templates/c/trigger-initialization@trigger: Use #x:model-parent-name _
	namespace prefix.
	* test/all/foreign_import_system/c/Foreign.c (w_world_Foreign): Rename
	to...
	(Foreign_w_world): ...this
	* test/all/foreign_optional/c/Foreign.c (w_world_Foreign): Rename
	to...
	(Foreign_w_world): ...this
	* test/all/foreign_reply/c/Foreign.c (w_world_Foreign): Rename
	to...
	(Foreign_w_world): ...this
	* test/all/hello_foreign/c/Foreign.c (w_world_Foreign): Rename
	to...
	(Foreign_w_world): ...this
	* test/all/hello_foreign_file/c/stranger.c (w_world_stranger): Rename
	to...
	(stranger_w_world): ...this.
	* test/all/hello_foreign_path/c/Foreign.c (w_world_Foreign): Rename
	to...
	(Foreign_w_world): ...this
	* test/all/hello_namespace_foreign/c/library_foreign.c (w_world_library_foreign):
	Rename to ...
	(library_foreign_w_world): ...this.

2021-04-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c: Revisit system bindings.
	This rewrites system bindings that only somewhat worked for
	single-system cases.  It also removes redundant port storage in systems
	and makes port structs uniform.

	* dzn/code/c.scm (c:in-events?, c:out-events?, c:filter-in,
	c:filter-out): Remove.
	(internal-binding?): New procedure.
	(c:binding-provided, c:binding-required, c:external-binding,
	c:internal-binding): New methods.
	* dzn/templates/c.scm (binding-provided, binding-required,
	system-port-connect, connect-internal-ports):): Use them to fix system
	bindings.
	(system-port-declaration): New template.
	* dzn/templates/c.scm (in-event-definer, out-event-definer): Use
	standard AST accerrors.
	(in-event-struct-declare, out-event-struct-declare): Remove.
	* dzn/templates/c/connect-internal-ports@bindings: Remove indirection.
	* dzn/templates/c/header-model@interface: Always define in- and out
	structs.
	* dzn/templates/c/in-event-struct-declare@model,
	dzn/templates/c/out-event-struct-declare@model: Remove.
	* dzn/templates/c/source-model@system: Use struct-by-value assignment
	instead of explicit memcpy.  Remove port initialization.  Use
	connect-internal-ports.
	* dzn/templates/c/system-port-connect@binding: Update to fix binding.
	Remove connect-internal-ports.
	* dzn/templates/c/system-port-declaration@port: New file.
	* test/all/hello_system/trace: Add inevitable/requires trace.

2021-04-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c: Fix log_flush warning.
	* dzn/templates/c/main-header@component (log_flush): Use closure.f's
	formal parameter list.

	c: Remove getline warning.
	* dzn/templates/c/main-includes@component: Enable _GNU_SOURCE extensions
	for getline.

	c: Whitepace cleanups.
	* dzn/code/c.scm (c:components): New method.
	* dzn/templates/c.scm (source-model): Use it.
	* dzn/templates/c/main@system: Remove, symlink to...
	* dzn/templates/c/main@component: ...this.
	* dzn/templates/c/source-model@interface: Remove.
	* dzn/templates/c/header-model@component,
	* dzn/templates/c/header@root,
	* dzn/templates/c/source-model@component,
	* dzn/templates/c/source@root: Indent template invocations to remove
	white space.
	* dzn/templates/c/call-in-trigger-foreign@trigger,
	dzn/templates/c/call-in-trigger@trigger,
	dzn/templates/c/call-out-trigger@trigger,
	dzn/templates/c/functions@function,
	dzn/templates/c/initialize@component,
	dzn/templates/c/initialize@foreign,
	dzn/templates/c/main-fill-event-map@component,
	dzn/templates/c/main-header@component: Add missing space.

	c: Remove stray TABs.
	* dzn/templates/c/enum-field-else-if@enum-field,
	dzn/templates/c/initialize@foreign,
	dzn/templates/c/main-content@component,
	dzn/templates/c/main-header@component,
	dzn/templates/c/provided-event-tracing-initialization@port,
	dzn/templates/c/required-event-tracing-initialization@port,
	dzn/templates/c/source-enum-string-function-definition@enum: Do not use TAB.

	test: hello_out_data: Rename from hellooutparam.
	* test/regression/hellooutparam: Rename to...
	* test/regression/hello_out_data: ...this.

	test: hello_namespace_foreign: Update for c.
	* test/all/hello_namespace_foreign/c/library_foreign.c,
	test/all/hello_namespace_foreign/c/library_foreign.h: New files.

2021-04-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_foreign_file: Update for c.
	Test still fails.

	* test/all/hello_foreign_file/c/stranger.h,
	* test/all/hello_foreign_file/c/stranger.c: Update.
	* test/all/hello_foreign_file/META: Skip c.

2021-04-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Update META for async, blocking.
	* test/all/async_shell/META,
	test/all/blocking_shell/META: Skip "c".
	* test/all/blocking_function_reply/META,
	test/all/blocking_if_reply/META,
	test/all/blocking_local/META,
	test/all/indirect_blocking_multiple_external_out/META,
	test/all/indirect_blocking_out/META: Skip c, javascript.

	test: foreign_import_system: Resurrect for c.
	* test/all/foreign_import_system/c/foreign.h: Rename to...
	* test/all/foreign_import_system/c/Foreign.h: ...this.  Update naming.
	* test/all/foreign_import_system/c/foreign.c: Rename to...
	* test/all/foreign_import_system/c/Foreign.c: ...this.  Update naming.

	test: dollars: Resurrect for c.
	* test/all/dollars/c/includes.dzn: New file.

	test: hello_foreign_path: Resurrect for c.
	* test/all/hello_foreign_path/c/Foreign.c: Fix include.

2021-04-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c: Resurrect hello_data.
	* dzn/code/c.scm (c:comma): New method.
	* dzn/templates/c.scm (c-comma): Use it in new template.
	(method-pararm): Rename to...
	(method-formals): ...this.  Use formal-grammar.
	(call-in-function-extra-arguments): Remove.

	* dzn/templates/dzn/comma-infix,
	dzn/templates/c/formal-grammar: Add missing symlinks.
	* dzn/templates/c++/expression@data: Symlink to c++ instead of dzn.
	* dzn/templates/c/call-in-function-extra-arguments@ast,
	dzn/templates/c/call-in-function-extra-arguments@formal:
	* dzn/templates/c/helper-function-extra-arguments@ast: Remove.
	* dzn/templates/c/helper-function-extra-arguments@formal: Rename to...
	* dzn/templates/c/helper-function-arguments@formal: ..this.
	* test/all/hello_data/hello_data.dzn (hello_data): Move local dummy to
	member.  Use it in call.
	* dzn/templates/c/call-in-trigger-foreign@trigger,
	dzn/templates/c/call-in-trigger@trigger: Use #x:comma, #x:code-arguments.

2021-04-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	cs: Suppress unused warning.

2021-04-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update guile-json requirement.
	* doc/dezyne.texi (Requirements): Update to guile-json-4.

2021-04-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	container: c++/cs: Test shells without additional threads.
	* runtime/c++/dzn/container.hh (match): Check for Factor-out...
	(trail_expect): ...this.
	(match_return): Use it.  Remove lock.
	(operator()): Have requires events bypass the pump.
	* runtime/cs/dzn/container.cs: Likewise.
	* test/all/blocking_shell/cs/main.cs (event_map): Remove threds.
	Add sleep for p.outer.foo.
	* test/all/blocking_shell/cs/container.cs: Remove.
	* test/all/blocking_shell/c++/main.cc: Regenerate.
	(event_map): Add sleep for p.outer.foo.
	* test/all/blocking_shell/c++/container.hh: Remove.

2021-04-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Previous release is 2.12.0.
	* Makefile.am (--previous-version): Update to 2.12.0.

2021-06-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc Migrate to Libera.Chat.
	* README (Contact): Update to Libera.Chat.
	* ROADMAP: Likewise.
	* doc/dezyne.texi (Contributing): Likewise.

2021-04-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Post-release update.
	* doc/announce/ANNOUNCE-2.12.0: Update hashes.

	guix: dezyne: Update to 2.12.0.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.12.0.

	doc: Add ANNOUNCE-2.12.0.
	* doc/announce/ANNOUNCE-2.12.0: New file.

	doc: Update 'ROADMAP'.
	* ROADMAP (Release 2.12): Remove review items.  Move XFAIL bugs to...
	(Release 2.13): ...here.

2021-04-15  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	doc: Updates to `NEWS', add references.
	* NEWS: Minor additions/fixes, including references to gitlab.

2021-04-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.12.0.rc3.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.12.0.rc3.

	test: Typo in build.cs.make.
	* test/lib/build.cs.make (RUNTIME_SOURCES): Assign to this instead of
	OUT_SOURCES.

2021-02-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'ROADMAP'.
	* ROADMAP (Release 2.12): Move done items...
	(DONE): ...here.
	(Release 2.13): New section.

2021-03-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS (Changes in 2.12.0 since 2.11.0): New section.

2021-04-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Fix async with a synchronous callback in a shell system.
	* dzn/templates/scheme/declare-async-req-method@trigger: Do not call ack
	directly, use event slot.  Do not flush.
	* runtime/scheme/dzn/runtime.scm (handle): Rename to ...
	(dzn:handle): ...this, and export.
	(call-in, defer, dzn:flush): Update callers.
	* dzn/templates/scheme/declare-async-method@trigger: New file avoid
	logging of `ack'.
	* dzn/templates/scheme/async-port-instance-declare@port: Use it.
	* dzn/templates/scheme.scm (declare-async-method): Declare it.
	* test/all/local.mk (REGRESSION_TESTS): Add async_shell.

2021-04-09  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++/cs: Fix async with a synchronous callback in a shell system.
	Reported by Joran Jessurun <joran.jessurun@gmail.com> via IRC.

	* test/all/async_shell: New test.
	* dzn/templates/c++/async-req-event-slot@trigger: Do not call ack
	directly, use event slot.  Remove flush.
	* dzn/templates/cs/async-req-event-slot@trigger: Likewise.
	* dzn/templates/c++/async-event-slot@trigger: New file to avoid logging
	of 'ack'.
	* dzn/templates/cs/async-event-slot@trigger: Likewise.

2021-04-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Small naming cleanup.
	* dzn/vm/run.scm (extend-trace): Use step instead of stapje.

2021-04-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	vm: Fix flushing.
	Remove static <flush> from the ast.  Always flush self, and only flush
	other instance if it is not handling.  Also, flush before block.

	* dzn/vm/goops.scm (<flush>): Remove.
	* dzn/vm/normalize.scm (transform-action): Remove.
	(vm:normalize): Remove it.
	* dzn/vm/step.scm (begin-step)[runtime:component]: Set handling.
	(step)[flush]: Remove.
	[block]: Flush before blocking.
	[end-of-on]: Only flush other if not 'handling?'.  Also flush self.
	* test/all/system_flush: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-04-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Fix parent of async q-trigger.
	* dzn/vm/step.scm (step-async-action-down): Fix parent.
	* dzn/vm/util.scm (rtc-trigger, rtc-port): New methods.

2021-04-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	peg: Avoid event formals leak into defined variables.
	* dzn/parse/peg.scm (peg:parse)[event]: Add enter-frame, exit-frame
	around formals.
	* test/all/local.mk (PARSER_TESTS): Add it.  Also add missing
	undefined/component/argument.
	* dzn/ast.scm (ast:type): Use and=> rather than compose.
	* test/all/undefined/component/argument_seen: New test.

2021-04-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: undefined/component/argument: Enable; update baseline.
	The current output seems much less nice than the baseline advertised;
	this was the consequence of

	    abf6b714b35b00149af368670c883fa4f6d6d3dd
	    peg: Fix deep backtracking on component-state.dzn.

	* test/all/local.mk (PARSER_TESTS): Add undefined/component/argument.
	* test/all/undefined/component/argument/baseline/verify/argument.stderr:
	Update baseline.

2021-04-12  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify-pipeline: Remove unused parameter.
	* dzn/verify/pipeline.scm (mcrl2:verify-compliance): Remove aut parameter.
	(mcrl2:verify-component-asserts): Update caller.

	explore: Remove supefluous string-hash avoiding potential collisions.
	* dzn/explore.scm (pc->state-number): Remove string-hash.
	(pc->rtc-lts): Likewise.

2021-04-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guile-3.0: Outline pure-funcq.
	This fixes memoization on Guile-3.0.  In Guile-3.0, inner procedures get
	a different pointer address on every invocation.

	* dzn/lts.scm (memoizing-cleanup-label): Move out from...
	(cleanup-aut): ...here.
	* dzn/verify/pipeline.scm (unmemoized-verify-pipeline): Move out from
	...
	(verify-pipeline): ...here.
	(memoizing-verify-pipeline): New procedure.
	(verification:partial): Use unmemoized-verify-pipeline because we want
	stdout? side-effect.

2021-04-08  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	parse: Extend tree:record with missing record types.
	* dzn/parse/tree.scm (tree:record): Add missing types.

	parse: Make --list-models more robust.
	* dzn/commands/parse.scm (list-models): Use fall-back parsing and add
	exception handler.

2021-04-07  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	parse: Have --list-models also show type.
	* dzn/parse/tree.scm (tree?): Change warn to programming warning.
	(tree:component?, tree:foreign? tree:system?): New procedures.
	* dzn/commands/parse.scm (list-models): Use them in new procedure.
	(main): Use it for --list-models.
	* doc/dezyne.texi (Invoking dzn parse): Document it.
	(Invoking dzn): Add missing commands.

2021-04-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parse: List each model in file.
	* dzn/commands/parse.scm (main): Add list-models option.
	* dzn/parse/tree.scm (tree->context): New function.
	(context:collect): New function.
	(context:full-name): New function.
	(context:dotted-name): New function.
	(tree:model*): New function.

2021-04-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Oops, typo in MinGW dzn command.
	* dzn/config.scm.in (%dzn): Oops, remove `%' typo/thinko.

	simulate: Fix for eligible events with --format=trace.
	* dzn/vm/report.scm (report): Oops, handle <end-of-trail> without AST.

	build: Previous release is 2.11.0.
	* Makefile.am (gen-announce): Update to 2.11.0.

2021-04-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	cs: Support blocking_shell
	* test/all/blocking_shell/META: Enable cs execution.
	* test/all/blocking_shell/cs/main.cs: Execute provides in events in
	parallel.
	* test/all/blocking_shell/cs/container.cs: Synchronize additional
	threads with a sleep.
	* test/lib/build.cs.make (OUT_SOURCES): Enable overriding container.cs.

	cs: Add traceQin and traceQout.
	* dzn/templates/cs/event-slot@trigger: Format and add trace-q-out.
	* dzn/templates/cs/trace-q-out@trigger: See above.
	* runtime/cs/dzn/runtime.cs: Trace Q in, add traceQin and traceQout.

2021-04-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.12.0.rc2.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.12.0.rc2.

	language: Support lookup of import.
	* dzn/parse/lookup.scm (resolve-import): New procedure.
	(context-lookup-definition): Use it for import lookups.
	(lookup-definition): Allow import lookups.  Handle 'root' as result.
	* dzn/commands/language.scm: Support looking-up imports.
	* test/dzn/language.scm (resolve-file): New procedure.
	(file-name->text): Use it.
	(test-lookup): Use it.
	("lookup import"): Test import lookup.

2021-04-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	verify: Support --out for large files.
	This fixes running pipelines of zero or one commands with large output.

	* dzn/pipe.scm (pipeline): Add #:output-port parameter.
	(pipeline->port): Use it in new function.
	* dzn/verify/pipeline.scm (verify-pipeline): Add #:stdout? parameter.
	(verification:partial): Use it to eliminate read-string and display.

2021-04-02  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Perform label clean-up after ltsconvert.
	LTSs can become very large (tens of MBs).  After running "ltsconvert",
	the LTS can be orders of magnitute smaller, speeding up the cleanup.

	* dzn/verify/pipeline.scm (in-out.pipeline): Rename "makreel-aut" to
	"maut".  Introduce "maut-weak-trace" and "maut-dpweak-bisim" that take
	the raw makreel input.
	(in-out:makreel-aut->aut): Rename to...
	(in-out:maut->aut): ...this.

2021-04-02  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	explore: Add end-line and end-column to location.
	* dzn/explore.scm (state-diagram->json): Add end-line and end-column to
	location.

2021-04-02  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Memoize verify-pipeline call.
	This has verify-compliance use the already memoized LTS produced by
	verify-component.

	* dzn/verify/pipeline.scm (verify-pipeline): Memoize.
	(in-out:dzn->aut+provides-aut options): Use "verify-component" pipeline
	instead of "aut-failures".

2021-04-02  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	lts: Memoize cleanup-label call.
	* dzn/lts.scm (cleanup-aut)[cleanup-memo]: Wrap cleanup-label in
	pure-funcq.

	explore: Add working-directory to json output.
	* dzn/goops.scm (.working-directory): Export accessor.
	* dzn/explore.scm (state-diagram): Use it to pass working-directory
	to...
	(state-diagram->json): ...here, using new optional working-directory
	parameter.  Add it to output.

2021-04-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	json: Keep foreigns.
	This fixes ctrl-clicking on foreigns in Dezyne-IDE's system diagram.

	* dzn/normalize.scm (remove-location): Keep foreigns.

2021-03-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	explore: Remove "sut" prefix from actions, remove void-return events.
	* dzn/explore.scm (rtc-lts->state-diagram): Remove "sut" prefix from
	actions, remove void-return events.

	explore: Cleanup state label.
	* dzn/vm/util.scm (state->string)[state]: Remove toplevel "sut=".  Remove "sut"
	prefix from state.  Return #f if no state found.
	(state->string)[system-state]: Use filter-map to remove empty states.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.12.0.rc1.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.12.0.rc1.

	test: run-simulate skips simulate.
	* test/dzn/dzn.scm (run-simulate): Check for simulate skip.

	parse: Fix off-by-one line location in pre-processed imports.
	* dzn/parse.scm (string->file+import-content-alist): Include newline in
	imported-match.
	* test/all/parse_locations/baseline/parse_locations,
	* test/all/parse_preprocessed_imported_bar/baseline/verify/parse_preprocessed_imported_bar.stderr:
	Update baseline.

2021-03-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>
	    Rutger van Beusekom  <rutger.van.beusekom@verum.com>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Add working-directory to preprocess output and ast.
	* dzn/parse.scm (file->stream): Add #:dir to preprocess output.
	(file+import-content-alist): Return dir as second value.
	(string->file+import-content-alist): Likewise.
	(string->ast, parse-tree-alist->ast): Add #:working-directory parameter.
	Pass it to...
	* dzn/parse/ast.scm (parse-tree->ast): ...here.  Add #:working-directory
	parameter.  Set it to ...
	* dzn/goops.scm (<root>)[working-directory): ...this new field.
	* test/all/parse_locations/run: Uniquify working-directory.  Update
	baseline.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	normalize: Use record for triples.
	* dzn/normalize.scm (t-triple, t-on, t-guard, t-blocking, t-statement):
	Replace with...
	(<triple>): ...this new type.  Update callers.
	(triples:event-traversal): Rename to ...
	(normalize:event): ...this.
	 (triples:state-traversal): Rename to ...
	(normalize:state): ...this.
	(root->): Update caller.
	* dzn/code.scm (code:om): Update caller.
	* dzn/code/cs.scm (cs:om): Likewise.
	* dzn/code/makreel.scm (makreel:om): Likewise.

	wfc: Outline variable check.
	* dzn/wfc.scm (wfc)[model, variable]: Extract from...
	(wfc)[variable]: ...here.

	Remove Gash import and support for (unpatched) Guile-2.2.
	* gash/pipe.scm: Move to ...
	* dzn/pipe.scm: ...here.
	(forked:pipeline, forked:pipeline->string) Remove, i.e., always depend
	on piped-process.
	(piped-process:pipeline): Rename to...
	(pipeline): ...this.
	(piped-process:pipeline->string): Rename to...
	(pipeline->string): ...this.
	(pipeline*, pipeline*->string): New procedures.
	* configure.ac: Check for pipeline in (ice-9 popen).
	* gash/io.scm,
	gash/job.scm,
	gash/util.scm: Remove.
	* gash/local.mk: Remove.
	* Makefile.am: Remove include.
	* debian/control (Build-Depends): Update to Guile 3.0.
	* doc/dezyne.texi (Requirements): Likewise.

	Update 'AUTHORS'.
	* AUTHORS: Add list of imported files.

	dzn: Simplify command listing.
	* dzn/shell-util.scm (directory-exists?): Return DIR instead of #t.
	* dzn/shell-util.scm (list-directory): New procedure.
	* dzn/script.scm (parse-opts): Use it.

	explore: Handle tau events in state-diagram.
	* dzn/explore.scm (state-diagram->dot, state-diagram->json): Handle tau
	events.

	test: Add silent_unused_out.
	* test/all/silent_unused_out/silent_unused_out.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-03-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	explore: Handle model-not-found and file without model gracefully.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.12.0.rc0.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.12.0.rc0.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger.van.beusekom@verum.com>.

	vm: Remove global for livelock check.
	* dzn/vm/run.scm (livelock-limit): Rename to...
	(%livelock-trace-threshold): ...this, and change to a parameter.
	(livelock?): Update accordingly.

2021-03-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	vm: Only check livelock for traces above a certain (dynamic) threshold.
	This fixes performance degradation.

	* dzn/vm/run.scm (livelock-limit): New global.  (livelock?): Use it as
	trace-threshold.  Return the livelock trace.
	(extend-trace): Use it.
	* dzn/explore.scm: Likewise.

2021-03-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: Add missing parenthesis to function call in interface.

	vm: Avoid duplicate transactions for multiple actions on modeling event.
	* dzn/vm/run.scm (run-requires): Have first action on trace must match.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Memoize run-to-completion when exploring.
	* dzn/vm/run.scm (run-to-completion)[event]: Rename to...
	(run-to-completion-unmemoized): ...this.
	(run-to-completion): New generic procedure.  Memoize result
	when (%exploring?).
	* dzn/vm/run.scm (run-flush, run-async-event): Use
	run-to-completion-unmemoized.

	test: Add illegal_garbage.
	* test/all/illegal_garbage: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	simulate: Exit at toplevel.
	* dzn/vm/report.scm (report): Do not exit, return status.
	* dzn/simulate.scm (run-trail): Return last status.
	* dzn/commands/simulate.scm (main): Exit here instead.

2021-03-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Support compliance in blocking context.
	The compliance was disabled for blocking contexts, as compliance can
	only be checked after a system-run-to-completion, i.e., when the
	component is unblocked again.  This patch keeps the trail while in
	blocking context and postpones the compliance check until
	system-run-to-completion.

	* dzn/vm/goops.scm (<end-of-trail>): Inherit from <status> instead of
	<error>.
	* dzn/vm/report.scm (initial-error-message): Remove dead code.
	(final-error-messages): Only display info for <end-of-trail> when AST is
	set, i.e. when we stop midway a run-to-completion.
	(report): Do not exit; return status.
	* dzn/commands/simulate.scm (main): Instead, exit here.
	* dzn/simulate.scm (check-provides-compliance): For blocking context,
	use first event on trail.
	(run-component): Remove.  Move compliance check...
	(run-sut): ...here.  Change signature to take pc+blocked trace instead
	of pc.
	(run-trail): Update accordingly: For blocking context, do not report
	intermediate trail; instead hand it back to run-sut.
	* test/all/local.mk (XFAIL_TESTS): Remove compliance_blocking_out.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Report eligible events.
	* dzn/simulate.scm (event-traces-alist, is-not-deadlock?): New
	methods, factor-out from...
	(check-deadlock): ...here.
	(eligible-labels): New method.
	(run-sut): Remove #:deadlock-check? parameter, move deadlock check...
	(run-trail): ...here.  Use eligible-labels to forward eligible to ...
	* dzn/vm/report.scm (report): ...here, using new #:eligible
	parameter.  Report eligible events at end of trace.

2021-03-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	explore: Refactor; factor-out duplicated explore.
	* dzn/explore.scm (pc->state-number): New procedure.
	(pc->rtc-lts): New procedure, factor-out from...
	(explore): ...this.  Rename to...
	(rtc-lts->state-diagram): ...this and rewrite to take an rtc-lts.
	(state-diagram->dot): Update accordingly.
	(state-diagram->json): Likewise.
	(explore-lts): Rename to...
	(rtc-lts->lts): ...this, remove exploration and and rewrite to work take
	an rtc-lts.
	(graph->lts): Rename to...
	(lts->aut): ...this and rewrite.
	(lts, state-diagram): Update accordingly.
	* dzn/vm/util.scm (pc->string): Split <error> into <illegal> and
	<deadlock>.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Enable queuefull tests in run-lts, run-simulate.
	    * test/dzn/dzn.scm (run-lts, run-simulate): Do not skip queuefull.

	test: Skip lts for failing queuefull tests.
	* test/all/queuefull_component0/META,
	test/all/queuefull_external_sync/META: Skip lts.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Support queue-size.
	TODO
	     FAIL: test/all/illegal_external (LTS)
	     FAIL: test/all/illegal_external_nonsynchronous2 (LTS)
	     FAIL: test/all/livelock_component2 (LTS)
	     FAIL: test/all/livelock_synchronous (LTS)
	     FAIL: test/all/livelock_synchronous2
	    +FAIL: test/all/queuefull_component0 (LTS)
	    +FAIL: test/all/queuefull_external_sync (LTS)

	* dzn/vm/goops.scm (<queue-full-error>)[instance]: New field.
	* dzn/vm/report.scm (initial-error-message): Use it.
	* dzn/vm/util.scm (%queue-size): New parameter.
	(enqueue): Use it and add ast parameter.
	(enqueue-external): Use it.
	* dzn/vm/step.scm (step-action-up): Update callers.
	* dzn/commands/explore.scm (parse-opts): Support -q,--queue-size=SIZE.
	(main): Pass it to...
	* dzn/explore.scm (state-diagram, lts): ...here, using new #:queue-size
	parameter.  Use it to set %queue-size.
	* dzn/commands/simulate.scm (parse-opts): Support -q,--queue-size=SIZE.
	(main): Pass it to...
	* dzn/simulate.scm (simulate): ...here, using new #:queue-size
	parameter.  Pass it to...
	(simulate): ...here, using new #:queue-size
	parameter.  Use it to set %queue-size.
	* doc/dezyne.texi (Invoking dzn explore),
	(Invoking dzn simulate): Document it.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: queuefull_component0: Add trace and simulate baseline.
	* test/all/queuefull_component0/queuefull_component0.dzn (queuefull_component0):
	Rewrite in hello meme.
	* test/all/queuefull_component0/baseline/verify/queuefull_component0: Update.
	* test/all/queuefull_component0/trace,
	test/all/queuefull_component0/baseline/simulate/queuefull_component0,
	test/all/queuefull_component0/baseline/simulate/queuefull_component0.stderr:
	New files.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: Add --format=trace.
	This adds detailed simulator output trace in "broken arrow" format,
	a.k.a. micro trace:

	    (header ((h) ihello provides) ((sut) helloworld component) ((w) iworld requires))
	    (state ((h)) ((sut)) ((w)))
	    <external>.h.hello -> ...
	    ... -> sut.h.hello
	    sut.w.world -> ...
	    ... -> <external>.w.world
	    ... <- <external>.w.return
	    sut.w.return <- ...
	    ... <- sut.h.return
	    <external>.h.return <- ...
	    (state ((h)) ((sut)) ((w)))
	    (trail h.hello w.world w.return h.return)
	    (eligible h.hello)

	that can optionally be prefixed by Dezyne source code locations.

	* dzn/vm/goops.scm (<trigger-return-trace>): New class.
	* dzn/vm/report.scm (statement->string): Support it.
	(trace-step?, display-trace): New methods.
	(report): Add #:header, #:trace, #:locations, and #:verbose parameters.
	Use them to invoke display-trace.
	* dzn/vm/util.scm (get-state)[system-state]: Factor-out from...
	(get-state)[program-counter]: ...here.
	(serialize-header)[state]: Change to...
	(serialize-header)[runtime:instance]: ...this.
	* dzn/commands/simulate.scm (parse-opts): Add -f,--format;
	-L,--locations; -v,--verbose.
	(main): Pass them to...
	* dzn/simulate.scm (simulate): ...here, using new
	parameters #:trace, #:locations, #verbose.  Likewise, pass to ...
	(run-trail): ...here.
	* doc/dezyne.texi (Invoking dzn simulate): Document it.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Enable external tests in run-lts, run-simulate.
	* test/dzn/dzn.scm (run-lts, run-simulate): Do not skip external.

	test: Skip lts for failing external tests.
	* test/all/illegal_external/META,
	test/all/illegal_external_nonsynchronous/META,

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Support external.
	TODO:
	    +FAIL: test/all/illegal_external (LTS)
	    +FAIL: test/all/illegal_external_nonsynchronous2 (LTS)
	     FAIL: test/all/livelock_component2 (LTS)
	     FAIL: test/all/livelock_synchronous (LTS)
	     FAIL: test/all/livelock_synchronous2

	* dzn/vm/goops.scm (<queue-full-error>): New class.
	(<program-counter>)[external-q]: New field.
	(external-q->string): New procedure.
	(write): Use it.
	* dzn/vm/util.scm (enqueue-external, dequeue-external): New methods.
	(pc->string): Add external queue.
	* dzn/vm/step.scm (step-action-up): Use external-q for external ports.
	(step)[block]: Copy #:external too.
	* dzn/vm/run.scm (non-deterministic?): Use pc->string instead of
	serialize-state.
	(run-silent): For external ports, allow non-silent traces too.
	(external-event?, run-external-q, run-external): New methods.
	(run-to-completion*): Use them.
	* dzn/explore.scm (process-external): New method.
	(run-to-completion**): Use it.  Update pseudo-event
	`#f' to 'async and 'external pseudo events.
	(explore, explore-lts): Update to use 'async and 'external labels.
	* dzn/vm/report.scm (trace->trail)[action,q-out]: Notice events on
	external port.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Memoize runtime:other-port.
	* dzn/vm/runtime.scm (runtime:other-port): Rename to...
	(runtime:other-port-): ...this.
	(runtime:other-port): New pure-funq'ed procedure.

	vm: Add specializations for ast:provides?, ast:requires?.
	* dzn/vm/ast.scm (ast:provides?)[runtime:port, instance]: New
	specializations.
	(ast:provides?)[runtime:port, instance]: Likewise.

	test: Enable livelock tests in run-lts, run-simulate.
	* test/dzn/dzn.scm (run-lts, run-simulate): Do not skip livelock.

	test: Mark livelock tests XFAIL.
	* test/all/local.mk (XFAIL_TESTS): Add livelock_component2,
	livelock_synchronous, livelock_synchronous2.

	test: livelock_component2: Add simulate baseline.
	* test/all/livelock_component2/baseline/simulate/livelock_component2,
	test/all/livelock_component2/baseline/simulate/livelock_component2.stderr:
	New files.

2021-03-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	vm: Add async livelock check.
	* dzn/vm/run.scm (mark-livelock-error): Export.
	* dzn/explore.scm (check-mark-livelock): Use it in new procedure.
	(flush-async-trace): Use it.
	(flush-async): Add previous-trace parameter.
	(run-to-completion**): Update caller.
	* dzn/vm/util.scm (vm:ast:eq?)[trigger-return]: New specialization.

2021-03-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	vm: Add livelock check.
	TODO:
	    +FAIL: test/all/livelock_component2 (LTS)
	    +FAIL: test/all/livelock_synchronous (LTS)
	    +FAIL: test/all/livelock_synchronous2

	* dzn/vm/goops.scm (<livelock-error>): New class.
	* dzn/vm/util.scm (pc:eq?, vm:ast:eq?): New methods.
	(mark-livelock-error, livelock?): New procedures.
	(extend-trace): Use them to detect livelock.
	* dzn/vm/run.scm (mark-livelock-error, livelock?): New procedures.
	(extend-trace): Use them.
	* test/all/livelock_recurse/trace,
	test/all/livelock_synchronous2: New tests.
	* test/all/local.mk (REGRESSION_TESTS): Add them.
	* dzn/vm/util.scm (state->string): Add queue.
	* test/all/livelock_synchronous/trace,
	test/all/livelock_synchronous/baseline/simulate/livelock_synchronous:
	Extend trace.
	* test/all/livelock_interface0,
	test/all/livelock_recurse: Update baseline.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	vm: Implement call/return elimination.
	* dzn/vm/step.scm (step)[call]: For tail calls: pop before calling.

	test: Enable deadlock tests in run-lts, run-simulate.
	* test/dzn/dzn.scm (run-lts, run-simulate): Do not skip deadlock.

	vm: Add deadlock check.
	* dzn/vm/goops.scm (<deadlock-error>): New class.
	* dzn/commands/simulate.scm (parse-opts): Add -D,--no-deadlock
	parameter.
	(main): Pass it to...
	(simulate*): ...here, using new #:deadlock-check? parameter, and pass
	it to...
	(simulate): ...here, using new #:deadlock-check parameter, and pass it
	to ...
	(run-sut): here, using new #:deadlock-check? parameter.  Use to call...
	(check-deadlock): ...this new method.
	(event->label-traces): New method.
	* dzn/vm/report.scm (final-error-messages): Report <blocked-error> as
	"deadlock" in trace.
	* doc/dezyne.texi (Invoking dzn simulate): Document it.

	test: Add run-lts stage.
	* test/dzn/dzn.scm (run-traces): Add --lts.  Do not skip when there is
	a handwritten trace.  Use --traces when there is no handwritten trace.
	(run-lts): New procedure.  Skip not-supported tests: deadlock, external,
	livelock, queuefull.
	(run-test): Use it.

	explore --state-diagram: Use --format=json to generate P5.
	* dzn/explore.scm (graph->json): New procedure.
	(state-diagram): Add #:format parameter.
	* dzn/commands/explore.scm (parse-opts): Add -f,--format option.
	(main): Pass it.

	explore: Support async.
	* dzn/explore.scm (process-async, did-provides-out?): New procedures.
	(flush-async): New method.
	(run-to-completion**): Use it.
	(explore): Apply also label #f.
	(explore-lts): Likewise.
	* dzn/vm/util.scm (pc->string): Add async queue.

	test: hello_interface: Do not skip lts.
	* test/all/hello_interface/META: Do not skip lts.

	explore: Refactor graph->lts.
	* dzn/explore.scm (graph->lts): Avoid car, cdr, etc.

2021-03-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	explore: Add --lts.
	* dzn/vm/util.scm (pc->string): Make all error states the same, add
	blocked ports.
	* dzn/explore.scm (graph->lts, lts): New procedures.
	* dzn/commands/explore.scm (parse-opts): Add --lts, --state-diagram
	options.
	(main): Use them.
	* doc/dezyne.texi (Invoking dzn explore): Mention it.
	(Invoking dzn lts, Invoking dzn traces): Add a reference.

2021-03-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	explore: New command.
	* dzn/vm/util.scm (pc->string, pc->hash): New methods.
	* dzn/explore.scm: New file.
	* dzn/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/commands/explore.scm: New file.
	* dzn/commands/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/vm/run.scm (%exploring?): New parameter.
	(non-deterministic?): Use it to disable deterministism check.
	(run-to-completion, run-flush): run-async-event): Use it to skip illegal
	filtering.
	* doc/dezyne.texi (Invoking dzn explore): New section.
	* Makefile.am (dist_man_MANS): Build explore manual page.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Enable blocking tests in run-simulate.
	* test/dzn/dzn.scm (run-simulate): Do not skip blocking.

2021-03-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simulate: Support blocking.
	Compliance in blocking context is not supported.

	* dzn/vm/goops.scm (<block>): New class.
	(<program-counter>)[blocked,released?]: New fields.
	(write): Show them when they are interesting.
	* dzn/vm/normalize.scm (transform-action, transform-end-of-rule,
	transform-return): Cater for <blocking>.
	(set-blocking-reply-port): New procedure.
	(vm:normalize): Use it.
	* dzn/vm/step.scm (step)[trigger-return,end-of-rule,reply]: Cater
	for blocking.
	[block]: New specialization.
	* dzn/vm/step.scm (begin-step): Set error when port is blocked.
	(step)[reply]: Release port.
	(step)[blocking,block,unblock]: New specializations.
	(step)[end-of-on]: Handle release.
	(continuation)[blocking]: New specialization.
	* dzn/vm/run.scm (run-provides): Skip provides-compliance when
	a port is blocked.
	* test/all/local.mk (XFAIL_TESTS): Add compliance_blocking_out.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Enable async tests in run-simulate.
	* test/dzn/dzn.scm (run-simulate): Do not skip async.

	simulate: Support async.
	* dzn/vm/goops.scm (<flush-async>): New class.
	(<program-counter>)[async]: New field.
	(write): Display it, if non-empty.
	* dzn/vm/step.scm (step)[action,trigger-return]: Cater for async
	ports.
	[flush-async]: New specialization.
	* dzn/vm/run.scm (run-async-event, run-async): New methods.
	(run-to-completion*): Cater for async events.
	* dzn/vm/ast.scm (ast:async?)[port,action,trigger]: New
	specializations.
	* dzn/vm/report.scm (trace->trail)[action,trigger-return]:
	Cater for async ports.

	test: Add run-simulate stage.
	* test/dzn/dzn.scm (filter-<flush>, filter-state): New procedures.
	(run-execute): Use them.
	(verify-only?): Rename to ...
	(error-model?): ...this.  Also check for simulate baseline.  Update
	users.
	(run-simulate-trace): New procedure.
	(run-simulate): Use it in new procedure.  Skip not-supported tests:
	async, block, deadlock, external, livelock, and queuefull.
	(run-test): Use it.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Update for simulate's new typed s-exp events.
	The simulator now prefixes s-expr events with their type:
	eligible, header, labels, state, trail.

	* dzn/commands/trace.scm (state->string): Add 'state prefix.
	(main): Default to "event".
	(parse-opts): Mention that.
	(trace:trace->steps): Add #:debug? parameter.
	(<eligible>,<header>,<labels>,<state>,<trail>): New types.
	(step->communication): Use them to allow new simulate events.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	simulate: New command.
	This commit resurrects some historical work from the previous system
	simulator project (step): evaluate, normalize, runtime, some utils.

	On top of that it adds ’vm’: a fresh approach that provides a
	reasonable alternative to the failed ’step’ project, enabling a rather
	straightforward implementation of blocking, async, deadlock, livelock,
	and external.

	* dzn/simulate.scm: New file.
	* dzn/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/commands/simulate.scm: New file.
	* dzn/commands/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/goops (.variable.name)[var]: New specialization.
	* dzn/ast.scm (ast:in?)[action]: New specialization.
	(ast:out?)[action]: Likewise.
	(ast:typed?)[type]: New specialization.
	(ast:typed?)[void]: New specialization.
	(ast:equal?): Fallback to equal?
	(ast:acceptance*): Move to
	* dzn/vm/ast.scm): ...new file here.
	* dzn/vm/evaluate.scm,
	dzn/vm/goops.scm,
	dzn/vm/normalize.scm,
	dzn/vm/report.scm,
	dzn/vm/runtime.scm,
	dzn/vm/run.scm,
	dzn/vm/step.scm,
	dzn/vm/util.scm: New files.
	* dzn/vm/local.mk: New file; add them.
	* Makefile.am: Include it.
	(dist_man_MANS): Build simulate manual page.
	* doc/dezyne.texi (Invoking dzn simulate): New section.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Use location for ast-list.
	* dzn/ast.scm (ast:location)[ast-list]: Use .location field if avaialable.

	test: Remove METAs for "run".
	* test/all/compliance_provides_illegal4/META,
	test/all/compliance_provides_illegal5/META,
	test/all/missing_reply/META,
	test/all/range_action/META,
	test/all/range_argument/META,
	test/all/range_assign/META,
	test/all/range_declaration/META,
	test/all/range_declaration_expression/META,
	test/all/range_expression/META,
	test/all/range_function/META,
	test/all/range_local/META,
	test/all/range_member/META,
	test/all/range_return/META,
	test/all/second_reply/META: Remove.

	test: Update foreign traces.
	* test/all/foreign_namespace/trace,
	test/all/hello_foreign_file/trace: Add foreign events.
	* test/all/hello_foreign/trace: Remove second round.

	test: Add compliance_blocking_out.
	* test/all/compliance_blocking_out: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add illegal_silent.
	* test/all/illegal_silent: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add compliance_implicit_illegal.
	* test/all/compliance_implicit_illegal: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add deadlock_implicit.
	* test/all/deadlock_implicit: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

	test: illegal_external: Avoid queue-full.
	* test/all/illegal_external/illegal_external.dzn (illegal_external):
	Trigger illegal only; synchronous queue-full is already tested in
	queuefull_external_sync.

	test: illegal_external: Rename from illegal_hello_external.
	* test/all/illegal_hello_external: Rename to...
	* test/all/illegal_external: ...this.
	* test/all/local.mk (HELLO_TESTS): Move to...
	(REGRESSION_TESTS): ..to here.

	test: Add compliance_external.
	* test/all/compliance_external: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

	test: Add hello_external.
	* test/all/hello_external/hello_external.dzn: New test.
	* test/all/local.mk (HELLO_TESTS): Add it.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_nonsynchronous_sync: Rename from compliance_external_asynchronous_sync.
	This component tests neither async, nor external.

	* test/all/compliance_external_asynchronous_sync: Rename to...
	* test/all/compliance_nonsynchronous_sync: ...this.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_single_to_multiple: Rename from hello_single_to_multiple.
	* test/all/hello_single_to_multiple: Rename to...
	* test/all/compliance_single_to_multiple: ...this.

	test: Add hello_nondet_reply.
	* test/all/hello_nondet_reply/hello_nondet_reply.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add foreign_reply.
	* test/all/foreign_reply/foreign_reply.dzn,
	test/all/foreign_reply/iworld.dzn,
	test/all/foreign_reply/c++/Foreign.hh,
	test/all/foreign_reply/c/Foreign.h,
	test/all/foreign_reply/c/Foreign.c,
	test/all/foreign_reply/cs/Foreign.cs,
	test/all/foreign_reply/javascript/Foreign.js,
	test/all/foreign_reply/scheme/Foreign.scm,
	test/all/foreign_reply/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-03-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add external_requires_twice, and failures.
	* test/all/external_requires_twice,
	test/all/illegal_requires_twice,
	test/all/illegal_external_requires_twice2: New tests.
	* test/all/local.mk (REGRESSION_TESTS): Add them.
	* test/error/illegal_exter_requires_twice,
	test/error/illegal_exter_requires_twice2: New symlinks.
	* test/external: New directory with symlinks.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add foreign_optional.
	The generated main('s event map) does not handle foreign events, in
	fact, events with multiple dots are ignored.

	* test/all/foreign_optional/foreign_optional.dzn,
	test/all/foreign_reply/iworld.dzn,
	test/all/foreign_reply/c++/Foreign.hh,
	test/all/foreign_reply/c++/main.cc,
	test/all/foreign_reply/c/Foreign.h,
	test/all/foreign_reply/c/Foreign.c,
	test/all/foreign_reply/c/main.c,
	test/all/foreign_reply/cs/Foreign.cs,
	test/all/foreign_reply/cs/main.cs,
	test/all/foreign_reply/javascript/Foreign.js,
	test/all/foreign_reply/javascript/main.js,
	test/all/foreign_reply/scheme/Foreign.scm,
	test/all/foreign_reply/scheme/main.scm,
	test/all/foreign_reply/trace: New files.
	test/all/foreign_optional/trace: New files.
	* test/all/local.mk (REGRESSION_TESTS): Add test.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add deadlock_port_blocked.
	* test/all/deadlock_port_blocked/baseline/simulate/deadlock_port_blocked,
	test/all/deadlock_port_blocked/baseline/simulate/deadlock_port_blocked.stderr,
	test/all/deadlock_port_blocked/deadlock_port_blocked.dzn: New files.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Import semantic examples from documentation.
	* test/all/direct_in/direct_in.dzn,
	test/all/direct_in/trace: New files.

	* test/all/direct_out/direct_out.dzn,
	test/all/direct_out/trace: New files.

	* test/all/external_multiple_out/external_multiple_out.dzn,
	test/all/external_multiple_out/trace: New files.

	* test/all/indirect_blocking_multiple_external_out/indirect_blocking_multiple_external_out.dzn,
	test/all/indirect_blocking_multiple_external_out/trace: New files.

	* test/all/indirect_blocking_out/indirect_blocking_out.dzn,
	test/all/indirect_blocking_out/trace: New files.

	* test/all/indirect_in/indirect_in.dzn,
	test/all/indirect_in/trace: New files.

	* test/all/indirect_multiple_out1/indirect_multiple_out.dzn,
	* test/all/indirect_multiple_out1/indirect_multiple_out1.dzn,
	test/all/indirect_multiple_out1/trace: New files.

	* test/all/indirect_multiple_out2/indirect_multiple_out.dzn,
	test/all/indirect_multiple_out2/indirect_multiple_out2.dzn,
	test/all/indirect_multiple_out2/trace: New files.

	* test/all/indirect_multiple_out3/indirect_multiple_out.dzn,
	test/all/indirect_multiple_out3/indirect_multiple_out3.dzn,
	test/all/indirect_multiple_out3/trace: New files.

	* test/all/indirect_out/indirect_out.dzn,
	test/all/indirect_out/trace: New files.

	* test/all/local.mk: (SEMANTIC_TESTS): New variable.
	(FULL_TESTS): Add it.

	* test/semantics/direct_in/,
	test/semantics/direct_multiple_out1/,
	test/semantics/direct_multiple_out2/,
	test/semantics/direct_out/,
	test/semantics/external_multiple_out/,
	test/semantics/indirect_blocking_multiple_external_out/,
	test/semantics/indirect_blocking_out/,
	test/semantics/indirect_multiple_out1/,
	test/semantics/indirect_multiple_out2/,
	test/semantics/indirect_multiple_out3/,
	test/semantics/indirect_out/: New symlinks.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_external_asynchronous_sync: Add trace.
	* test/all/compliance_external_asynchronous_sync/trace: New file.

	test: queuefull_external_sync: Add trace and simulate baseline.
	* test/all/queuefull_external_sync/trace,
	* test/all/queuefull_external_sync/baseline/simulate/queuefull_external_sync,
	* test/all/queuefull_external_sync/baseline/simulate/queuefull_external_sync.stderr:
	New files.

2021-03-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: livelock_interface0: Add simulate trace and baseline.
	* test/all/livelock_interface0/trace,test/all/livelock_interface0/baseline/simulate/livelock_interface0
	test/all/livelock_interface0/baseline/simulate/livelock_interface0.stderr: New files.

	test: illegal_hello_external: Add simulate trace and baseline.
	* test/all/illegal_hello_external/trace,test/all/illegal_hello_external/baseline/simulate/illegal_hello_external
	test/all/illegal_hello_external/baseline/simulate/illegal_hello_external.stderr: New files.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: illegal_external_nonsynchronous: Rename from illegal_external_asynchronous2.
	* test/all/illegal_external_asynchronous2: Rename to...
	* test/all/illegal_external_nonsynchronous: ...this.

2021-03-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: illegal_external_asynchronous2: Add simulate trace and baseline.
	* test/all/illegal_external_asynchronous2/trace,test/all/illegal_external_asynchronous2/baseline/simulate/illegal_external_asynchronous2
	test/all/illegal_external_asynchronous2/baseline/simulate/illegal_external_asynchronous2.stderr: New files.

	test: illegal_component0: Add simulate trace and baseline.
	* test/all/illegal_component0/trace,test/all/illegal_component0/baseline/simulate/illegal_component0
	test/all/illegal_component0/baseline/simulate/illegal_component0.stderr: New files.

	test: hello_single_to_multiple: Add simulate trace and baseline.
	* test/all/hello_single_to_multiple/trace,
	test/all/hello_single_to_multiple/baseline/simulate/hello_single_to_multiple
	test/all/hello_single_to_multiple/baseline/simulate/hello_single_to_multiple.stderr: New files.

	test: deadlock_interface_out_only: Add simulate trace and baseline.
	* test/all/deadlock_interface_out_only/trace,test/all/deadlock_interface_out_only/baseline/simulate/deadlock_interface_out_only
	test/all/deadlock_interface_out_only/baseline/simulate/deadlock_interface_out_only.stderr: New files.

	test: deadlock_interface1: Add simulate trace and baseline.
	* test/all/deadlock_interface1/trace,test/all/deadlock_interface1/baseline/simulate/deadlock_interface1
	test/all/deadlock_interface1/baseline/simulate/deadlock_interface1.stderr: New files.

	test: deadlock_interface0: Add simulate trace and baseline.
	* test/all/deadlock_interface0/trace,test/all/deadlock_interface0/baseline/simulate/deadlock_interface0
	test/all/deadlock_interface0/baseline/simulate/deadlock_interface0.stderr: New files.

	test: deadlock_component1: Add simulate trace and baseline.
	* test/all/deadlock_component1/trace,test/all/deadlock_component1/baseline/simulate/deadlock_component1
	test/all/deadlock_component1/baseline/simulate/deadlock_component1.stderr: New files.

	test: deadlock_component0: Add simulate trace and baseline.
	* test/all/deadlock_component0/trace,test/all/deadlock_component0/baseline/simulate/deadlock_component0
	test/all/deadlock_component0/baseline/simulate/deadlock_component0.stderr: New files.

	test: deadlock_blocking_inevitable: Add simulate trace and baseline.
	* test/all/deadlock_blocking_inevitable/trace,test/all/deadlock_blocking_inevitable/baseline/simulate/deadlock_blocking_inevitable
	test/all/deadlock_blocking_inevitable/baseline/simulate/deadlock_blocking_inevitable.stderr: New files.

	test: deadlock_blocking_guard: Add simulate trace and baseline.
	* test/all/deadlock_blocking_guard/trace,test/all/deadlock_blocking_guard/baseline/simulate/deadlock_blocking_guard
	test/all/deadlock_blocking_guard/baseline/simulate/deadlock_blocking_guard.stderr: New files.

	test: compliance_provides_int: Add simulate trace and baseline.
	* test/all/compliance_provides_int/trace,test/all/compliance_provides_int/baseline/simulate/compliance_provides_int
	test/all/compliance_provides_int/baseline/simulate/compliance_provides_int.stderr: New files.

	test: compliance_out_inevitable_illegal: Add simulate trace and baseline.
	* test/all/compliance_out_inevitable_illegal/trace,test/all/compliance_out_inevitable_illegal/baseline/simulate/compliance_out_inevitable_illegal
	test/all/compliance_out_inevitable_illegal/baseline/simulate/compliance_out_inevitable_illegal.stderr: New files.

	test: compliance_out_inevitable: Add simulate trace and baseline.
	* test/all/compliance_out_inevitable/trace,test/all/compliance_out_inevitable/baseline/simulate/compliance_out_inevitable
	test/all/compliance_out_inevitable/baseline/simulate/compliance_out_inevitable.stderr: New files.

	test: compliance0: Add trace and simulate baseline.
	* test/all/compliance0/trace,
	* test/all/compliance0/baseline/simulate/compliance0,
	* test/all/compliance0/baseline/simulate/compliance0.stderr: New files.

	test: livelock_component1: Remove verify baseline.
	* test/all/livelock_component1/baseline/verify: Remove.

	test: livelock_component0: Remove verify baseline.
	* test/all/livelock_component0/baseline/verify: Remove.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: second_reply_blocking: Add simulate baseline.
	* test/all/second_reply_blocking/baseline/simulate/second_reply_blocking,
	* test/all/second_reply_blocking/baseline/simulate/second_reply_blocking.stderr:
	New files.
	* test/all/second_reply_blocking/SimpleBlockingTwoReply.trace: Rename to...
	* test/all/second_reply_blocking/trace: ...this.

	test: second_reply: Add trace and simulate baseline.
	* test/all/second_reply/trace,
	* test/all/second_reply/baseline/simulate/second_reply,
	* test/all/second_reply/baseline/simulate/second_reply.stderr: New
	files.

	test: range_return: Add trace and simulate baseline.
	* test/all/range_return/trace,
	* test/all/range_return/baseline/simulate/range_return,
	* test/all/range_return/baseline/simulate/range_return.stderr: New
	files.

	test: range_member: Add trace and simulate baseline.
	* test/all/range_member/trace,
	* test/all/range_member/baseline/simulate/range_member,,
	* test/all/range_member/baseline/simulate/range_member.stderr: New files.

	test: range_local: Add trace and simulate baseline.
	* test/all/range_local/trace,
	* test/all/range_local/baseline/simulate/range_local,
	* test/all/range_local/baseline/simulate/range_local.stderr: New files.

	test: range_function: Add trace and simulate baseline.
	* test/all/range_function/trace,
	* test/all/range_function/baseline/simulate/range_function,
	* test/all/range_function/baseline/simulate/range_function.stderr: New
	files.

	test: range_expression: Add trace and simulate baseline.
	* test/all/range_expression/trace,
	* test/all/range_expression/baseline/simulate/range_expression,
	* test/all/range_expression/baseline/simulate/range_expression.stderr:
	New files.

	test: range_declaration_expression: Add trace and simulate baseline.
	* test/all/range_declaration_expression/trace,
	* test/all/range_declaration_expression/baseline/simulate/range_declaration_expression,
	* test/all/range_declaration_expression/baseline/simulate/range_declaration_expression.stderr:
	New files.

	test: range_declaration/trace: Add trace and simulate baseline.
	* test/all/range_declaration/trace,
	test/all/range_declaration/baseline/simulate/range_declaration,
	test/all/range_declaration/baseline/simulate/range_declaration.stderr:
	New files.

	test: range_argument: Add trace and simulate baseline.
	* test/all/range_argument/trace,
	* test/all/range_argument/baseline/simulate/range_argument,
	* test/all/range_argument/baseline/simulate/range_argument.stderr: New
	files.

	test: range_action: Add trace and simulate baseline.
	* test/all/range_action/trace,
	* test/all/range_action/baseline/simulate/range_action,
	* test/all/range_action/baseline/simulate/range_action.stderr: New files.

	test: missing_reply: Add trace and simulate baseline.
	* test/all/missing_reply/trace,
	test/all/missing_reply/baseline/simulate/missing_reply,
	test/all/missing_reply/baseline/simulate/missing_reply.stderr: New files.

	test: livelock_component: Add trace.
	* test/all/livelock_component2/trace: New file.

	test: integer_expressions: Actually test !=.
	* test/all/integer_expressions/integer_expressions.dzn: Fail if != fails.

	test: illegal_system_requires: Update trace, add baseliine.
	test/all/illegal_system_requires/baseline/debug/trace,
	test/all/illegal_system_requires/baseline/debug/trace.stderr: Remove.
	* test/all/illegal_system_requires/trace: Remove trailing illegal.
	* test/all/illegal_system_requires/baseline/simulate/illegal_system_requires,
	test/all/illegal_system_requires/baseline/simulate/illegal_system_requires.stderr,
	* test/all/illegal_system_requires/baseline/verify/illegal_system_requires: New files.
	* test/all/illegal_system_requires/META: Remove.

	test: illegal_requires_out: Add simulate baseliine.
	* test/all/illegal_requires_out/baseline/debug/trace,
	test/all/illegal_requires_out/baseline/debug/trace.stderr: Remove.
	* test/all/illegal_requires_out/baseline/simulate/illegal_requires_out,
	test/all/illegal_requires_out/baseline/simulate/illegal_requires_out.stderr:
	New file.

	test: illegal_requires2: Update trace, add simulate baseliine.
	* test/all/illegal_requires2/baseline/debug/trace,
	test/all/illegal_requires2/baseline/debug/trace.stderr: Remove.
	* test/all/illegal_requires2/trace: Update.
	* test/all/illegal_requires2/baseline/simulate/illegal_requires2,
	test/all/illegal_requires2/baseline/simulate/illegal_requires2.stderr:
	New files.

	test: illegal_requires: Update trace, add simulate baseliine.
	* test/all/illegal_requires/baseline/debug/trace,
	test/all/illegal_requires/baseline/debug/trace.stderr: Remove.
	* test/all/illegal_requires/trace: Update.
	* test/all/illegal_requires/baseline/simulate/illegal_requires,
	test/all/illegal_requires/baseline/simulate/illegal_requires.stderr: New
	files.

	test: illegal_provides: Add simulate baseliine.
	* test/all/illegal_provides/baseline/debug/trace,
	test/all/illegal_provides/baseline/debug/trace.stderr: Remove.
	* test/all/illegal_provides/baseline/simulate/illegal_provides,
	test/all/illegal_provides/baseline/simulate/illegal_provides.stderr: New file.

	test: determinism1: Add simulate trace and baseliine.
	* test/all/determinism1/trace,
	test/all/determinism1/baseline/simulate/determinism1,
	test/all/determinism1/baseline/simulate/determinism1.stderr: New files.

	test: determinism0: Add simulate trace and baseliine.
	* test/all/determinism0/trace,
	test/all/determinism0/baseline/simulate/determinism0,
	test/all/determinism0/baseline/simulate/determinism0.stderr: New files.

	test: compliance_requires_illegal: Add simulate baseline.
	* test/all/compliance_requires_illegal/baseline/debug/trace,
	test/all/compliance_requires_illegal/baseline/debug/trace.stderr: Remove.
	* test/all/compliance_requires_illegal/baseline/simulate/compliance_requires_illegal,
	test/all/compliance_requires_illegal/baseline/simulate/compliance_requires_illegal.stderr:
	New file.

	test: compliance_provides_out: Add simulate baseline.
	* test/all/compliance_provides_out/baseline/debug/trace,
	test/all/compliance_provides_out/baseline/debug/trace.stderr: Remove.
	* test/all/compliance_provides_out/baseline/simulate/compliance_provides_out,
	test/all/compliance_provides_out/baseline/simulate/compliance_provides_out.stderr:
	New file.

	test: compliance_provides_illegal5: Add simulate baseline.
	*test/all/compliance_provides_illegal5/baseline/debug/trace,
	test/all/compliance_provides_illegal5/baseline/debug/trace.stderr: Remove.
	* test/all/compliance_provides_illegal5/baseline/simulate/compliance_provides_illegal5,
	test/all/compliance_provides_illegal5/baseline/simulate/compliance_provides_illegal5.stderr:
	New file.

	test: compliance_provides_illegal4: Add simulate baseline.
	* test/all/compliance_provides_illegal4/baseline/debug/trace,
	test/all/compliance_provides_illegal4/baseline/debug/trace2,
	test/all/compliance_provides_illegal4/baseline/debug/trace2.stderr,
	test/all/compliance_provides_illegal4/trace2,
	test/all/compliance_provides_illegal4/baseline/debug/trace.stderr: Remove.
	* test/all/compliance_provides_illegal4/baseline/simulate/compliance_provides_illegal4,
	test/all/compliance_provides_illegal4/baseline/simulate/compliance_provides_illegal4.stderr:
	New files.

	test: compliance_provides_bool: Add simulate baseline.
	* test/all/compliance_provides_bool/baseline/debug/step/trace,
	test/all/compliance_provides_bool/baseline/debug/step/trace.stderr,
	test/all/compliance_provides_bool/baseline/debug/trace,
	test/all/compliance_provides_bool/baseline/debug/trace.stderr: Remove.
	*test/all/compliance_provides_bool/baseline/simulate/compliance_provides_bool,
	test/all/compliance_provides_bool/baseline/simulate/compliance_provides_bool.stderr:
	New file.

	test: livelock_synchronous: Rename from hello_synchronous_livelock.
	* test/all/hello_synchronous_livelock: Rename to...
	* test/all/livelock_synchronous: ...this.

	test: compliance_async: Add simulate trace and baseline.
	* compliance_async/trace,compliance_async/baseline/simulate/compliance_async
	compliance_async/baseline/simulate/compliance_async.stderr: New files.

	test: compliance_async: Rename from compliance_async.
	* test/all/async_context3: Rename to...
	* test/all/compliance_async: ...this.

	test: livelock_async: Rename from async_context2.
	* test/all/async_context2: Rename to...
	* test/all/livelock_async: ...this.

	test: deadlock_interface_out_only: Rename from hello_interface_out_only.
	* test/all/hello_interface_out_only: Rename to ...
	* test/all/deadlock_interface_out_only: ...this.

	test: livelock_interface0: Remove dead code.
	* test/all/livelock_interface0/livelock_interface0.dzn (DummyI, DummyC):
	Remove.

	test: deadlock_interface0, deadlock_interface1: Remove dead code.
	* test/all/deadlock_interface0/deadlock_interface0.dzn (DummyI, DummyC):
	Remove
	* test/all/deadlock_interface1/deadlock_interface1.dzn (DummyI, DummyC):
	Remove.

	test: blocking_system4: Truncate trace.
	* test/all/blocking_system4/BlockedSystem4.trace: Remove second round.

	test: determinism0: Fix comment.
	* test/all/determinism0/determinism0.dzn: Reword comment.

	test: system-hello: Remove META.
	* test/all/system_hello/META: Remove.

	test: Camera: Clean copies, add traces, add c++ foreigns.
	* test/all/Camera/Camera_2.dzn,
	test/all/Camera/Camera_3a.dzn,
	test/all/Camera/Camera_3b.dzn,
	test/all/Camera/Camera_3c.dzn,
	test/all/Camera/SimpleCamera.dzn,
	test/all/Camera/InitialCamera.dzn: Remove.
	* test/all/Camera/ihal.dzn: Remove.
	* test/all/Camera/Camera.dzn (Optics, Acquisition): Move to...
	Optics.dzn: ...here, and...
	Acquisition.dzn: ...here.
	* test/all/Camera/c++/CMOS.hh,
	test/all/Camera/c++/Contrast.hh:
	test/all/Camera/c++/Lens.hh:
	test/all/Camera/c++/Memory.hh:
	test/all/Camera/c++/Shutter.hh: New files.

	test: Add compliance_system_provides_bool.
	* test/all/compliance_system_provides_bool: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* test/compliance/compliance_system_provides_bool: New symink.

	test: Add system_hello_world.
	* test/all/system_hello_world/system_hello_world.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add step_state.
	* test/all/step_state: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add inevitable_multiple_requires.
	* test/all/inevitable_multiple_requires/inevitable_multiple_requires.dzn:
	New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

	test: Add hello_out_state.
	* test/all/hello_out_state/hello_out_state.dzn: New file.
	* test/all/local.mk (HELLO_TESTS): Add it.
	* test/hello/hello_out_state: New symlink.

	test: Add hello_nondet.
	* test/all/hello_nondet/hello_nondet.dzn: New file.
	* test/all/local.mk (HELLO_TESTS): Add it.
	* test/hello/hello_nondet: New symlink.
	* test/all/hello_nondet/META: New file, skip build.

	test: Add AlarmSystem.
	* test/all/AlarmSystem/AlarmSystem.dzn: New test.

	test: Add missing symlinks.
	* test/smoke/parse_syntax,
	test/smoke/parse_type_mismatch: New symlinks.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Fix two bugs.
	This fixes

	    interface I {
	      in void e();
	      behaviour { on e: f(); }
	    }

	and

	    interface I {
	      in void e();
	      enum E { A };
	      behaviour { on e: E.A v = E.A; }
	    }

	as reported by Paul Hoogendijk <paul.hoogendijk@verum.com> on verum-devel.

	* dzn/wfc.scm (wfc)[arguments]: Avoid looking-up formals of undefined
	function.
	(type-name)[string]: New specialization.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Fix ast:async? for port.
	* dzn/ast.scm (ast:async?)[port]: New specialization.
	[trigger]: Use it.

	build: Distribute C runtime.
	* runtime/local.mk (runtime_c_dzndir,dist_runtime_c_dzn_DATA,
	runtime_cdir, dist_runtime_c_DATA): New variables.

	build: Support cs, remove --with-courage.
	* configure.ac: Remove --with-courage for language cs.
	* test/lib/local.mk (EXTRA_DIST): Distribute build.cs.make.
	* Makefile.am (install-data-hook): Add version comment when distributing
	cs.
	* runtime/local.mk (runtime_cs_dzndir, dist_runtime_cs_dzn_DATA): New
	variables.

	test: blocking_shell: Skip execute for cs.
	* test/all/blocking_shell/META: Skip cs:execute.

	test: blocking_shell: Rename from shell.
	* test/all/shell: Rename to...
	* test/all/blocking_shell: ..this.
	* test/all/blocking/blocking_shell: New symlink.

	parse: Change -p,--peg to -p,--skip-wfc.
	* dzn/commands/parse.scm (parse): Change -p,--peg to -p,--skip-wfc.
	* doc/dezyne.texi (Invoking dzn): Update accordingly.
	* test/all/parse_locations/run (base): Update to use --skip-wfc.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	json: Remove behaviour and most locations.
	This reduces the system diagram for Dezyne-IDE's daemon (all.dzn) from
	1M to 130KB.

	* dzn/normalize.scm (remove-location, remove-behaviour): New procedures.
	* dzn/code/json.scm (ast->): Use them.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Factor-out get-meta-flag.
	* test/dzn/dzn.scm (get-meta-flag): Factor-out from...
	(flush?, thread-pool?, thread-safe-shell?): ...these.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	runtime c++: Oops, disable thread_pool by default.
	Reported by Michael van de Ven <michael.van.de.ven@thermofisher.com>.

	* runtime/c++/dzn/context.hh (defer)[DZN_THREAD_POOL]: Oops, add missing
	'!' and inline.
	* test/lib/build.c++.make ($(OUT)/test): Replace default thread_pool.o
	with $(THREAD_POOL_O).
	* runtime/c++/dzn/context.hh:
	* test/dzn/dzn.scm (thread-pool?): New procedure to read 'thread-pool'
	from META.
	(run-build): Use it.
	* test/all/shell/META: Set thread-pool.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts:: Resurrect unit tests, cleanups, and fix compile warnings.
	* test/lts: Import test files.
	* test/lts/local.mk: List them in new file.
	* Makefile.am: Include it.
	* test/dzn/lts.scm: Update and enable tests.
	* dzn/commands/lts.scm (main): Rename options
	--accepts to --list-accepts,
	--events to --list-events,
	--nondet to --deterministic-labels.
	* dzn/verify/pipeline.scm (in-out:aut-dpweak-bisim->verify-component):
	Update accordingly.
	* dzn/lts.scm (text->line-list): New procedure, split off from...
	(text-file->line-list): ...this.
	(aut-file->lts): Rename to...
	(aut-text->lts): ...this.
	(aut-file->lts): Use it in new procedure.

	guix: dezyne: Use guile-json-4.
	* guix/gnu/packages/dezyne.scm (guile3.0-json-1): Remove.
	(dezyne)[propagated-inputs]: Use guile-json-4.

	test: Support guile-json-4.
	* test/dzn/dzn.scm (get-meta): New procedure, using guile-json-4
	compatible json-string->alist-scm.  Factored-out from
	(skip?, flush?, thread-safe-shell?, code-options, model?, model-unset?): These.
	* test/all/async_flush/META,
	test/all/compliance_provides_bool/META,
	test/all/compliance_provides_out/META,
	test/all/hello_inevitable_sync_out/META,
	test/all/hello_multiple_out/META,
	test/all/hello_optional_flush/META,
	test/all/illegal_provides/META,
	test/all/shell/META,
	test/all/shell_injected/META: Use true and false values, not strings.

	dzn: Cleanups.
	* dzn/misc.scm: Remove unused modules.

	misc: Clean-out, add json-string->alist-scm.
	* dzn/commands/trace.scm (json->alist-scm): Remove.
	(json-string->alist-scm): Move to...
	* dzn/misc.scm (json-string->alist-scm): ...here, and add guile-json-4
	compatibility.
	(*eof*, =1, >1, null-is-#f, stdout, stderr,->join, ->string): Remove.
	Also remove many unused procedures.
	* dzn/code/javascript.scm (javascript:namespace-setup): Rewrite
	without ->join, ->string.
	* dzn/fifo.scm: Remove.
	* dzn/local.mk (dist_%C%_scm_DATA): Remove it.
	* dzn/indent.scm (eat-space): Rewrite without *eof*.
	(indent): Likewise, and without =1.
	* dzn/parse/ast.scm (parse-tree->ast): Rewrite without null-is-#f.
	* dzn/scm2json.scm (parse-opts): Rewrite without >1, stdout.
	* dzn/templates/c++.scm (check-bindings-list): Rewrite without ->join.
	* dzn/verify/pipeline.scm (report-ok, report-skip): Rewrite without
	stdout, stderr.
	* dzn/ast.scm: Rewrite without stderr.  Remove commented debug code.
	* dzn/commands/trace.scm: Likewise.
	* dzn/commands/traces.scm: Likewise.
	* dzn/lts.scm (cleanup-label): Likewise.
	* dzn/normalize.scm (add-reply-port): Likewise.
	* dzn/wfc.scm (wfc:report-error): Likewise.

	guix: dezyne: Use guile-3.0-latest.
	* guix/gnu/packages/dezyne.scm (dezyne)[inputs,native-inputs]: Use
	guile-3.0-latest.

	guix: Bump to 0d8d499036f632e03f63bdaf36b02861ea52b3e6.
	* guix.scm: Bump to 0d8d499036f632e03f63bdaf36b02861ea52b3e6.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Support guile-3.0.
	This works around <https://bugs.gnu.org/47245>.

	* dzn/verify/pipeline.scm (%dzn): Remove redefinition.  Move mingw
	support to ..
	* dzn/config.scm.in (%dzn): ...here.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lts: Export some symbols, typos.
	* dzn/lts.scm (dzn): Expport lts->alphabet, lts-stable-accepts,
	remove-illegal, rm-tau-loops, run, print-metrics, text->edge,
	validate-aut-file.

	hello: Include missing command-line.
	* dzn/commands/hello.scm (dzn): Include (dzn command-line).

	ast: Typo.
	* dzn/ast.scm (ast:full-name): Typo.

	normalize: Typo.
	* dzn/normalize.scm (ast->): Use ast:pretty-print.

	c++: Remove dead code.
	* dzn/code/c++.scm (c++:type-name)[binding]: Remove unused function.

	parse/ast: Remove dead code.
	* dzn/parse/ast.scm (parse-tree->ast): Remove dead clause.

	Compile fixes for guile-3.0.5.
	* gash/util.scm (disjoin, conjoin): Use arguments instead of
	"(. arguments)".
	* gash/pipe.scm (spawn): Likewise.
	* dzn/misc.scm (disjoin, conjoin): Likewise.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parse: Invoke imported-from lazily.
	This fixes parsing performance problem of a system with many includes.
	Reported by Erik Oerlemans <erik.oerlemans@philips.com>.

	* dzn/parse.scm
	* dzn/parse.scm
	(string->parse-tree): Use #:content-alist parameter instead of optional
	imported-from.  Pass content-alist to ...
	(peg:handle-syntax-error): ...here, using new #:content-alist
	parameter.  Pass it to ...
	(peg:error-message): ...here, pass it to ...
	(peg:imported-from->message): ...here.  Take content-alist
	instead of imported-from, and invoke imported-from.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Error traces end with <error> event.
	* dzn/lts.scm (cleanup-error): New procedure, moved out from...
	(cleanup-label): ...here.
	* dzn/lts.scm (remove-illegal, deadlock-nodes): Use
	<declarative-illegal>.
	(lts->traces): Use <illegal>.
	* dzn/commands/traces.scm (lts-hide-internal-labels): Use
	<declarative-illegal>, <illegal>.
	* dzn/verify/pipeline.scm (in-out:aut-dpweak-bisim->verify-component):
	Use --illegal=<illegal>.
	(hide-illegal-labels): Move filtering of
	illegals to...
	(hide-internal-labels): ...new procedure here.
	(mcrl2:verify-compliance): Use it.
	(report-fail): Have error trace end with
	<error> event.
	* test/all/async_context3/baseline/verify/async_context3,
	test/all/compliance_external_asynchronous_sync/baseline/verify/compliance_external_asynchronous_sync,
	test/all/compliance_livelock/baseline/verify/compliance_livelock,
	test/all/compliance_out_inevitable/baseline/verify/compliance_out_inevitable,
	test/all/compliance_out_inevitable_illegal/baseline/verify/compliance_out_inevitable_illegal,
	test/all/compliance_out_sync/baseline/verify/compliance_out_sync,
	test/all/compliance_out_two/baseline/verify/compliance_out_two,
	test/all/compliance_provides_bool/baseline/verify/compliance_provides_bool,
	test/all/compliance_provides_illegal4/baseline/verify/compliance_provides_illegal4,
	test/all/compliance_provides_int/baseline/verify/compliance_provides_int,
	test/all/compliance_provides_out/baseline/verify/compliance_provides_out,
	test/all/compliance_reply_bool/baseline/verify/compliance_reply_bool,
	test/all/hello_single_to_multiple/baseline/verify/hello_single_to_multiple:
	Add <compliance>.
	* test/all/compliance_out_nondet/baseline/verify/compliance_out_nondet,
	test/all/deadlock_blocking_guard/baseline/verify/deadlock_blocking_guard,
	test/all/deadlock_blocking_inevitable/baseline/verify/deadlock_blocking_inevitable,
	test/all/deadlock_blocking_optional/baseline/verify/deadlock_blocking_optional,
	test/all/deadlock_component0/baseline/verify/deadlock_component0,
	test/all/deadlock_component1/baseline/verify/deadlock_component1,
	test/all/deadlock_interface0/baseline/verify/deadlock_interface0,
	test/all/deadlock_interface1/baseline/verify/deadlock_interface1,
	test/all/deadlock_reply_modeling/baseline/verify/deadlock_reply_modeling:
	test/all/determinism_async/baseline/verify/determinism_async,
	test/all/hello_interface_out_only/baseline/verify/hello_interface_out_only,
	test/all/illegal_external_asynchronous2/baseline/verify/illegal_external_asynchronous2,
	test/all/illegal_hello_external/baseline/verify/illegal_hello_external,
	test/all/illegal_interface.space/baseline/verify/illegal_interface.space,
	test/all/illegal_provides/baseline/verify/illegal_provides,
	test/all/illegal_provides/baseline/verify/illegal_provides,
	test/all/illegal_requires2/baseline/verify/illegal_requires2: Add
	<deadlock>.
	* test/all/compliance_provides_illegal5/baseline/verify/compliance_provides_illegal5,
	test/all/compliance_requires_illegal/baseline/verify/compliance_requires_illegal,
	test/all/illegal_async_silent/baseline/verify/illegal_async_silent,
	test/all/illegal_component0/baseline/verify/illegal_component0,
	test/all/illegal_external_asynchronous2/baseline/verify/illegal_external_asynchronous2,
	test/all/illegal_requires/baseline/verify/illegal_requires,
	test/all/illegal_requires2/baseline/verify/illegal_requires2,
	test/all/illegal_requires_out/baseline/verify/illegal_requires_out: Add
	<illegal>.
	* test/all/hello_synchronous_livelock/baseline/verify/hello_synchronous_livelock,
	* test/all/livelock2/baseline/verify/livelock2,
	* test/all/livelock_component2/baseline/verify/livelock_component2,
	* test/all/livelock_interface0/baseline/verify/livelock_interface0,
	* test/all/livelock_interface0/baseline/verify/livelock_interface0:
	Add <livelock>.
	* test/all/missing_reply/baseline/verify/missing_reply: Add
	<missing-reply>.
	* test/all/queuefull_component0/baseline/verify/queuefull_component0,
	test/all/queuefull_external/baseline/verify/queuefull_external,
	test/all/queuefull_external_sync/baseline/verify/queuefull_external_sync:
	Add <queue-full>.
	* test/all/range_action/baseline/verify/range_action,
	test/all/range_argument/baseline/verify/range_argument,
	test/all/range_assign/baseline/verify/range_assign,
	test/all/range_declaration/baseline/verify/range_declaration,
	test/all/range_declaration_expression/baseline/verify/range_declaration_expression,
	test/all/range_expression/baseline/verify/range_expression,
	test/all/range_function/baseline/verify/range_function,
	test/all/range_local/baseline/verify/range_local,
	test/all/range_member/baseline/verify/range_member,
	test/all/range_return/baseline/verify/range_return: Add <range-error>.
	* test/all/second_reply/baseline/verify/second_reply,
	test/all/second_reply_blocking/baseline/verify/second_reply_blocking: Add <second-reply>.
	* test/all/range_return/baseline/verify/range2: Remove.

	verification: Memoize root->makreel.
	* dzn/verify/pipeline.scm (root+model->makreel): New pure function.
	(in-out:dzn->makreel): Use it.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	verify: Drop interface name prefix from trace.
	* dzn/lts.scm (cleanup-aut): Add #:prefix parameter; if set, drop
	prefix from label.
	* dzn/commands/lts.scm (main): Pass --prefix option.
	* dzn/verify/pipeline.scm (in-out:aut-makreel->aut): Use --prefix
	option for interfaces.
	(interface-taus): Do not add interface name
	prefix.
	* test/all/deadlock_interface1/baseline/verify/deadlock_interface1,
	test/all/reply_modeling/baseline/verify/deadlock_reply_modeling,
	test/all/illegal_interface.space/baseline/verify/illegal_interface.space,
	test/all/incomplete/baseline/verify/incomplete.stderr,
	test/all/range_argument/baseline/verify/range_argument,
	test/all/range_assign/baseline/verify/range_assign,
	test/all/range_function/baseline/verify/range_function,
	test/all/range_local/baseline/verify/range_local,
	test/all/range_return/baseline/verify/range_return: Remove
	interface prefix.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Include imports in debug command line.
	* dzn/command-line.scm (dzn:options): New procedure.
	(dzn:multi-opt): Use it.
	(command:command-line): Use it in new procedure.
	* dzn/script.scm (main): Use it.
	* dzn/verify/pipeline.scm (pretty-verify-pipeline): Use it to include
	imports.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Support pretty printing of pipeline commands.
	Running

	   dzn --debug verify hello.dzn

	now shows the actual pipelines with their commands, ready for use on
	the command line.

	* dzn/verify/pipeline.scm (pretty-verify-pipeline): New procedure.
	(verify-pipeline): Use it.
	* doc/dezyne.texi (Invoking dzn verify): Mention it.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Add --out option; support running of partial pipeline.
	* dzn/commands/verify.scm (parse-opts): Remove unsupported -d,--debug
	option.  Add --out option.
	 (main): Use it to call...
	* dzn/verify/pipeline.scm (verification:partial): ...this new procedure.
	* doc/dezyne.texi (Invoking dzn verify): Document it, together with
	missing -I,--import flag.
	* gash/pipe.scm (piped-process:pipeline): Use inner procedure instead of
	lambda.  Throw when attempting to use a procedure inside the command
	line.

2021-03-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Refactor verification pipeline.
	* dzn/templates/makreel/source@root: Use M4 macro init_process instead
	of #x:init.
	* dzn/templates/makreel/interface-proc@interface (name'interface_internal):
	Rename name'silent_end' to tau_void.
	(name'interface): Hide name'end.
	* dzn/code/makreel.scm (makreel:.name, makreel:name): New methods.
	(verify:scope-name): Renae to ...
	(makreel:unticked-dotted-name): ...this.
	(makreel:get-model): New specialization.
	* dzn/verify/traces.scm (parse-tree2text, cleanup-lts): Move to ...
	* dzn/lts.scm (cleanup-label, cleanup-aut): ...here.
	* dzn/verify/traces.scm (rename-lts-actions): Move to ...
	* dzn/verify/pipeline.scm (hide-internal-labels): ...here.
	(execute): Remove.
	(in-out:pipeline): New variable.
	(verify-pipeline): Use it in new procedure.
	(mcrl2:verify-interface-asserts): Use it, rename from...
	(mcrl2:verify-interface): ...this.
	, mcrl2:verify-component-asserts): Use it.
	(mcrl2:verify-compliance): Use it, rename from do-refinement.
	(mcrl2:verify-interface): New procedure.
	* dzn/commands/verify.scm (models-for-verification): Inline.
	(ast:interface*): Remove.
	(model->mcrl2, verify-makreel): Move to ...
	* dzn/verify/pipeline.scm: ...here.
	* dzn/verify/traces.scm: Remove.
	* dzn/verify/local.mk (dist_%C%_scm_DATA): Remove it.

2021-03-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: illegal_interface.space: Rename from hello.interface_namespace.
	* test/all/illegal_interface.space: Rename to...
	* test/all/hello.interface_namespace: ...this.

	test: deadlock_reply_modeling: Rename from reply_modeling.
	* test/all/reply_modeling: Rename to...
	* test/all/deadlock_reply_modeling: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: illegal_async_silent: Rename from async_silent.
	* test/all/async_silent: Rename to...
	* test/all/illegal_async_silent: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	test: determinism_async: Rename from async_nondet.
	* test/all/async_nondet: Rename to ...
	* test/all/determinism_async: ...this.
	* test/all/local.mk (REGRESSION_TESTS): Update accordingly.

	parse/complete: Add missing tree:int-value-names.
	* dzn/parse/complete.scm (tree:int-value-names): New procedure.

	parse/tree: Add missing .direction, .from, .range, .to.
	* dzn/parse/tree.scm (.direction, .from, .range, .to.): New procedures.

	language: Support completion of partial field test: "var.".
	* dzn/parse/peg.scm (peg:parse): Do not skip "var", "var." in partial
	field tests "var", "var."
	* dzn/parse/complete.scm (context:complete): Support Handle partial
	field test: "var."
	* test/dzn/language.scm ("language interface12"),
	("language interface12a"): New tests, using...
	* test/language/interface12.dzn,
	test/language/interface12a.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.

	language: Support completion of partial field-test: "var".
	* dzn/parse/tree.scm (is-a?): Return value instead of #t.
	* dzn/parse/complete.scm (context:complete): Complete enum variable in
	expression to field-test values.
	* test/dzn/language.scm ("language interface11",
	"language interface11a"): New tests, using...
	* test/language/interface11.dzn,
	test/language/interface11a.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.

	language: Support completion of guard expressions.
	* dzn/parse/peg.scm (peg:parse)[behaviour-statements]: Do not hide.
	Fixes uniformity of parse tree.
	* dzn/parse/ast.scm (parse-tree->ast): Handle it.
	* dzn/parse/tree.scm (.behaviour-statements): New procedure.
	(tree:record): Add behaviour-statements.
	(tree:scope?, tree:declaration*, tree:declaration*, tree:function*,
	tree:statement*, tree:variable*): Cater for behaviour-statements.
	(tree:type*): Also look in interfaces.
	* dzn/parse/complete.scm (context:locals, context:members,
	context:complete): Use behaviour-statements instead of behaviour-compound.
	* dzn/parse/complete.scm (context:enum-names, context:int-names,
	context:type-names): Always look in root for types.
	(complete:variable-names): Support lookup without type.
	(complete:boolean-expressions): Use it in new procedure.
	(context:complete): Support incomplete guard.
	* dzn/parse/lookup.scm (tree:lookup-var): Use behaviour-statements
	instead of behaviour-compound.
	* test/dzn/language.scm ("language interface10",
	"language interface10a"): New tests.
	* test/language/interface10.dzn,
	test/language/interface10a.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.

	language: Support completion of field in field-test.
	* dzn/parse/complete.scm (context:complete): Handle field-test.
	* test/language/enum.dzn (enum Bool): Swap fields.
	* test/dzn/language.scm ("completion field-test field"): Test it.
	("lookup field-test->enum-field"): Update accordingly.

	language: Handle --point=L.C.
	* dzn/commands/language.scm (main): In string->number, use any
	non-digit as a separator.  This avoids generating a float when using
	".", which hangs the loop in line-column->offset.

	code: Add 'Generated by' comment.
	* dzn/templates/c++-exception-wrappers/header@root,
	dzn/templates/c++/header@root,
	dzn/templates/c++/main@component,
	dzn/templates/c++/source@root,
	dzn/templates/c/header@root,
	dzn/templates/cs/main@component,
	dzn/templates/cs/source@root,
	dzn/templates/javascript/main@component,
	dzn/templates/javascript/source@root,
	dzn/templates/makreel/source@root,
	dzn/templates/scheme/main@component,
	dzn/templates/scheme/source@root: Add "Generated by dzn code ..." comment.

	doc: Update 'NEWS'.
	* NEWS (Changes in 2.10.1-thermo-fisher since 2.10.1): New section.

	build: Oops, distribute c++-exception-wrappers templates.
	* dzn/templates/local.mk (EXTRA_DIST): Add c++-exception-wrappers.
	Fixes building dezyne-language-c++-exception-wrappers language pack.

2021-03-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++-exception-wrapperr: Do not fail when --calling-context is missing.
	* dzn/code/c++-exception-wrappers.scm (c++ew:calling-context-type-name):
	Add fallback.

	c++: runtime: Add thread_pool support.
	* runtime/c++/thread_pool.cc (class dzn::thread::pool): New class
	(dzn::thread::defer): New function using class pool.
	* runtime/c++/dzn/context.hh (dzn::thread::defer)[!DZN_THREAD_POOL]: New
	function.
	(class context): Use thread::pool::defer.

2021-03-29  Johri van Eerd  <johri.van.eerd@verum.com>

	c++-exception-wrappers: New language.
	This adds the experimental c++ exception wrapper code generator for
	Thermo Fisher Scientific.

	* configure.ac: Add --enable-c++-exception-wrappers argument.  Define
	Automake conditional `have_cxx_exception_wrappers'.
	* dzn/code/local.mk (dist_%C%_scm_DATA): Use it to conditionally build
	and distribute exception wrappers.
	* dzn/templates/local.mk (dist_nocompile_%C%_scm_DATA): Likewise.
	* dzn/ast.scm (ast:system*): Add (ast:system* (o <root>)).
	* dzn/code/c++.scm: Export some procedures for...
	* dzn/code/c++-exception-wrappers.scm (dzn): ...this new file.
	* dzn/templates/c++-exception-wrappers.scm: New file.
	* dzn/templates/c++-exception-wrappers/: New template language.
	* test/all/exception_wrapper: New test.
	* test/all/local.mk (REGRESSION_TESTS)[have_cxx_exception_wrappers]: Add
	it.
	* test/lib/build.c++.make (CALLING_CONTEXT_HH): New variable.

2020-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Factor-out 'step:trace->structured'.
	* dzn/commands/trace.scm (trace->steps): Rename to ...
	(trace:trace->steps): ... this.
	(trace:trace->structured): New procedure.
	(step:format-trace): Rename to ...
	(trace:format-trace): ...this.  Use it.

2021-01-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_imported: Comment comp.
	* test/all/hello_imported/hello_imported.dzn (comp): Comment.

2021-02-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	traces: Throw exception if LTS fails.
	* dzn/commands/traces.scm (model->lts): Throw if lts is empty.

	code: Use ast-> entry point with parameters.
	* dzn/code.scm (%calling-context, %queue-size): %shell): New
	parameters.
	(code:add-calling-context, code:add-calling-context-argument,
	code:add-calling-context-formal): Use %calling-context instead of
	command-line:get.
	(code:annotate-shells): Use %shell instead of command-line:get.
	* dzn/commands/code.scm (main): Set them.  Invoke ast-> with #:dir
	and #:model parameters.
	* dzn/code/c++.scm (root->): Rename to ...
	(ast->): ...this.
	* dzn/code/c.scm (root->): Rename to ...
	(ast->): ...this.
	* dzn/code/cs.scm (formals, cs:args): Use %calling-context instead of
	(root->): Rename to ...
	(ast->): ...this.
	* dzn/code/dzn.scm (root->): Rename to ...
	(ast->): ...this.
	* dzn/code/javascript.scm (root->): Rename to ...
	(ast->): ...this.
	* dzn/code/makreel.scm (ast->): Add #:dir, #:model parameters.
	(makreel:queue-length): Use %queue-size instead of command-line:get.
	* dzn/code/scheme.scm (root->): Rename to ...
	(ast->): ...this.
	* dzn/code/json.scm (ast->): Add #:dir, #:model parameters.

2021-02-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Rename calls, rcalls, async, reqs, clrs.
	* dzn/templates/code.scm (calls): Rename to ...
	(event-slot): ...this.
	(rcalls): Rename to...
	(valued-event-slot): ...this.
	(async): Rename to...
	(async-event-slot): ...this.
	(reqs): Rename to...
	(async-req-event-slot): ...this.
	(clrs): Rename to...
	(async-crl-event-slot): ...this.
	* dzn/templates/c++/header-model@foreign,
	dzn/templates/c++/model@component,
	dzn/templates/cs/model@component,
	dzn/templates/cs/model@foreign: Update accordingly.

	* dzn/templates/c++/calls@trigger: Rename to...
	dzn/templates/c++/event-slot@trigger: ..this
	* dzn/templates/c++/rcalls@trigger: Rename to...
	dzn/templates/c++/valued-event-slot@trigger: ..this
	* dzn/templates/c++/async@trigger: Rename to...
	dzn/templates/c++/async-event-slot@trigger: ..this
	* dzn/templates/c++/reqs@trigger: Rename to...
	dzn/templates/c++/async-req-event-slot@trigger: ..this
	* dzn/templates/c++/clrs@trigger: Rename to...
	dzn/templates/c++/async-clr-event-slot@trigger: ..this

	* dzn/templates/cs/calls@trigger: Rename to...
	dzn/templates/cs/event-slot@trigger: ..this
	* dzn/templates/cs/rcalls@trigger: Rename to...
	dzn/templates/cs/valued-event-slot@trigger: ..this
	* dzn/templates/cs/async@trigger: Rename to...
	dzn/templates/cs/async-event-slot@trigger: ..this
	* dzn/templates/cs/reqs@trigger: Rename to...
	dzn/templates/cs/async-req-event-slot@trigger: ..this
	* dzn/templates/cs/clrs@trigger: Rename to...
	dzn/templates/cs/async-clr-event-slot@trigger: ..this

2021-02-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Strip trailing whitepace, default to newline-infix.
	* dzn/templates.scm (compile): Delete trailing whitespace.
	* dzn/templates.scm (define-templates-base): Use newline infix as
	default instead of empty separator.
	* dzn/templates/dzn/double-newline-infix: New grammar.
	* dzn/templates/c.scm,
	dzn/templates/cs.scm,
	dzn/templates/code.scm,
	dzn/templates/dzn.scm,
	dzn/templates/javascript.scm,
	dzn/templates/makreel.scm,
	dzn/templates/scheme.scm: Remove newline-infix.  Add
	double-newline-infix for model.

	dzn: Also generate imports, global types.
	* dzn/ast.scm (ast:import*): New method.
	* dzn/templates/dzn.scm (import): Use it in new template.
	(source): Remove dzn:model accessor.
	(model): New template definition.
	* dzn/templates/dzn/source@root: Use them.
	* dzn/templates/dzn/model@component:
	dzn/templates/dzn/model@foreign,
	dzn/templates/dzn/source@interface,
	dzn/templates/dzn/model@system: New symlinks.
	* dzn/templates/dzn/behaviour@behaviour: Add newline.

	cs: Whitespace cleanups.
	* dzn/templates/cs.scm: Add newline-infix to templates.
	* dzn/templates/cs/statement@illegal: Indent macro.
	* dzn/templates/cs/statement@guard: Indent macro, add newline.

	code: Cleanups.
	* dzn/code.scm: Sort into categories.
	(injected-instances): Rename to ...
	(code:injected-instances): ...this.  Remove old implementation.
	(non-injected-instances): Rename to...
	(code:non-injected-instances): ...this.  Remove old implementation.
	(code:name, code:scope.name, code:scope-type-name): Remove.

	dzn: Cleanups.
	* dzn/code/dzn.scm: Sort into categories.
	(code:class-member?, unspecified?): Remove.
	(dzn:annotate-shells): Move to...
	* dzn/code.scm (code:annotate-shells): ...here.

	test: Fix broken link.
	* test/regression/wf_replyRequiredPort/: Update to...
	* test/regression/wf_replyRequiresPort/: ...this.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_foreign_path: Rename cs Foreign.
	* test/all/hello_foreign_path/cs/glue.cs: Rename to...
	* test/all/hello_foreign_path/cs/Foreign.cs: ...this.

	test: Import multiple_provides.
	* test/all/multiple_provides/multiple_provides.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2021-02-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Import hello_injected.
	* test/all/hello_injected: Import.
	* test/all/local.mk (HELLO_TESTS): Add it.

2021-03-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Remove flush from foreign.
	* dzn/templates/cs/model@foreign: Set flushes to false.

2021-02-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Initialize name of injected requires port.
	* dzn/templates/cs/injected-instance-initializer@instance: Set name.

2020-05-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Import data_full.
	The notorious `Dataparam'.

	TODO:
	  * devise a way to test against trace, to avoid handwritten main's
	  * split in series of nice data tests

	* test/all/data_full/: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* test/all/data_full/main.c,
	test/all/data_full/main.cc,
	test/all/data_full/main.cs,
	test/all/data_full/main.js,
	test/all/data_full/main.scm: Resurrect.
	* test/lib/build.javascript.make ($(OUT)/test): Update handwritten-main
	support.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Remove dead templates.
	Try:

	    for i in $(grep define-templat dzn/templates/makreel.scm | cut -d' ' -f 2 | sed -e s,^,x:, -e 's,),,');\
	        do if ! grep $i dzn/templates/makreel/* > /dev/null; then echo dead: $i; fi; done

	* dzn/templates/makreel.scm (behaviour-with-optional-proc,
	behaviour-without-optional-proc, non-optional-proc, optional-proc,
	continuation-haakjes, continuation-identifier-call,
	semantics-requires-flush-provides,
	semantics-requires-flush-provides-provides,
	semantics-requires-flush-requires, semantics-requires-provides,
	semantics-requires-requires, semantics-flush-provides,
	semantics-qmt-flush-provides, semantics-flush-requires, provides-hide): Remove.
	* dzn/code/makreel.scm (makreel:behaviour-with-optional-proc,
	makreel:behaviour-without-optional-proc, makreel:non-optional-proc,
	makreel:optional-proc): Remove.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c: Remove dead templates.
	Try:

	    for i in $(grep define-templat dzn/templates/c.scm | cut -d' ' -f 2 | sed -e s,^,x:, -e 's,),,'); \
	        do if ! grep $i dzn/templates/c/* > /dev/null; then echo dead: $i; fi; done

	* dzn/templates/c.scm (event-arguments, enum-name-global-local):
	Remove.
	* dzn/code/c.scm (c:global-or-local-enum-name): Remove.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Remove dead templates.
	Try:

	    for i in $(grep define-templat dzn/templates/cs.scm | cut -d' ' -f 2 | sed -e s,^,x:, -e 's,),,'); \
	        do if ! grep $i dzn/templates/cs/* > /dev/null; then echo dead: $i; fi; done

	* dzn/templates/cs.scm (delegate-type, event-type, formal-type,
	instance-declaration, delegate-formal-type, delegate-signature): Remove.
	(func-return-type): Rename to ...
	(function-return-type): ...this.
	* dzn/templates/cs/shell-provided-in@trigger: Update accordingly.
	* dzn/code/cs.scm (cs:delegate-formal-type): Remove.
	* dzn/templates/cs/func-return-type@trigger: Rename to...
	* dzn/templates/cs/function-return-type@trigger: ...this.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Remove dead templates.
	Try:

	    for i in $(grep define-templat dzn/templates/scheme.scm | cut -d' ' -f 2 | sed -e s,^,x:, -e 's,),,'); \
	        do if ! grep $i dzn/templates/scheme/* > /dev/null; then echo dead: $i; fi; done

	* dzn/templates/scheme.scm (scheme-namespace-setup,
	constructor-parameters, main-event-map-flush-provides): Remove.
	* dzn/code/scheme.scm (scheme:namespace-setup,
	scheme:constructor-parameters): Remove.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Remove dead templates.
	Try:

	    for i in $(grep define-t dzn/templates/c++.scm | cut -d' ' -f 2 | sed -e s,^,x:, -e 's,),,'); \
	        do if ! grep $i dzn/templates/c++/* > /dev/null; then echo dead: $i; fi; done

	* dzn/code/c++.scm (c++:name, c++:argument_n, c++:optional-type): Remove.
	* dzn/templates/c++.scm (name, optional-type, prefix-formals-type,
	prefix-arguments-n, injected-meta-initializer): Remove.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Remove dead templates.
	Try:

	    for i in $(grep define-templat dzn/templates/code.scm | cut -d' ' -f 2 | sed -e s,^,x:, -e 's,),,'); \
	        do if ! grep $i dzn/templates/*/* > /dev/null; then echo dead: $i; fi; done

	* dzn/templates/code.scm (parameters, instance-initializer): Remove.
	* dzn/code.scm (code:parameters): Remove.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	dzn: Remove dead templates.
	Try:

	    for i in $(grep define-templat dzn/templates/dzn.scm | cut -d' ' -f 2 | sed -e s,^,x:, -e 's,),,'); \
	        do if ! grep $i dzn/templates/*/* > /dev/null; then echo dead: $i; fi; done

	* dzn/templates/dzn.scm (expand-blocking): Remove.
	* dzn/code/dzn.scm (dzn:expand-blocking): Remove.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Template cleanups.
	* dzn/templates/cs.scm: Sort templates into categories.  Remove
	multi-line lambdas.
	(cs:formal-binding, out-ref-local, dzn-prefix,
	default-ref, default-out, =expression): Move to...
	* dzn/code/cs.scm (cs:formal-binding, out-ref-local, dzn-prefix,
	default-ref, default-out, =expression): ...here.
	(cs:func-return-type, cs:return-statement, cs:return-temporary-assign,
	cs:return-temporary, cs:non-primitive, cs:data): New procedure.

	javascript: Template cleanups.
	* dzn/templates/javascript.scm: Sort templates into categories.

	scheme: Template cleanups.
	* dzn/templates/scheme.scm: Sort templates into categories.

	c++: Template cleanups.
	* dzn/code/c++.scm: Do not export template procedures.
	* dzn/templates/c++.scm: Sort templates into categories.

	code: Template cleanups.
	* dzn/templates/code.scm: Sort templates into categories.

	dzn: Template cleanups.
	* dzn/templates/dzn.scm: Sort templates into categories.

	makreel: Remove dead templates.
	* dzn/templates/makreel/=expression@expression,
	dzn/templates/makreel/=expression@extern,
	dzn/templates/makreel/action-arguments@expression,
	dzn/templates/makreel/async-parallel@component,
	dzn/templates/makreel/behaviour-with-optional-proc@behaviour,
	dzn/templates/makreel/behaviour-without-optional-proc@behaviour,
	dzn/templates/makreel/continuation-haakjes@ast,
	dzn/templates/makreel/event@trigger,
	dzn/templates/makreel/non-optional-proc@behaviour,
	dzn/templates/makreel/non-optional-proc@skip,
	dzn/templates/makreel/optional-proc@behaviour,
	dzn/templates/makreel/provides-hide@port,
	dzn/templates/makreel/semantics-flush-provides@port,
	dzn/templates/makreel/semantics-flush-requires@port,
	dzn/templates/makreel/semantics-qmt-flush-provides@port,
	dzn/templates/makreel/semantics-requires-flush-provides-provides@port,
	dzn/templates/makreel/semantics-requires-flush-provides@port,
	dzn/templates/makreel/semantics-requires-flush-requires@port,
	dzn/templates/makreel/semantics-requires-provides@port,
	dzn/templates/makreel/semantics-requires-requires@port,
	dzn/templates/makreel/statement@incomplete: Remove.

	c: Remeve dead templates.
	* dzn/templates/c/event-arguments@ast,
	dzn/templates/c/event-arguments@formal,
	dzn/templates/c/function-type@bool,
	dzn/templates/c/function-type@enum,
	dzn/templates/c/function-type@void,
	dzn/templates/c/header-f-ptr-definition@event,
	dzn/templates/c/in-event@event,
	dzn/templates/c/port-reply-helper@type,
	dzn/templates/c/port-reply-helper@void,
	dzn/templates/c/return-function@function,
	dzn/templates/c/return-function@return,
	dzn/templates/c/self-or-not@ast,
	dzn/templates/c/self-or-not@variable: Remove.

	cs: Remove dead templates.
	* dzn/templates/cs/argument-type@ast,
	dzn/templates/cs/delegate-formal-type@type,
	dzn/templates/cs/delegate-return-type@type,
	dzn/templates/cs/delegate-signature@event,
	dzn/templates/cs/delegate-type@type,
	dzn/templates/cs/delegate-type@void,
	dzn/templates/cs/deref@ast,
	dzn/templates/cs/event-type@type,
	dzn/templates/cs/event-type@void,
	dzn/templates/cs/flush-provides@port,
	dzn/templates/cs/formal-type@formal,
	dzn/templates/cs/formal-type@type,
	dzn/templates/cs/formals@formal,
	dzn/templates/cs/instance-declare-dzn-tracing@instance,
	dzn/templates/cs/main-formal-binding-assign@formal-binding,
	dzn/templates/cs/meta@component,
	dzn/templates/cs/out-binding-lambda@port,
	dzn/templates/cs/signature@formal: Remove.

	javascript: Remmove dead templates.
	* dzn/templates/javascript/formal-type@formal,
	dzn/templates/javascript/function-type@type,
	dzn/templates/javascript/prefix-formals-type@formal: Remove.

	scheme: Remove dead templates.
	* dzn/templates/scheme/component-port@end-point,
	dzn/templates/scheme/formal-type@formal,
	dzn/templates/scheme/function-type@type,
	dzn/templates/scheme/main-event-map-flush-provides@port,
	dzn/templates/scheme/prefix-formals-type@formal: Remove.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Remove dead templates.
	Try:

	    diff -u <(grep -ho 'x:[^]" ();]*' dzn/templates/c++/* | sed s,x:,, | sort -u) \
	        <(ls dzn/templates/c++ | grep @ | sed s,@.*,, | sort -u) | grep ^[-+]\
	        | LANG= sort

	* dzn/templates/c++/foreign-header@foreign: Move to...
	* dzn/templates/c++/header-model@foreign: ...this.
	* dzn/templates/c++/foreign-source@foreign: Move to...
	* dzn/templates/c++/model@foreign: ...this.
	* dzn/templates/c++/header-include@file-name: Remove.
	dzn/templates/c++/injected-binding-declare@binding,
	dzn/templates/c++/instance-set-state-argument@instance,
	dzn/templates/c++/instance-set-state-argument@system,
	dzn/templates/c++/pure-virtual-method-declare@trigger,
	dzn/templates/c++/meta-shell@system,
	dzn/templates/c++/prefix-formals-type@formal: Remove.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Remove dead templates.
	* dzn/templates/dzn/variable-expression@expression,
	dzn/templates/c++/variable-expression@expression,
	dzn/templates/c/variable-expression@expression,
	dzn/templates/makreel/variable-expression@expression: Remove.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	dzn: Remove dead templates.
	Try:

	    diff -u <(grep -ho 'x:[^]" ();]*' dzn/templates/dzn/* | sed s,x:,, | sort -u) \
	        <(ls dzn/templates/dzn | grep @ | sed s,@.*,, | sort -u) | grep ^[-+]\
	        | LANG= sort

	note that `dzn' carries some base template files, symlinked by other
	languages; not all are dead.

	* dzn/templates/dzn/expression-not@equal,
	dzn/templates/dzn/port-event@event,
	dzn/templates/dzn/port-event@port: Remove.
	* dzn/code/dzn.scm (dzn:scope+name): Inline into...
	(dzn:enum-literal): ...this.

2021-02-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Remove dead symlinks.
	* dzn/templates/c++/direction@direction,
	dzn/templates/c++/header@foreign,
	dzn/templates/c/expression-not@equal,
	dzn/templates/javascript/direction@direction,
	dzn/templates/makreel/expression-not@equal,
	dzn/templates/scheme/direction@direction: Remove.

	html: Remove language.
	* dzn/templates/html: Remove.

2021-02-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test c: Fix for generated main in sub directory.
	* test/lib/build.scheme.make ($(OUT)/test): Typo.

	test: Add parse_assign_void.
	* dzn/wfc.scm (call-context): Fix typo.
	* test/all/parse_assign_void/baseline/verify/parse_assign_void.stderr,
	test/all/parse_assign_void/parse_assign_void.dzn: New files.

2021-02-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	makreel: Move .variable.name to goops.
	* dzn/code/makreel.scm (.variable.name)[action]: Move to...
	* dzn/goops.scm (.variable.name) [action]: ...here.

	goops: Cleanups.
	* dzn/goops.scm: Do not export <*-node>s.  Remove commented-code.
	(<acceptances>, <action-out>, <compliance-error>, <no-match>, <<q-in>,
	<q-out>, <q-trigger>): Remove old "step" remnants.

	ast: Remove old "step" remnants.
	* dzn/ast.scm (ast:acceptance*): Remove.

2021-01-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	traces: Add --traces option.
	* dzn/commands/traces.scm (parse-opts): Add --traces option.
	(model->traces): Use it to force trace output with --lts.
	* doc/dezyne.texi (Invoking dzn traces): Mention it.

2021-01-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	traces: Remove dead code, resurrect --lts.
	* dzn/lts.scm (lts->traces): Remove unused lts? option.
	* dzn/commands/traces.scm (model->traces): Update caller.  Remove
	creation and removal of unused temp dir.  Remove unused "commands".
	Write lts when --lts.
	* doc/dezyne.texi (Invoking dzn traces): Mention it, also mention the
	use of mCRL2.
	(Invoking dzn lts): Add index entries.

2020-09-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	trace: Factor-out 'step:trace->structured'.
	* dzn/commands/trace.scm (trace->steps): Rename to ...
	(trace:trace->steps): ... this.
	(trace:trace->structured): New procedure.
	(step:format-trace): Rename to ...
	(trace:format-trace): ...this.  Use it.

2021-01-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: get-model: Throw if model-name not found.
	* dzn/ast.scm (ast:get-model): When model-name is given, throw
	exception if not found.
	* dzn/commands/parse.scm (parse): Catch it unless --debug.
	* dzn/parse.scm (parse:handle-exceptions): Handle it.
	* test/all/parse_import_both/baseline/verify/parse_import_both.stderr,
	test/all/parse_import_twice/baseline/verify/parse_import_twice.stderr:
	Update baseline.

2021-02-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	.gitignore: Ignore manual pages.
	* .gitignore: Ignore doc/*.1.

2021-01-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	.dir-locals: Add with-directory-excursion.
	* .dir-locals.el (scheme-mode): Add with-directory-excursion.

2021-02-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_interface_parens.
	This should either exit with a parse error, or verify OK.  It generates
	invalid mCRL2

	    [parser::error]   Line 251, column 32: syntax error after '='
	    [parser::error]     Stack'parse_interface_parens' = struct stack_empty'parse_interface_parens'

	* test/all/parse_interface_parens/parse_interface_parens.dzn: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.
	(XFAIL_TESTS): Add it.

2021-02-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add alpha_local2.
	This test generates broken c++ code:

	    test/all/alpha_local2/out/c++/alpha_local2.cc: In member function ‘bool alpha_local2::h_hello()’:
	    test/all/alpha_local2/out/c++/alpha_local2.cc:28:26: error: ‘bx’ was not declared in this scope
	       this->reply_bool = bx;
	                          ^~
	* test/all/alpha_local2/alpha_local2.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	(XFAIL_TESTS): Add it.

2021-01-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add compound_local_assign_call.
	This test generates invalid mCRL2 code:

	    compound_local_assign_call'5(return_value: Bool) = compound_local_assign_call'6(l'1 = return_value);
	    compound_local_assign_call'6 = h'reply (ihello'Void(void)) . compound_local_assign_call'7 ;

	* test/all/compound_local_assign_call/compound_local_assign.dzn: New
	test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	(XFAIL_TESTS): Add it.

2021-02-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Remove om:bind.
	* dzn/code.scm (om:port-bind?): Rename to...
	(code:port-bind?): ...this.
	(code:port-name, code:instance-name): Update users.
	(om:port-bind, om:bind): Remove.
	* dzn/templates/code.scm (system-port-connect): Update user.

	code: Remove code:language.
	* dzn/code.scm (code:language): Remove.

	dzn: Remove dzn:->string.
	* dzn/code.scm (code:type-name): Remove dzn:->string.
	* dzn/code/c++.scm (c++:type-name): Likewise.
	* dzn/code/dzn.scm (dzn:data): Likewise.
	(dzn:->string): Remove it.
	* dzn/templates/dzn/type-name@data: New template.
	dzn/templates/c++/type-name@data,
	dzn/templates/cs/type-name@data: New symlink.
	* dzn/templates/dzn/data@top: New file.

	code: Remove code:scope+name.
	* dzn/code/dzn.scm (dzn:model-full-name): New method.
	* dzn/code.scm (code:fullscope): Remove.
	(code:scope+name): Remove.
	(code:scope.name)[enum-literal]: New specialization.
	(code:enum-scope)[enum,field-test]: Remove specialization.
	(code:enum-model-scope): Remove.

	code: Remove header- template.
	* dzn/templates/code.scm (header-): Remove.
	* dzn/code.scm (code:x-header-): Remove.

	code: Remove "mortal sin".
	* dzn/code.scm (code:main-out-arg-define-formal, code:trace-q-out):
	Remove "mortal sin".

	c++: Move specialization out of code.
	* dzn/code.scm (code:dzn-locator): Move to ...
	* dzn/code/c++.scm (c++:dzn-locator): ...here.
	* dzn/templates/c++.scm (dzn-locator): Update accordingly.
	* dzn/templates/c++/dzn-locator@instance: New file.

	code: Remove %language parameter.
	* dzn/code.scm (code:main-out-arg, code:variable-name): Remove
	%language parameterization.
	* dzn/commands/code.scm (main): Likewise.
	* dzn/commands/verify.scm (model->mcrl2): Likewise.
	* dzn/command-line.scm (%language): Remove.

	code: Remove entangled toplevel.
	* dzn/code/dzn.scm (%x:source, dzn:extension, %dzn:indenter,
	pipe, dzn:indent): Remove.
	* dzn/code.scm (%x:header, %x:main, have-non-interface-models?,
	code:dump, code:dump-main, code:foreign?, code:header?, code:module,
	code:skel-file, ast->, code:root->): Remove.

	test: hello_foreign: Resurrect for c.
	* dzn/templates/c/include-guard@foreign: New file.
	* test/all/hello_foreign/c/foreign.h: Rename to...
	* test/all/hello_foreign/c/Foreign.h: ..this.  Update accordingly.
	* test/all/hello_foreign/c/foreign.c: Rename to...
	* test/all/hello_foreign/c/Foreign.c: ..this.  Update accordingly.

	c: Update expressions.
	dzn/templates/c/: Update expressions: link to dzn.

	javascript: Remove dead template.
	* dzn/templates/javascript/member-name@variable: Remove.

	c: Update for #:name => #:ids.
	* dzn/code/c.scm (c:formal-data-type): Use ast:name.
	(c:type-name): Likewise.

	test: Resurrect c.
	* test/lib/build.c.make (DEVELOPMENT): New variable.
	(RUNTIME_SOURCES): Use it in new variable.
	(RUNTIME_O): Use it in new variable.
	($(OUT)/test): Use it.  Remove unused MAIN_O.
	* test/lib/build.c++.make ($(OUT)/test): Remove unused MAIN_O.
	* test/lib/local.mk (EXTRA_DIST): Add it.

	code: Update symbol->enum-field to string->enum-field.
	* dzn/code.scm (symbol->enum-field): Rename to...
	(string->enum-field): ...this.
	* dzn/code/c++.scm (c++:enum-field->string): Update users.
	* dzn/code/c.scm (c:get-enum-fields-of-enum): Likewise.

	c: Ast fixes for symbol -> string.
	* dzn/code/c.scm (c:namespace-upcase, c:enum-complete-name-upcase):
	Use string-upcase.

	c: Refactor toplevel.
	* dzn/code/c.scm (root->): New procedure.
	(c:root->): Remove.
	(ast->): Update accordingly.

	build: Help autoconf-2.69 to accept c11 as c99.
	* configure.ac: Accept have_cxx11=true alongside ac_cv_prog_cc_c99.

	cs: Refactor toplevel.
	* dzn/code/cs.scm (root->): New procedure.
	(cs:root->): Remove.
	(ast->): Update accordingly.

	javascript: Refactor toplevel.
	* dzn/code/javascript.scm (root->): New procedure.
	(javascript:root->): Remove.
	(ast->): Update accordingly.

	scheme: Refactor toplevel.
	* dzn/indent.scm (indent): Rename parameter "#:indent" to "#:width".
	* dzn/code-util.scm (code-util:indenter): Add keyword arguments
	"#:width", "#:open", "#:close", "#:no-indent".
	* dzn/code/scheme.scm (root->): Use them in new procedure.
	(scheme:root->): Remove.

	runtime cs: Typo, fixes async rank.
	* runtime/cs/dzn/pump.cs (dzn): Use k.Key instead of k.Key.t: Use full
	Key (Deadline: timeout + rank) to sort timers.

	test: async_ranking: Print ranking in main.cs.
	* test/all/async_ranking/main.cs (Main): Print ranking.

2021-02-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cs: Ast fixes for symbol -> string.
	* dzn/code/cs.scm (direction, formals, cs:args): ): Use symbol for
	direction.

	cs: Namespace fix.
	* dzn/templates/cs.scm (bind-interface-name): Use ast:full-name.  Fixes
	hello_namespace_foreign.

	c++: Remove unused include-statement template.
	* dzn/templates/c++.scm (include-statement): Remove.

	build: Remove GNU make'ism.
	* Makefile.am (GPG_KEY_ID): Use regular assign.  Fixes automkae warning.

	test: hello_namespace_foreign: Add foreign.cs.
	* test/all/hello_namespace_foreign/cs/foreign.cs: New file.

	cs: Do not expand imported foreigns.
	* dzn/code/cc.scm (cs:model): Remove foreign exception.

	code: Do not expand imported foreigns.
	* dzn/code.scm (code:model): Remove foreign exception.

	test: code: Use language include directory, instead of "dzn".
	* test/dzn/dzn.scm (run-code): Add language-specific include directory
	instead of "dzn".
	* test/all/dollars/javascript/includes.dzn: New file.

	test: async_rank: Add main.cs.
	* test/all/async_rank/main.cs: New file.

	test: async_order2: Hardcode trace 2 test in main.cs.
	* test/all/async_order2/main.cs (Main): Update from main.cc.

	test: async_order: Hardcode trace 2 test in main.cs.
	* test/all/async_order/main.cs (Main): Update from main.cc.

	test: cs: Ignore generated main when a handwritten main exists.
	* test/lib/build.cs.make (MAIN): Remove.
	(IN_SOURCES, OUT_SOURCES, RUNTIME_SOURCES): New
	variables.
	($(OUT)/test.exe): Use them.

	test: hello_foreign: Fixes for cs.
	* test/all/hello_foreign_file/cs/glue.cs: Remove.
	* test/all/hello_foreign/cs/foreign.cs: Rename to...
	* test/all/hello_foreign/cs/Foreign.cs: ..this.
	(foreign): Rename to ...
	(Foreign): ...this.

	cs: Ast fixes for #:name -> #:ids.
	* dzn/code/cs.scm (formals, cs:args): Use #:ids instead of #:name.

	c++: Do not expand imported foreigns.
	* dzn/code/c++.scm (c++:model): Remove foreign exception.
	* test/all/hello_foreign_file/c++/stranger.hh: Fix include guards.
	Include "foreign.hh".
	* test/all/hello_foreign_file/c++/stranger.cc: Include "stranger.hh"
	instead of "hello_foreign_file.hh".

	test: Add foreign_import_system.

	runtime cs: Skip foreign events.
	* runtime/cs/dzn/container.cs: Skip events with multiple dots.

	scheme: Fix local variable in blocking context.
	* test/all/blocking_local/blocking_local.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* dzn/templates/scheme/statement@blocking-compound: Use
	"#x:let-variable" instead of "begin".

	scheme: Fix blocking reply in if-clause.
	* test/all/blocking_if_reply/blocking_if_reply.dzn: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* dzn/templates/scheme/statement@reply: Wrap assign and release in
	begin.

	test: Disable shell for javascript.
	* test/all/shell/META: Skip execute for javascript.

	test: hello_local: Remove trace.
	* test/all/hello_local/trace: Remove.

2021-02-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Whitespace cleanups.
	* dzn/templates/scheme.scm (declare-method, declare-async-req-method,
	declare-async-clr-method, expand-on, injected-port-instance-declare,
	injected-member-initializer, provided-port-instance-declare,
	required-port-instance-declare, async-port-instance-declare,
	non-injected-instance-declare, provided-port-reference-declare,
	required-port-reference-declare, provided-port-reference-initializer,
	required-port-reference-initializer, header-data,
	out-binding-initializer): Add newline-infix.
	* dzn/templates/scheme.scm: Remove traling newlines.  Indent template
	invocations, so that "indent" can remove expansion to zero.

	javascript: Whitespace cleanups.
	* dzn/templates/javascript.scm (require-module): Add newline-infix.
	* dzn/templates/javascript: Remove trailing newlines.

	code: Remove code:name.name.
	* dzn/templates/dzn/source@namespace: Remove unused template.
	* dzn/templates/dzn/define-type@extern,
	dzn/templates/javascript/enum-definer@enum:
	dzn/templates/javascript/global-enum-definer@enum: Use ast:name
	instead of code:name.name.
	* dzn/code.scm (code:name.name): Remove.

2021-02-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Whitespace cleanups.
	* dzn/templates/code.scm,
	dzn/templates/c++.scm: Use newline-infix for accessors.
	* dzn/templates/c++: Remove trailing newlines.  Indent template
	invocations, so that "indent" can remove expansion to zero.

	dzn: Whitespace cleanups.
	* dzn/templates/dzn/declare-instance@instance,
	dzn/templates/dzn/in-event@event,
	dzn/templates/dzn/statement@if,
	dzn/templates/dzn/system@system: Whitespace fixes.

2021-02-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	indent: Remove empty lines that contain whitespace.
	Assuming that hard newlines in templates have no trailing whitespace,
	then empty lines are produced by a template expanding to nothing.

	* dzn/indent.scm (eat-space): Return space eaten.
	(indent): Refactor.  Remove empty lines with trailing whitespace.

2021-02-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	templates: Enable debugging, cleanups.
	Template debugging can be enabled by setting the environment variables

	   DZN_DEBUG_TEMPLATE=x
	   DZN_DEBUG_TEMPLATE2=x
	   DZN_DEBUG_TEMPLATE_ACCESSOR=x

	* dzn/templates.scm (display-primitive): Rename to...
	(display-template): ...this.
	(tree->body): Cleanups, enable debugging with environment variables.

2021-02-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: Remove glue code generation.
	* doc/dezyne.texi (Migrating from ASD to Dezyne): Remove.
	* dzn/code.scm (code:glue): Remove.  Update callers.
	* dzn/glue.scm: Remove.
	* dzn/local.mk (dist_%C%_scm_DATA): Remove it.
	* dzn/templates/glue.scm: Remove.
	* dzn/templates/local.mk: (dist_nocompile_%C%_scm_DATA): Remove it.
	* dzn/code/c++.scm: Do not include it.
	(c++:header-model-glue): Remove.
	* dzn/templates/c++: Remove glue.

	c++: Refactor toplevel.
	* dzn/code/dzn.scm (dzn-async?: Move to...
	* dzn/ast.scm (ast:async?)[interface]: ...this new specialization.
	Update users.
	(ast:base-name): New method.
	* dzn/code-util.scm (code-util:foreign-conflict?,
	code-util:generate-source?): New methods.
	* dzn/code/c++.scm (root->): Use them in new procedure.
	(c++:dump, c++:root->): Remove.
	(ast->): Update accordingly.
	* test/all/hello_foreign_conflict: Rename to...
	* test/all/foreign_conflict: ...this.
	* test/all/local.mk (XFAIL_TESTS): Move here.

2021-02-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	dzn: Refactor toplevel.
	* dzn/code-util.scm: New file.
	* dzn/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/code/dzn.scm (root->): Use it in new procedure.  This removes
	dependency on dzn:dump, dzn:extension, dzn:indenter, dzn:language,
	%language, and %x:source.
	(ast->): Use it.
	(dzn:dump, dzn:file2file, dzn:om): Remove.

2021-02-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++msvc11: Remove remnants.
	* runtime/c++-msvc11/pump.cc,
	runtime/c++-msvc11/runtime.cc,
	test/all/shell/c++-msvc11/main.cc: Remove.
	* test/lib/build.c++-msvc11.make: Remove.

2021-02-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++03: Remove.
	* runtime/c++03/dzn/container.hh,
	runtime/c++03/dzn/coroutine.hh,
	runtime/c++03/dzn/locator.hh,
	runtime/c++03/dzn/meta.hh.in,
	runtime/c++03/dzn/pump.hh,
	runtime/c++03/dzn/runtime.hh,
	runtime/c++03/pump.cc,
	runtime/c++03/runtime.cc: Remove runtime.
	* .gitignore: Update accordingly.
	* configure.ac: Remove checks for boost and c++03.  Remove "have_c++03"
	conditional.
	* dzn/code/c++03.scm: Remove.
	* dzn/code/local.mk (dist_%C%_scm_DATA, dist_noinst_DATA): Remove it.
	* dzn/templates/c++03.scm: Remove.
	* dzn/templates/c++03: Remove templates.
	* test/all/empty_dollars/META,
	test/all/hello_namespace_shadow/META: Remove exception for c++03.

2021-02-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++-msvc11: Remove remnants.
	The code module for c++-msvc11 was not ported to 2.10; some files
	remained in the archive, though.

	* runtime/c++-msvc11/dzn/meta.hh.in: Remove file.
	* .gitignore: Update accordingly.
	* runtime/c++-msvc11/dzn/container.hh,
	runtime/c++-msvc11/dzn/context.hh,
	runtime/c++-msvc11/dzn/coroutine.hh,
	runtime/c++-msvc11/dzn/locator.hh,
	runtime/c++-msvc11/dzn/pump.hh,
	runtime/c++-msvc11/dzn/runtime.hh: Remove symlink.

2021-02-15  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parse: Filter duplicate imports based on prefix.
	* dzn/parse.scm (file+import-content-alist): Use canonicalization to
	avoid importing a file twice.
	* test/all/parse_duplicate_import_prefix: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

	parse: Fix import error.
	* dzn/parse.scm (parse:handle-exceptions): Update wording.
	(file+import-content-alist): Throw exception when imported file is not
	found.
	(imported-from): Add docstring.
	* test/all/parse_non_existent_import: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.

2021-01-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Fix parse-error in trace.
	Reported by Joran Jessurun <joran.jessurun@gmail.com> via IRC.

	* dzn/verify/traces.scm (parse): Add port-scope to 'flush'.  Fixes
	parse-error for flush in namespace.

2021-02-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: async_prio: Typo fix.
	* test/all/async_prio/main.scm (main): Typo.

2021-02-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "REVERTME Use binary tarball suffixes for ANNOUNCE."
	This reverts commit d57bcaf9cab732fe6c145034b18b5eb33fe7a5df.

	doc: Add gitlab dezyne bug list.
	* doc/dezyne.texi (Contributing): Mention bug list.

2021-01-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	doc: Add bug reporting to Contributing.

2021-01-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update ANNOUNCE-2.11.0.
	* doc/announce/ANNOUNCE-2.11.0: Fix issues link.

2021-01-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	doc: Update ANNOUNCE-2.11.0.
	* doc/announce/ANNOUNCE-2.11.0: Post-release update: add hashes.
	Reword, add bug reporting.  Update dzn-lsp version.

2021-01-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Oops use `$(PACKAGE)' as default for gen-announce.
	* Makefile.am (--package-name): Use $(PACKAGE).

2020-12-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.11.0.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.11.0.

2020-12-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Add ANNOUNCE-2.11.0.
	* doc/announce/ANNOUNCE-2.11.0: New file.

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.11): Remove, moving items to ...
	(Release 2.12): ...here when open, and to...
	(DONE): ...here when done.

2020-12-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.11.0.rc10.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.11.0.rc10.

2020-12-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.11.0.rc9.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.11.0.rc9.

2020-12-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.11.0.rc8.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.11.0.rc8.

2020-12-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.10.1.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.10.1.

2020-12-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.11.0.rc7.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.11.0.rc7.

2020-12-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.11.0.rc6.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.11.0.rc6.

2020-11-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.11.0.rc5.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.11.0.rc5.

2020-11-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.11.0.rc4.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.11.0.rc4.

2020-11-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.11.0.rc3.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.11.0.rc3.

2020-11-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.11.0.rc2.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.11.0.rc2.

2020-10-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dezyne: Update to 2.11.0.rc1.
	* guix/gnu/packages/dezyne.scm (dezyne)[source]: : Update to 2.11.0.rc1.

2020-07-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: Update hash.
	* guix/gnu/packages/dezyne.scm (dezyne): Update hash.

2020-09-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	REVERTME Use binary tarball suffixes for ANNOUNCE.
	* Makefile.am (gen-announce): Use x86_64-linux.tar.gz, i686-windows.zip.

2020-08-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Add dezyne-tutorial.
	* .gitignore: Update.
	* Makefile.am (html-manual, html-tutorial): New targets.
	(html): Use them.
	(doc/html/dezyne-tutorial/index.html): New target.
	(publish): Also publish tutorial.
	(doc/version-tutorial.texi): New target.

2020-07-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rob Wieringa  <Rob.Wieringa@verum.com>.

	doc: Add dezyne-tutorial.
	TODO: Remove Eclipse, general review.  Move (parts) into dezyne-ide?


	* doc/dezyne-tutorial.texi: Initial import.

2020-03-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `HACKING'.
	* HACKING: Add info for Documentation hacking.

2020-03-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Add Programming Index'.
	TODO: sort/split @cindex entries

	* doc/dezyne.texi (Concept Index): Rename from `Index'.
	(Programming Index): New node.

2020-12-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'NEWS'.
	* NEWS: Release update.

2020-12-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'ROADMAP'.
	* ROADMAP (Release 2.11, unsorted): Remove cruft.  Move done items...
	(DONE): ...here.

2020-12-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Parameterize package-name for gen-announce.
	* Makefile.am (--package-name): Use $(PACKAGE_NAME).

2020-12-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Do not use include path to resolve top level file.
	This makes "dzn parse -I . /no/such/dir/hello.dzn" fail instead of silently
	picking-up ./hello.dzn.

	* dzn/parse.scm (file+import-content-alist): Refactor: Move initial
	read of loop.  Move pre-processing check out of loop.  Do not accumulate
	import path.
	(imported-file-names): Remove loop.
	* test/all/parse_import_both/ihello.dzn,
	test/all/parse_import_both/one.dzn,
	test/all/parse_import_both/parse_import_both.dzn,
	test/all/parse_import_both/two.dzn,
	test/all/parse_import_both/baseline/verify/parse_import_both.stderr: New
	test with baseline.
	* test/all/parse_import_twice/ihello.dzn
	test/all/parse_import_twice/parse_import_twice.dzn,
	test/all/parse_import_twice/baseline/verify/parse_import_twice.stderr:
	New test with baseline.

2020-12-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Support --parse-tree and --peg and file stream.
	* dzn/parse.scm (file->ast): Oops, pass #:parse-tree? #:skip-wfc? to
	string->ast.

2020-12-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lookup: Support port,event lookup for illegal triggers.
	* dzn/parse/tree.scm (.event-name, .port-name): Support
	illegal-trigger.
	* dzn/parse/lookup.scm (resolve-trigger): Handle illegal-trigger.
	(context-lookup-definition): Expect illegal-trigger.
	* test/language/illegal.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("lookup illegal interface trigger->event"),
	("lookup illegal trigger->port"),
	("lookup illegal trigger->event"): Use it in new tests.

2020-12-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Avoid installation of disabled languages.
	* dzn/code/local.mk (dist_noinst_%C%_scm_DATA): Change to
	(dist_noinst_DATA): ..this.
	* dzn/templates/local.mk
	* dzn/templates/local.mk (dist_nocompile_%C%_scm_DATA): When disabled, use...
	(dist_noinst_DATA): ...this.

2020-12-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cat, ls: Remove commands.
	* Makefile.am (dist_man_MANS): Remove entries for dzn-cat.1 and
	dzn-ls.1.
	* doc/dezyne.texi ("Invoking dzn cat"),
	("Invoking dzn ls"): Remove.
	* dzn/commands/cat.scm,
	dzn/commands/ls.scm: Remove.
	* dzn/commands/local.mk (dist_%C%_scm_DATA): Remove them.
	* dzn/config.scm.in (%root-dir): Remove.

2020-12-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	cat, ls: Support reading from DZN_FSROOT.
	* dzn/config.scm.in (%root-dir): Use DZN_FSROOT if set.
	* dzn/commands/cat.scm (main): Handle /share.
	* dzn/commands/ls.scm (main): Likewise.

2020-12-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Do not add c++ when --enable-languages is given.
	This supports building --enable-languages=scheme without adding c++.

	* configure.ac: Set have_cxx11 to false if not in enable_languages.

2020-12-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: language: Complete interface names in incomplete port.
	* dzn/parse/complete.scm (context:complete): Complete interface names
	in incomplete port.
	* test/language/component1b.dzn: Add more trailing whitespace.
	* test/dzn/language.scm ("language component1b --point=15,10"):
	("language component1b --point=15,11"),
	("language component1b --point=15,12"),
	("language component1b --point=16,0"): Use it in new tests.

2020-12-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: Remove %peg:fall-back? condition.
	* dzn/parse/peg.scm (-enter-frame-): Remove condition.
	(-exit-frame-): idem.
	(-add-var-): idem.
	(-var-): idem.

2020-12-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: import-skip-parser: Parse to */ or EOF for imports.
	* dzn/parse/peg.scm (peg-eof): Add EOF skip parser.
	(peg-block-strict): Rename.
	(peg-import-skip): New skip parser for imports.
	(peg:import-skip-parse): Export peg-import-skip.
	* dzn/parse.scm (imported-file-names): Use peg:import-skip-parse.
	(peg:syntax-error->message): Extend match for strings.

	parse: Refactor error handling.
	* dzn/parse.scm (peg:syntax-error-message): Remove function.
	(peg:handle-syntax-error): Remove duplicate condition, inline removed function.
	(string->parse-tree): Add comment.

2020-12-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	language: Better support for namespaces.
	* dzn/parse/tree.scm (.name): Support namespace.
	* dzn/parse/lookup.scm (look-in-scope): Always look in imports when at
	root.
	(lookup-n): When moving out of a namespace, add its scope to the name.
	(resolve-port): Lookup interfaces in namespace too.
	* test/language/space-hello.dzn,
	test/language/space-ihello.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.
	* test/dzn/language.scm ("completion provides interfaces, imported, namespace"),
	("lookup port->namespace-interface"): Use them in new tests.

2020-12-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	peg: Add namespace-root indirection for elements.
	This produces a well-behaved namespace root in the parse tree.

	* dzn/parse/peg.scm (peg:parse)[namespace]: Move (type / namespace /
	interface / component) to...
	[namespace-root]: ...here.
	* dzn/parse/ast.scm (parse-tree->ast)[namespace-root]: Add matcher.
	[namespace]: Update accordingly.
	* dzn/parse/tree.scm (.namespace-root): New procedure.
	(tree:declaration*, tree:top*): Use it.

2020-12-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: language: Add component1a, component1b.
	* test/language/component1a.dzn,
	test/language/component1b.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.
	* test/dzn/language.scm ("language component1a"),
	("language component1b"): Use them in new tests.
	* dzn/parse/complete.scm (context:complete): Add port-qualifiers.

2020-12-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_missing_event.
	* test/all/parse_missing_event/parse_missing_event.dzn: New test.
	* test/all/parse_missing_event/baseline/verify/parse_missing_event.stderr:
	With baseline.
	* test/all/local.mk (PARSER_TESTS): Add it.

2020-11-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_parameter_mismatch.
	* test/all/parse_parameter_mismatch/parse_parameter_mismatch.dzn: New test.
	* test/all/parse_parameter_mismatch/baseline/verify/parse_parameter_mismatch.stderr:
	With baseline.
	* test/all/local.mk (PARSER_TESTS): Add it.
	* dzn/wfc.scm (argument-type-check): New procedure.
	(wfc)[<arguments>]: New specialization.
	[<action>,<call>]: Use it.
	[<formals>]: New specialization.
	[<trigger>]: Use it.
	* dzn/ast.scm (.event, ast:event-formal): Robustify agains non
	well-formed ast.
	* test/all/wf_undefined/baseline/verify/wf_undefined.stderr: Update baseline.

2020-12-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	language: Support completion lookup in imports.
	* dzn/parse/complete.scm (complete): Add parameter #:resolve-file.
	* dzn/parse/tree.scm (tree:model*): Remove.
	(tree:top*): Resolve imports.
	(tree:namespace*, tree:component*, tree:interface*): Use it.
	* test/dzn/language.scm (test-complete): Add parameter #:file-name->parse-tree.
	("completion provides imported interfaces",
	"completion on imported triggers"):  New tests.

2020-12-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	language: Refactor lookup in imports.
	* test/language/ienum.dzn,
	test/language/ihello-enum.dzn,
	test/language/ihello-int.dzn,
	test/language/ihello.dzn,
	test/language/iint.dzn,
	test/language/import.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.
	* test/dzn/language.scm:
	("lookup call->function",
	"lookup on->imported trigger-port",
	"lookup port->imported-interface",
	("lookup type->imported enum"): Use them in new tests.
	* dzn/parse/lookup.scm (%file-name->parse-tree): Move to..
	* dzn/parse/tree.scm (%file-name->parse-tree): ...here.
	(%resolve-file): New parameter.
	(lookup-location): Add #:resolve-file parameter.
	(lookup-definition): Likewise.

	language: Add file-name to lookup result.
	* dzn/parse/tree.scm (tree:file-name): New procedure.
	(tree:add-file-name): New procedure.
	(.end, .file-name, .pos): Support locations with file-name.
	* dzn/parse/lookup.scm (tree:lookup-var): Use it to
	return location with file-name.
	(look-in-scope): Likewise.  Add context parameter.
	(lookdown): Likewise.  Update callers.
	(lookup-n): Likewise.
	(tree:->location): New procedure.
	(lookup->location): Remove.
	(lookup-location):
	* dzn/commands/language.scm (lookup): Remove kludge to add file-name
	to result.

	parse: Add file-name to root.
	* dzn/parse.scm (string->parse-tree): Add file-name to root.
	* dzn/parse/ast.scm (parse-tree->ast): Handle file-name.

	language: Use debugity and stderr instead of verbose and stdout.
	* dzn/commands/language.scm (main): Use debugity and stderr instead of
	verbose and stdout.

2020-12-02  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	language: Support function lookup.
	* dzn/parse/tree.scm (.name): Support 'call.
	(.function-name): New procedure.
	* dzn/parse/lookup.scm (resolve-call): New procedure.
	(context-lookup-definition): Use them to lookup function.
	* test/language/function.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("lookup call->function"): New test.

2020-11-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: language: Support completion of enum literal, field, local, reply.
	* dzn/parse/complete.scm ( context:locals, context:members,
	complete:variable-names, complete-enum, complete:type-names,
	complete-enum-literal, complete-on): New procedures.
	(complete): Use them, to pass new tests:
	* test/language/component-enum.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("completion enum literal"),
	("completion enum field"),
	("completion enum local"),
	("completion enum reply"): Use them in new tests.
	("completion component-enum local"): Update.

	language: Support typed expression completion.
	* dzn/parse/complete.scm (at-location?): When incomplete, ignore end
	location.
	(context:event-names): Add #:predicate keyword parameter.
	(context:port-event-names): Add #:event-predicate parameter, pass it.
	(context:trigger-names): Likewise.
	(context:action-names): Likewise.
	(tree:function-names): New procedure.
	(complete): Use them, to pass new tests:
	* test/language/component-enum-local.dzn,
	test/language/component-enum-member.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.
	* test/dzn/language.scm ("completion component-enum member"),
	("completion component-enum local"): Use them in new tests.

2020-11-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Johri van Eerd  <johri.van.eerd@verum.com>

	language: Add formals to completion of trigger.
	* test/language/component-on.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* dzn/parse/complete.scm (tree:port-event-names): Add formals to
	completion of trigger.
	(complete): Add case for component-on.dzn.
	* test/dzn/language.scm ("completion component-on"): New test.
	("language component2", "language component3", "language component4",
	"language component5", "language component6", "language component9",
	"language component9a", "language component10", "language
	component10a"): Update to add triggers.

2020-11-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	lookup: Fix field-test lookup of field.
	Reported by Paul Hoogendijk <paul.hoogendijk@verum.com> via IRC.

	* test/language/enum.dzn: New file.
	* test/language/local.mk (EXTRA_DIST): Add it.
	* test/dzn/language.scm ("lookup field-test->var", "lookup
	field-test->enum-field"): Use it, fix broken baseline.
	* dzn/parse/lookup.scm (resolve-field-test): Oops, do not shadow
	"name".

2020-11-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Johri van Eerd  <johri.van.eerd@verum.com>

	language: Add completion tests.
	* test/language/component-behaviour.dzn,
	test/language/component-empty.dzn,
	test/language/component-provides.dzn,
	test/language/component-state.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Add them.
	* test/dzn/language.scm ("completion component-empty", "completion
	component-provides", "completion component-behaviour", "completion
	component-state"): Use them in new tests.
	* dzn/parse/complete.scm (tree:port-event-names): Add formals.
	(tree:int-names, tree:type-names, tree:enum-value-names,
	tree:type-value-names): New procedures.
	(complete): Use them to fix new completion tests.

2020-11-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	language: Make ,COLUMN optional in --point=LINE[,COLUMN].
	* dzn/commands/language.scm (parse-opts): COLUMN is optional and
	defaults to 0.
	(main)[string->point]: Support missing column.

2020-11-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	complete: Add test and fix trigger and action completion.
	* dzn/parse/complete.scm (complete): New completion meme.
	* test/dzn/language.scm ("language component3"): Fix expectation.
	("language component4"): Fix expectation.
	("language component9"): New test.
	("language component9a"): New test.
	("language component10"): New test.
	("language component10a"): New test.
	* test/language/component9.dzn: New test input.
	* test/language/component9a.dzn: New test input.
	* test/language/component10.dzn: New test input.
	* test/language/component10a.dzn: New test input.
	* test/language/local.mk (EXTRA_DIST): Add them.

2020-11-23  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parse: Regular parse before fall-back.

2020-11-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	commands: Allow options after file names.
	Revert long standing thinko, we need to stop parsing to find the command
	in the top level script; the command scripts can be more relaxed.

	* dzn/commands/cat.scm (parse-opts): Remove #:stop-at-first-non-option.
	* dzn/commands/code.scm (parse-opts): Likewise.
	* dzn/commands/hello.scm (parse-opts): Likewise.
	* dzn/commands/language.scm (parse-opts): Likewise.
	* dzn/commands/ls.scm (parse-opts): Likewise.
	* dzn/commands/parse.scm (parse-opts): Likewise.
	* dzn/commands/trace.scm (parse-opts): Likewise.
	* dzn/commands/traces.scm (parse-opts): Likewise.
	* dzn/commands/verify.scm (parse-opts): Likewise.
	* dzn/scm2json.scm (parse-opts): Likewise.

2020-11-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Add -f,--fall-back option.
	* dzn/commands/parse.scm (parse-opts): Add -f,--fall-back option.
	(parse): Use it to enable %peg:fall-back? parser.

2020-11-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: language: Start lookup test suite.
	* test/dzn/language.scm (test-context): New procedure, split out
	from...
	(test-complete): ...here.
	(file-name->parse-tree): New procedure.
	(test-lookup): Use it.
	("lookup"): New test suite.
	* test/language/deep-space-enum.dzn,
	test/language/ilookup.dzn,
	test/language/int.dzn,
	test/language/interface-enum.dzn,
	test/language/lookup.dzn,
	test/language/namespace-enum.dzn,
	test/language/system.dzn: New files.
	* test/language/local.mk (EXTRA_DIST): Update accordingly.

	language: Add -l,--lookup option.
	* dzn/commands/language.scm (main): Add -c,--complete and -l,--lookup
	options.  Add support for --lookup.

	test: language: Refactor "complete" test.
	* test/dzn/language.scm (assert-completion-options, assert-completion,
	assert-completion-offset): Remove.
	(test-complete): New procedure.
	("language"): Use it to refactor tests.  Move baselines to test code.
	("language interface0"): Rename to ...
	("language empty"): ...this.
	("language interface1"): Rename to ...
	("language interf_"): ...this.
	("language interface1b"): Rename to ...
	("language interface _"): ...this.
	("language interface2"): Rename to ...
	("language interface-I"): ...this.
	("language interface3"): Rename to ...
	("language interface I {"): ...this.
	("language interface4"): Rename to ...
	("language interface I { in _"): ...this.
	("language interface5"): Rename to ...
	("language interface I { ..; in _"): ...this.
	* test/language/interface2.dzn: Rename to ...
	* test/language/interface-I.dzn: ...this.
	* test/language/interface3.dzn: Rename to ...
	* test/language/interface-I-open.dzn: ...this.
	* test/language/interface4.dzn: Rename to ...
	* test/language/interface-I-in.dzn: ...this.
	* test/language/interface5.dzn: Rename to ...
	* test/language/interface-I-in2.dzn: ...this.
	* test/language/interface-I-enum-in.dzn
	* test/language/component0.dzn,
	test/language/interface0.dzn,
	test/language/interface1.dzn,
	test/language/interface1b.dzn: Remove.
	* test/language/component0.dzn.baseline,
	test/language/component1.dzn.baseline,
	test/language/component2.dzn.baseline,
	test/language/component3.dzn.baseline,
	test/language/component4.dzn.baseline,
	test/language/component5.dzn.baseline,
	test/language/component6.dzn.baseline,
	test/language/component7.dzn.baseline,
	test/language/component8.dzn.baseline,
	test/language/interface0.dzn.baseline,
	test/language/interface1.dzn.baseline,
	test/language/interface1b.dzn.baseline,
	test/language/interface5b.dzn.baseline,
	test/language/interface6.dzn.baseline,
	test/language/interface7.dzn.baseline,
	test/language/interface8.dzn.baseline,
	test/language/interface9.dzn.baseline,
	test/language/interface9b.dzn.baseline,
	test/language/typo.dzn.baseline: Remove.
	* test/language/local.mk (EXTRA_DIST): Update accordingly.

2020-11-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse/util: New library.
	* dzn/parse/util.scm: New file.
	* dzn/parse/local.mk (dist_%C%_scm_DATA): Add it.

	parse/lookup: New library.
	* dzn/parse/lookup.scm: New file.
	* dzn/parse/local.mk (dist_%C%_scm_DATA): Add it.

	parse/complete: Move and split-off completion library.
	* dzn/completion.scm: Move to ...
	* dzn/local.mk (dist_%C%_scm_DATA): ...remove it here...
	* dzn/parse/complete.scm: ...here, and split-out to...
	* dzn/parse/tree.scm: ...new file here.
	* dzn/parse/local.mk (dist_%C%_scm_DATA): Add them.
	* dzn/commands/language.scm: Update user.

2020-12-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	peg: Move port qualifiers out of direction.
	This produces a well-behaved port in the parse tree.

	* dzn/parse/peg.scm (peg:parse)[port-direction]: Move external?, injected? to...
	[port-qualifiers]: ...here.
	[port]: Add port-qualifiers.
	* dzn/parse/ast.scm (parse-tree->ast)[port]: Update accordingly.

2020-11-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	peg: Fix tree for behaviour, behaviour-compound.
	* dzn/parse/peg.scm (peg:parse)[behaviour-compound]: Move '*' ...
	[behaviour-statements]: ...here.

	peg: Fix deep backtracking on component-state.dzn.
	* dzn/parse/peg.scm (peg:parse)[not-expression]: Remove
	"!unknown-identifier".
	[assign,if-statement]: Add `#' for fall-back.
	* test/all/wf_variableInitExpression/baseline/verify/wf_variableInitExpression.stderr,
	test/all/undefined/interface/if/baseline/verify/if.stderr,
	test/all/undefined/interface/guard/baseline/verify/guard.stderr,
	test/all/undefined/component/if/baseline/verify/if.stderr,
	test/all/undefined/component/guard/baseline/verify/guard.stderr: Update baseline.

2020-11-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	peg: Remove add-var from parse-tree.
	* dzn/parse/peg.scm (peg:parse)[add-var]: Use body instead of all.
	* dzn/parse/ast.scm (parse-tree->ast): Remove case for 'add-var.

2020-11-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parse: Expose file+import-content-alist and imported-from for LSP.
	* dzn/parse.scm (file+import-content-alist): Change imports parameter
	to keyword #:imports, add #:content-alist parameter.

2020-11-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: Disallow newlines between dollars.
	* dzn/parse/peg.scm (dollars-no-skip): New function to disable skip
	parsing for dollars.
	* test/all/newlines_between_dollars/*: Add test.
	* test/all/local.mk (PARSER_TESTS): Add test.

2020-11-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Add 'dzn language'.
	* dzn/commands/language.scm: New file for command.
	* dzn/commands/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/completion.scm: New library for completion.
	* dzn/local.mk (dist_%C%_scm_DATA): Add it.
	* test/dzn/language.scm: New test for completion.
	* test/language/*: New test input and baselines for completion.
	* test/language/local.mk: New file to add them.
	* Makefile.am: Include it.
	(dist_man_MANS): Add doc/dzn-language.1.
	* doc/dezyne.texi ("Invoking dzn language"): New section.

2020-11-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg/codegen: Stop fall-back skipping whithout progress.
	* dzn/peg/codegen.scm (%fall-back-skip-at): New parameter.
	(fall-back-skip): Use it to stop when there is no progress.

	dzn/peg/codegen: Cleanup.
	* dzn/peg/codegen.scm (fall-back-skip): Catch 'syntax-error.
	(cg-and): Remove commented out code.

2020-11-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Refactor interface for IDE.
	* dzn/commands/parse.scm (dump-model-stream, parse-): Remove.
	(handle-parser-exceptions): Move to ...
	* dzn/parse.scm (parse:handle-exceptions) ... here.
	(file->ast): Use it to handle exceptions, except when new #:debug?
	parameter is set.
	(file->stream): Likewise, and and rename from...
	(preprocess): ...this.

2020-11-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parse, parse/peg: Report errors derived from PEG grammar.
	* dzn/parse.scm (peg:imported-from->message): Refactor to idiom.
	(peg:syntax-error->message): Handle unknown identifiers.
	* dzn/parse/peg.scm (peg:parse): Refactor PEG grammar to show
	cohesion.
	* test/all/undefined/*: Add undefined identifier tests.
	* test/all/*/baseline/*.stderr: Update baselines accordingly.

2020-10-28  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parse: Expose string->parse-tree in preparation for completion.
	* dzn/parse.scm (parse-file+import-content-alist): Refactor into ...
	(string->parse-tree): New function.

	parse/ast, parse/peg: Rename data to dollars.
	* dzn/parse/peg.scm (peg:parse): Use DOLLARS instead of DATA.
	* dzn/parse/ast.scm (parse-tree->ast): Update accordingly.
	* test/all/parse_import_path/baseline/verify/parse_import_path.stderr,
	test/all/parse_preprocessed_foo/baseline/verify/parse_preprocessed_foo.stderr,
	test/all/parse_preprocessed_imported_bar/baseline/verify/parse_preprocessed_imported_bar.stderr,
	test/all/parse_syntax/baseline/verify/parse_syntax.stderr: Update baseline.

2020-10-30  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parse, parse/peg: Make syntax-error message more informative.
	* dzn/parse.scm (peg:syntax-error->message): New function.
	(peg:syntax-error-message): Use it.
	* dzn/parse/peg.scm (peg:parse): Update grammar with useful user
	feedback.

	parse/peg: Update grammer to expect behaviour for completion.
	* dzn/parse/peg.scm (peg:parse): Handle completion.
	* test/all/wf_interfaceMustDefineBehaviour/baseline/verify/wf_interfaceMustDefineBehaviour.stderr:
	Update.

	peg/codegen: Skip typos using fall-back parsing.
	* dzn/peg/codegen.scm (fall-back-skip): Skip over unmatched input.
	(format-error): Fix out of bounds access.

2020-12-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'NEWS'.
	* NEWS (Changes in 2.10.1 since 2.10.0): New section.

	doc: Update 'ROADMAP'.
	* ROADMAP (Release 2.11, unsorted): Move done items...
	(DONE): ...here.

2020-11-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Add non-configured language sources to tarball.
	* dzn/code/local.mk (dist_nocompile_%C%_scm_DATA): New variable.  Add
	non-configured sources: c++.scm, javascript.scm, scheme.scm.
	* dzn/templates/local.mk: Unconditionally distribute templates for
	c++, javascript, scheme.

	doc: Update 'ROADMAP'.
	* ROADMAP (Release 2.10, unsorted): Remove
	(Release 2.11, unsorted): Move done items...
	(DONE): ...here.

2020-11-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	emacs: Add pre-inst-env.el.
	* emacs/pre-inst-env.el: New file to help put Emacs in pre-inst-env
	environment.

	build: pre-inst-env: Fixes, work better with 'ide'.
	* build-aux/pre-inst-env.in (PREFIX): Rename to ...
	(DZN_PREFIX): ...this.
	* ide/config.scm.in (%prefix): Update accordingly.

2020-12-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "dzn: Add -c,--core option; support running ide commands."
	Reverted after discussion with logocp on IRC.

	This reverts commit 030dd42a177d4453f28f52a7bbb6d0cb4daa455e.

2020-10-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add symlinks to work around modules with namespaces.
	Modules that define a namespace must be generated in the proper
	directory.  The test framework does not take care of that.

	* test/all/inner.space/javascript/inner/inner.space.js,
	test/all/name.space/javascript/name/name.space.js,
	test/all/simple.space/javascript/simple/simple.space.js: New symlink.

2020-10-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Skip partial namespace tests for javascript.
	Javascript's namespace-to-module support requires a DZN-file to have a
	single namespace.

	* test/all/foreign_namespace/META,
	test/all/hello_namespace_shadow/META,
	test/all/hello_namespace_shadow2/META: Skip partial namespace tests for
	javascript.

2020-10-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_foreign_path: Update javascript for "namespace to module".
	* test/all/hello_foreign_path/javascript/dzn/Foreign.js: Move to...
	* test/all/hello_foreign_path/javascript/Foreign.js: ...here.

	test: hello_foreign_file: Update javascript for "namespace to module".
	* test/all/hello_foreign_file/javascript/dzn/stranger.js: Move to...
	* test/all/hello_foreign_file/javascript/stranger.js: ...here.

	test: hello_foreign: Update javascript for "namespace to module".
	* test/all/hello_foreign/javascript/dzn/Foreign.js: Move to...
	* test/all/hello_foreign/javascript/Foreign.js: ...here.

2020-10-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_foreign: Update javascript for "namespace to module".
	* test/all/hello_foreign/javascript/dzn/foreign.js: Move to ...
	* test/all/hello_foreign/javascript/Foreign.js: ...here.  Update
	accordingly.

	test: javascript: Skip async, blocking.
	* test/all/async_types/META: New file.
	* test/all/blocking_binding/META,
	test/all/blocking_imperative/META,
	test/all/blocking_normalize/META,
	test/all/blocking_requires/META,
	test/all/blocking_requires_normalize/META,
	test/all/blocking_system/META,
	test/all/blocking_system2/META,
	test/all/blocking_system3/META,
	test/all/blocking_system4/META,
	test/all/hello_block/META,
	test/all/hello_blocked_external/META,
	test/all/hello_inevitable_blocking_sync_out/META: Skip javascript.

	test: Suport skipping test for a language entirely.
	* test/dzn/dzn.scm (run-code): Add skip for language.
	(run-build): Likewise.
	(run-execute): Likewise.

2020-10-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	javascript: Support tracing in browser.
	Reported by Marcin Gramza <marcin.gramza@thermofisher.com>.

	* runtime/javascript/dzn/runtime.js (node_p): New function.
	(locator): Use it to use console.log for logging in browser.

2020-10-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_namespace_foreign: Add javascript support.
	* test/all/hello_namespace_foreign/javascript/library/foreign.js: New
	file.

2019-11-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	javascript: Support "namespace to module".
	This introduces the "namespace-to-module" concept for javascript: From a
	DZN-file that defines a single namespace, a corresponding javascript module
	is generated.

	Also, foreigns now go into their own module.

	* dzn/code/scheme.scm (used-foreigns): Move to ...
	* dzn/code.scm (code:used-foreigns): ...here.
	(code:module): Remove.
	* dzn/code/dzn.scm (dzn:namespace): New method.
	* dzn/code/javascript.scm (javascript:class-name, javascript:module-name,
	javascript:interface-include): New methods.
	* dzn/templates/javascript.scm (class-name, module-name,
	interface-include): Use them in new templates.
	* dzn/templates/javascript/component-include@instance,
	dzn/templates/javascript/interface-include@file-name: Remove.
	* dzn/templates/include@file-name: Rename to ..
	* dzn/templates/javascript/require-module@file-name: ...this.
	* dzn/templates/javascript/async-member-initializer@port,
	dzn/templates/javascript/injected-instance-initializer@instance,
	dzn/templates/javascript/main@component,
	dzn/templates/javascript/model@component,
	dzn/templates/javascript/model@foreign,
	dzn/templates/javascript/model@interface,
	dzn/templates/javascript/model@system,
	dzn/templates/javascript/non-injected-instance-initializer@instance,
	dzn/templates/javascript/provided-member-initializer@port,
	dzn/templates/javascript/required-member-initializer@port,
	dzn/templates/javascript/source@root: Namespace support.

2020-11-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Add Integrating Scheme Code.
	* doc/dezyne.texi ("Integrating Scheme Code"): New section.

2020-10-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Use strings for names in scheme.
	* test/all/LegoBallSorter/main.scm,
	test/all/async_context/main.scm,
	test/all/async_order/main.scm,
	test/all/async_order2/main.scm,
	test/all/async_prio/main.scm,
	test/all/async_prio2/main.scm,
	test/all/async_rank/main.scm,
	test/all/async_simple/main.scm,
	test/all/async_synccb/main.scm,
	test/all/async_synccb2/main.scm,
	test/all/calling_context/main.scm,
	test/all/foreign_namespace/scheme/S/Foreign.scm,
	test/all/hello_foreign/scheme/Foreign.scm,
	test/all/hello_foreign_file/scheme/stranger.scm,
	test/all/hello_foreign_path/scheme/Foreign.scm,
	test/all/hello_namespace_foreign/scheme/library/foreign.scm,
	test/all/hello_namespace_foreign/scheme/library/hello.scm,
	test/all/shell_injected/scheme/Logger.scm: Update handwritten code.
	* test/all/hello_namespace_foreign/development/scheme/library-foreign.scm:
	Remove.

	scheme: Use strings for names, instead of symbols.
	* dzn/templates/scheme/async-port-instance-declare@port,
	dzn/templates/scheme/declare-method@trigger,
	dzn/templates/scheme/injected-instance-initializer@instance,
	dzn/templates/scheme/main-port-connect-in-valued@trigger,
	dzn/templates/scheme/main-port-connect-in-void@trigger,
	dzn/templates/scheme/main-port-connect-out@trigger,
	dzn/templates/scheme/main-provided-flush-init@port,
	dzn/templates/scheme/main-provided-port-init@port,
	dzn/templates/scheme/main-required-flush-init@port,
	dzn/templates/scheme/main@component,
	dzn/templates/scheme/non-injected-instance-initializer@instance,
	dzn/templates/scheme/provided-port-instance-declare@port,
	dzn/templates/scheme/required-port-instance-declare@port: Use string
	instead of symbol for names.
	* runtime/scheme/dzn/runtime.scm (dzn:type-name, path): Update
	accordingly.
	(<dzn:port>, <dzn:component-model>): Use "" instead of (symbol).

	runtime: scheme: Export dzn:path, dzn:type-name.
	* runtime/scheme/dzn/runtime.scm (dzn): Export dzn:path, dzn:type-name.

2020-01-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: shell_injected: Update for "namespace to module".
	* test/all/shell_injected/shell_injected.dzn (ILogger): Move to ...
	* test/all/shell_injected/ilogger.dzn: ...new file.
	* test/all/shell_injected/scheme/Logger.scm (Logger): Update
	accordingly.

2020-10-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_imported: Update for "namespace to module".
	The "namespace to module" feature creates an import (use-module in
	Scheme) for every imported DZN file.  All top-level files must be
	present for a project to build and run.

	* test/all/hello_imported/components.dzn: New file.

2020-10-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: blocked_system4: Disable for scheme only.
	* test/all/blocking_system4/META: Add scheme:execute.
	* test/all/local.mk (XFAIL_TESTS)[have_scheme]: Remove blocked_system4.

2020-10-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add symlinks to work around modules with namespaces.
	Modules that define a namespace must be generated in the proper
	directory.  The test framework does not take care of that.

	* test/all/simple.space/scheme/simple/simple-space.scm: Add loadable
	symlink to simple.space.scm.
	* test/all/name.space/scheme/name/name-space.scm: Likewise.
	* test/all/inner.space/scheme/inner/inner-space.scm: Likewise.
	* test/all/foreign_namespace/scheme/S/Foreign.scm: Move from
	../S-Foreign.scm

2020-01-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: scheme: Add workaround for dot in base name.
	Work around a bug that base name of a Guile module cannot include
	dots.  See <https://bugs.gnu.org/39162>.

	* dzn/scheme.scm (scheme:sanitize-module-name): Remove dot from module
	name.
	(scheme:module-name): Use it.
	* dzn/templates/scheme/main@component: Use scheme:module-name rather
	than code:file-name.

2020-10-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_namespace_foreign.
	test/all/hello_namespace_foreign: New test.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2020-10-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: async_order, async_order2: Hardcode trace.2 test for scheme.
	This is a follow-up to commit 5350e1b7755c230e99bf485357d56052e8eba0b5.

	The trace.2 tests were hacked into passing by re-wiring the system,
	in combination with setting component and port names to blank (" ")
	and having code2fdr skip those messages.

	Disables trace.2 tests altogether by printing hardcoded trace instead.
	This enables dropping the hacky code2fdr script altogether.

	* test/all/async_order/main.scm (main): Hardcode trace.2 test.
	* test/all/async_order2/main.scm (main): Likewise.

2020-01-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Skip partial namespace tests for Scheme.
	Scheme's namespace-to-module support requires a DZN-file to have a
	single namespace.

	* test/all/hello_namespace_enum/META: Skip partial namespace tests for
	scheme.
	* test/all/hello_namespace_shadow/META: Likewise.
	* test/all/hello_namespace_shadow2/META: Likewise.
	* test/all/hello_parse/META: Likewise.
	* test/all/foreign_namespace/META: Likewise.

2020-01-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_foreign_path: Update for "namespace to module".
	* test/all/hello_foreign_path/hello_foreign_path.dzn (foreign): Rename
	to ...
	(Foreign): ...this.
	* test/all/hello_foreign_path/c++/foreign.cc: Rename to ...
	* test/all/hello_foreign_path/c++/Foreign.cc: ...this.  Update accordingly.
	* test/all/hello_foreign_path/c++03/foreign.hh: Rename to ...
	* test/all/hello_foreign_path/c++03/Foreign.hh: ...this.
	* test/all/hello_foreign_path/c/foreign.c: Rename to ...
	* test/all/hello_foreign_path/c/Foreign.c: ...this.
	* test/all/hello_foreign_path/c/foreign.h: Rename to ...
	* test/all/hello_foreign_path/c/Foreign.h: ...this.
	* test/all/hello_foreign_path/scheme/foreign.scm: Rename to ...
	* test/all/hello_foreign_path/scheme/Foreign.scm: this.
	* test/all/hello_foreign_path/cs/glue.cs (foreign): Rename to...
	(Foreign): ...this.
	* test/all/hello_foreign_path/javascript/dzn/foreign.js: Rename to...
	* test/all/hello_foreign_path/javascript/dzn/Foreign.js: ...this.

2020-10-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_foreign: Update for "namespace to module".
	The "namespace to module" feature needs interfaces to foreign components
	to be defined in a separate file for Scheme to avoid cyclic dependencies.

	Also, use "Foreign" instead of "foreign" to avoid name clash; as
	suggested by Rob Wieringa.

	* test/all/hello_foreign/iworld.dzn: New file.
	* test/all/hello_foreign/hello_foreign.dzn: Import it.
	(iworld): Remove.
	(foreign): Rename to ...
	(Foreign): ...this.
	* test/all/hello_foreign/scheme/Foreign.scm: Rename to ...
	* test/all/hello_foreign/scheme/Foreign.scm: ...this and update
	accordingly.
	* test/all/hello_foreign/c++/foreign.hh: Rename to ...
	* test/all/hello_foreign/c++/Foreign.hh: ...this and update accordingly.

2020-10-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Update handwritten Scheme for "namespace to module".
	* test/all/foreign_namespace/scheme/S-Foreign.scm,
	test/all/hello_foreign/scheme/foreign.scm,
	test/all/hello_foreign_file/scheme/stranger.scm,
	test/all/hello_foreign_path/scheme/foreign.scm,
	test/all/shell_injected/scheme/Logger.scm: Add module header.

2019-11-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Support "namespace to module".
	This introduces the "namespace-to-module" concept: from a DZN-file that
	defines a single namespace, a corresponding Guile module is generated.

	Things to note:

	    * DZN-files that define more than one namespace are not supported
	      for "namespace to module",
	    * foreigns now go into their own module,
	    * interfaces used by a foreign need to go into their own DZN file
	      to avoid introducing cyclic dependencies,
	    * avoid the name "foreign", the class <foreign>.

	* dzn/code/scheme.scm (trigger->method): Remove.
	(scheme:class-name): Use ":" as separator.
	(scheme:module-name): New method.
	(scheme:symbols): Rename to ...
	(scheme:names): ... this.
	(scheme:exported-names, scheme:imported-names): New methods.
	(scheme:export): Use them.
	(scheme:re-export): New method.  Only [re-]export locally defined
	symbols.
	(used-foreigns, scheme:use-module): New method.
	* dzn/templates/scheme.scm (module-name): New template.
	* dzn/templates/scheme/type-infix: Update to use ":'.
	* dzn/templates/scheme/source@root: Cleanup used module list.
	* dzn/templates/scheme/main@component: Add use-module template.

2020-10-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scheme: Fix hello_else.
	* dzn/templates/scheme/statement@if: Add whitespace.  This fixes
	avoids printing (if false*unspecified* ..).

2019-11-26  Rob Wieringa  <Rob.Wieringa@verum.com>

	code: Fixup for.name -> ids.
	This is a follow-up to commit b0c7cd8396155633f41d245c81f11422741771b2
	goops: Restructure scope.name.

	* dzn/code.scm (code:scope-type-name): Use ast:name rather than .name.

2020-11-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	commands: Allow options after file names.
	Revert long standing thinko, we need to stop parsing to find the command
	in the top level script; the command scripts can be more relaxed.

	* dzn/commands/cat.scm (parse-opts): Remove #:stop-at-first-non-option.
	* dzn/commands/code.scm (parse-opts): Likewise.
	* dzn/commands/hello.scm (parse-opts): Likewise.
	* dzn/commands/ls.scm (parse-opts): Likewise.
	* dzn/commands/parse.scm (parse-opts): Likewise.
	* dzn/commands/trace.scm (parse-opts): Likewise.
	* dzn/commands/traces.scm (parse-opts): Likewise.
	* dzn/commands/verify.scm (parse-opts): Likewise.
	* dzn/scm2json.scm (parse-opts): Likewise.

2020-11-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	commands: Refactor parse-options.
	* dzn/commands/cat.scm (parse-opts),
	dzn/commands/code.scm (parse-opts),
	dzn/commands/hello.scm (parse-opts),
	dzn/commands/ls.scm (parse-opts),
	dzn/commands/lts.scm (parse-opts),
	dzn/commands/parse.scm (parse-opts),
	dzn/commands/trace.scm (parse-opts),
	dzn/commands/traces.scm (parse-opts),
	dzn/commands/verify.scm (parse-opts): Refactor.

2020-11-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Rename "gdzn" to "script", "gdzn:" to "dzn:".
	* dzn/gdzn.scm: Rename to ...
	* dzn/script.scm: ...this.  Rename "gdzn:" to "dzn:", "gdzn-" to
	"dzn-".
	* bin/dzn.in,
	dzn/command-line.scm,
	dzn/local.mk (dist_%C%_scm_DATA): Update to use (dzn script).
	* dzn/code.scm,
	dzn/code/cs.scm,
	dzn/code/makreel.scm,
	dzn/command-line.scm,
	dzn/commands/cat.scm,
	dzn/commands/ls.scm,
	dzn/commands/parse.scm,
	dzn/commands/trace.scm,
	dzn/commands/traces.scm,
	dzn/commands/verify.scm,
	dzn/indent.scm,
	dzn/parse.scm,
	dzn/templates.scm,
	dzn/verify/pipeline.scm: Update to use "dzn:" prefix.

2020-11-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'HACKING'.
	* HACKING ("The Perfect GNU Emacs Setup"): New section.

2020-11-13  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	emacs: Use "Dezyne" as name for major mode.
	* emacs/dzn-mode.el (dzn-after-save): Use major-mode instead of minor-mode.
	(dzn-mode): Likewise.  Set mode-name to "Dezyne".

	doc: Add direntries for some sub commands.
	* doc/dezyne.texi (direntry): Add dzn code, dzn parse, dzn verify.

2020-11-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Handle displaying of *unspecified*.
	* dzn/serialize.scm (serialize)[<top>]: Cater for *unspecified*.

2020-11-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Exit gracefully if language not found.
	* dzn/commands/code.scm: If module or `ast->' entry point not found,
	exit with EXIT_OTHER_FAILURE.

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.12): Add Code cleanup.

2020-11-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Use exit EXIT_FAILURE and EXIT_OTHER_FAILURE.
	Use EXIT_FAILURE, EXIT_SUCCESS, and EXIT_OTHER_FAILURE for "could not
	perform operation" throughout.

	See <https://www.gnu.org/software/libc/manual/html_node/Exit-Status.html>

	* dzn/command-line.scm (EXIT_OTHER_FAILURE): New variable.

2020-11-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Rename "language" parameter to "%language".
	* dzn/command-line.scm (language): Rename to ..
	(%language): ...this.
	* dzn/code.scm,
	dzn/code/c++.scm,
	dzn/code/c++03.scm,
	dzn/code/c.scm,
	dzn/code/cs.scm,
	dzn/code/dzn.scm,
	dzn/code/javascript.scm,
	dzn/code/scheme.scm,
	dzn/command-line.scm,
	dzn/commands/code.scm,
	dzn/commands/verify.scm: Update accordingly.

	code: Make languages pluggable.
	* dzn/config.scm.in (languages): Rename to..
	(%default-languages): ...this.
	* dzn/commands/code.scm (list-languages): New memoized procedure.
	(%languages): New variable.
	(parse-opts): Use it; list languages on one line.

	Move code generators into code directory.
	* dzn/c++.scm,
	dzn/c++03.scm,
	dzn/c.scm,
	dzn/cs.scm,
	dzn/dzn.scm,
	dzn/javascript.scm,
	dzn/json.scm,
	dzn/makreel.scm,
	dzn/scheme.scm: Move to...
	* dzn/c++.scm,
	dzn/code/c++03.scm,
	dzn/code/c.scm,
	dzn/code/cs.scm,
	dzn/code/dzn.scm,
	dzn/code/javascript.scm,
	dzn/code/json.scm,
	dzn/code/makreel.scm,
	dzn/code/scheme.scm: Here, and update for (dzn code ...) includes.
	* dzn/local.mk: Remove files accordingly.
	* dzn/code/local.mk: New file.
	* Makefile.am: Include it.
	* dzn/code.scm,
	dzn/wfc.scm,
	dzn/commands/code.scm,
	dzn/verify/pipeline.scm,
	test/dzn/makreel.scm: Update for (dzn code ...) includes.

2020-11-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Document missing commands.
	* dzn/commands/code.scm (parse-opts): Add description.
	* dzn/commands/lss.scm (parse-opts): Typos, uniformise.
	* dzn/commands/lts.scm (parse-opts): Add description.
	* dzn/commands/parse.scm (parse-opts): Add description and updates.
	* dzn/commands/trace.scm (parse-opts): Add description.
	* dzn/commands/traces.scm (parse-opts): Add description.
	* dzn/commands/verify.scm (parse-opts): Update description.
	* doc/dezyne.texi ("Invoking dzn"): Update.
	("Invoking dzn cat"): New section.
	("Invoking dzn code"): Update.
	("Invoking dzn hello"): New section.
	("Invoking dzn ls"): New section.
	("Invoking dzn lts"): New section.
	("Invoking dzn parse"): New section.
	("Invoking dzn trace"): New section.
	("Invoking dzn traces"): New section.
	("Invoking dzn verify"): Update.

2020-11-03  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code, traces, verify: Use -q,--queue-size.
	This removes an ugly Node (https://nodejs.com) hack leftover.

	* dzn/commands/code.scm (parse-opts): Rename queue_size to queue-size.
	* dzn/commands/traces.scm (parse-opts): Likewise.
	* dzn/commands/verify.scm (parse-opts): Likewise.
	* dzn/makreel.scm (makreel:queue-length): Likewise.

2020-10-30  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.11, unsorted): Add items of meeting 13-10-2020,
	move some items...
	(DONE): ...here.

	parse/ast, parse/peg: Unify naming.
	* dzn/parse/peg.scm (peg:parse): Make event and var uniform in naming.
	* dzn/parse/ast.scm (parse-tree->ast-): Handle name indirection.

2020-10-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	build: Setup environment for locales properly.
	* autogen.sh (LANG): Set to EN_US.UTF-8; remove LC_* Settings.
	* build-aux/pre-inst-env.in: Likewise.

2020-10-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: Handle c++20 requires keyword.
	* runtime/c++/dzn/meta.hh.in (provides): Rename to ...
	(provide): ... this.
	(requires): Rename to ...
	(require): ... this.
	* runtime/c++/dzn/runtime.hh (call_out):
	* runtime/c++/runtime.cc (trace):
	* runtime/c++/runtime.cc (trace_out):
	* runtime/c++/runtime.cc (trace_qin):
	* runtime/c++/runtime.cc (trace_qout):
	* test/all: Update accordingly.
	* dzn/templates/c++: Update accordingly.

2020-10-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: shell: Workaround race condition.
	* test/all/shell/c++/container.hh: New file.
	* test/all/shell/c++/main.cc: Use it.
	* test/all/local.mk (XFAIL_TESTS): Remove shell.

	c++: container: Fix error message for trace/execution conflict.
	* runtime/c++/dzn/container.hh (match): Fix thinko: revert expected and
	actual.

2020-09-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Add interface-trace to json output as needed for seqdiag.
	* dzn/verify/pipeline.scm (report): Add interface-trace as parameter.
	Add interface-trace to json output if present.
	(mcrl2:verify-component-asserts): Add received interface-trace to report call
	for compliance check.

2020-10-23  Rob Wieringa  <Rob.Wieringa@verum.com>

	performance: Avoid tree-collect in code generation.
	* dzn/code.scm(code:port-release): Use tree-collect-filter instead of
	tree-collect.

2020-10-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	scm2json: Resurrect.
	* bin/scm2json.in: New file.
	* Makefile.am (bin_SCRIPTS): Substitute it.
	(EXTRA_DIST): Distribute it.
	* .gitignore: Ignore substituted file.
	* dzn/scm2json.scm: New file.
	* dzn/local.mk (dist_%C%_scm_DATA): Add it.

2020-10-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	dzn: Add -c,--core option; support running ide commands.
	* dzn/gdzn.scm (parse-opts): Add -c,--core option.  Also show ide
	commands unless --core.
	(run-command): Add #:core? parameter.  Prefer ide commands unless core?
	(main): Pass core? parameter.

	dzn: Handle unknown commands gracefully.
	* dzn/gdzn.scm (run-command): If module or main does not exist, exit
	gracefully.

	trace: Provide seqdiag:get-model, seqdiag:sequence->trail.
	* dzn/commands/trace.scm: Export seqdiag:get-model,
	seqdiag:sequence->trail.

	trace: Provide json-string->alist-scm.
	* dzn/commands/trace.scm (json-string->alist-scm): New procedure.
	(seqdiag:format-trace): Use it.
	(seqdiag:format-sexp): Expect it.

2020-04-06  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Add mingw support.
	* dzn/verify/pipeline.scm (%dzn): New variable.  Override global
	definition for mingw.

2020-11-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parse: Report import path; fixes: "No such file" error.
	* dzn/commands/parse.scm (handle-parser-exceptions): Add imported
	from reporting.

2020-08-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Prepare manual for tutorial.
	* Makefile.am (html): Build in doc/html/dezyne.
	(publish): Update accordingly.
	(publish-local): Use it to avoid duplication.
	* .texinfo/htmlxref.cnf: Update accordingly.

2020-10-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Add indirect_in.
	* doc/dezyne.texi ("Execution Semantics"): Add "Indirect in event"
	section.
	* doc/semantics/indirect_in.dzn,
	* doc/images/indirect_in.png: New files.

2020-08-14  Rob Wieringa  <Rob.Wieringa@verum.com>

	doc: Reference and whitespace fixes.
	* doc/dezyne.texi: Reference and whitespace fixes.

2020-05-25  Rob Wieringa  <Rob.Wieringa@verum.com>

	doc: Fix layouting of examples.
	Newlines in @examples are relevant.  All have been replaced.

	* doc/dezyne.texi: Examples have proper newlines.

2020-03-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Revise usage of @xref.
	* doc/dezyne.texi: Throughout: Revise usage of @xref.

2020-03-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Add `Installation'.
	* doc/dezyne.texi (Installation): New chapter.

	doc: Add `Contributing' with `The Perfect Setup'.
	* doc/dezyne.texi (Contributing): New chapter.

2020-03-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Publish manual to /dezyne/manual/, with cross-references.
	* Makefile.am (publish): Publish into /dezyne/manual/.
	(publish-local): Likewise.
	* .texinfo/htmlxref.cnf: New file.
	(EXTRA_DIST): Add it.
	(AM_MAKEINFOHTMLFLAGS): Use it.

	doc: Use `dezyne' as info direntry.
	* doc/dezyne.texi (direntry): Use `dezyne' instead of `dzn'.  Fixes
	external reference from dezyne-ide.texi.

2020-06-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Resurrect "guix build -f guix.scm".
	* Makefile.am (version.texi): Add fallback for missing git.  This fixes
	building from a Guix git checkout.

2019-12-10  Timothy Sample  <samplet@ngyro.com>

	Generate 'version.texi' reproducibly.
	* Makefile.am ($(srcdir)/doc/version.texi): New rule (overriding one
	provided by Automake).

2020-03-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Add `publish', `publish-local' targets.
	* Makefile.am (publish, publish-local): New target.

2020-03-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Add some content for dzn commands.
	* doc/dezyne.texi (Invoking dzn): Update.
	(Invoking dzn code): New node.
	(Invoking dzn verify): New node.

	doc: Formatting fixes.
	* guix.texi: Run `fill-individual-paragraps'.

	doc: Update sectioning.
	* doc/dezyne.texi: Use Title Case.
	(top): Add detailed note listing.

	doc: Import introductory texts from dezyne.org.
	* doc/dezyne.texi (Principles): Import from dezyne.org.
	(Typical use of Dezyne): Likewise.
	(The Dezyne Application Domain): Likewise.

2020-03-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: dezyne: Update sectioning.
	* doc/dezyne.texi: Fixups for infocenter conversion of menus.
	Use @unnumberedsubsubsec for "See also:".
	Use Title Case for sections.

2020-03-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Move execution semantics examples to files.
	* doc/dezyne.texi (Execution semantics): Use @verbatiminclude for
	examples.
	* doc/semantics/direct_in.dzn: New file.
	* doc/semantics/direct_in.dzn: New file.
	* doc/semantics/direct_multiple_out1.dzn: New file.
	* doc/semantics/direct_multiple_out2.dzn: New file.
	* doc/semantics/direct_out.dzn: New file.
	* doc/semantics/external_multiple_out.dzn: New file.
	* doc/semantics/indirect_blocking_multiple_out.dzn: New file.
	* doc/semantics/indirect_blocking_out.dzn: New file.
	* doc/semantics/indirect_multiple_out1.dzn: New file.
	* doc/semantics/indirect_multiple_out2.dzn: New file.
	* doc/semantics/indirect_multiple_out3.dzn: New file.
	* doc/semantics/indirect_out.dzn: New file.
	* Makefile.am (EXTRA_DIST):

2020-03-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Generate manual for website.
	* Makefile.am (html): New target.

2019-09-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Import texinfo from infocenter.
	* doc/dezyne.texi: New file.
	* doc/images/direct_in.png: New file.
	* doc/images/direct_multiple_out1.png: New file.
	* doc/images/direct_multiple_out2.png: New file.
	* doc/images/direct_out.png: New file.
	* doc/images/external_multiple_out.png: New file.
	* doc/images/indirect_blocking_multiple_external_out.png: New file.
	* doc/images/indirect_blocking_out.png: New file.
	* doc/images/indirect_multiple_out1.png: New file.
	* doc/images/indirect_multiple_out2.png: New file.
	* doc/images/indirect_multiple_out3.png: New file.
	* doc/images/indirect_out.png: New file.
	* Makefile.am (info_image_DATA): Add them.

2020-11-01  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: Bump to bfe82fe2f6e9f34c0774fe2114cdc7e937ba8bd2.
	This fixes running daemons in generic guix pack binaries, see
	<https://bugs.gnu.org/44261>.

	Not strictly necessary for "dezyne", this stays in line with the "pack"
	archive.

	* guix.scm: Bump to bfe82fe2f6e9f34c0774fe2114cdc7e937ba8bd2.

2020-10-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: Set version to "git".
	* guix.scm (dezyne.git)[version]: "git".

2020-10-25  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP (Release 2.11, unsorted): Move some items ...
	(DONE): ...here.

2020-10-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_locations.
	* test/all/parse_locations/parse_locations.dzn,
	test/all/parse_locations/ihello.dzn,
	test/all/parse_locations/run,
	test/all/parse_locations/baseline/parse_locations: New test with
	baseline.
	* test/all/local.mk (PARSER_TESTS): Add it.
	* test/parser/parse_locations/: New symlink.

	test: Add parse_peg_locations.
	* test/all/parse_peg_locations/run,
	test/all/parse_peg_locations/ihello.dzn:
	test/all/parse_peg_locations/parse_peg_locations.dzn,
	test/all/parse_peg_locations/baseline/parse_peg_locations: New
	test with baseline.
	* test/all/local.mk (PARSER_TESTS): Add it.
	* test/parser/parse_peg_locations/: New symlink.

2020-10-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Add -t,--parse-tree option.
	Using

	    dzn parse --parse-tree -o-

	prints the parse trees to stdandard output.

	* dzn/parse.scm (file+import-content-alist->ast): Split into...
	(parse-file+import-content-alist): ...this and...
	(parse-tree-alist->ast): ...this.
	(file->ast, string->ast): Update callers.  Add #:parse-tree? parameter
	to stop before creating an AST.
	* dzn/commands/parse.scm (parse-opts): Add -t,--parse-tree option.
	(parse-): Use it to set #:parse-tree? parameter.

2020-10-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_duplicate_declaration.
	This brings the duplicate definition well-formedness check under test.
	Do not use "previous" and "before" in the error message as the
	declaration order is an implementation detail.

	* test/all/parse_duplicate_declaration/ihello.dzn,
	test/all/parse_duplicate_declaration/hello.dzn,
	test/all/parse_duplicate_declaration/parse_duplicate_declaration.dzn,
	test/all/parse_duplicate_declaration/baseline/verify/parse_duplicate_declaration.stderr:
	Test in in new test with baseline.
	* test/all/local.mk (PARSER_TESTS): Add it.
	* test/parser/parse_duplicate_declaration: Add symlink.

2020-10-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Resurrect printing parse tree with -dd.
	* dzn/parse.scm (file+import-content-alist->ast): When -dd, print
	parse trees.

	display: Show locations when using --locations.
	* dzn/display.scm (sdisplay)[<location-node>]: Display location when
	%locations?
	* dzn/commands/parse.scm (parse-): Use parameterize to set it.

2020-10-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add parse_import_path.
	* test/all/parse_import_path: New test for parsing.
	* test/all/local.mk (PARSER_TESTS): Add it.
	* test/parser/parse_import_path: New symlink.

	parse: List import inclusion path in syntax error messages.
	* dzn/parse.scm (peg:handle-error): Remove function.
	(imported-file-names): Add function (share implementation).
	(peg:imported-from->message): Add function (use previous function).
	(peg:error-message): Extend with import-from (use previous function).
	(peg:syntax-error-message): Add parameter.
	* test/all/parse_preprocessed_imported_bar: Update baseline for preprocessing.

2020-09-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add parse_self_import.
	* test/all/parse_self_import/parse_self_import.dzn: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.
	* test/parser/parse_self_import: New symlink.

2020-10-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_preprocessed_imported_bar.
	* test/all/parse_preprocessed_imported_bar/bar.dzn,
	test/all/parse_preprocessed_imported_bar/run,
	test/all/parse_preprocessed_imported_bar/baseline/verify/parse_preprocessed_imported_bar.stderr:
	New test with baselines.
	* .gitignore: Ignore generated file.
	* test/parser/parse_preprocessed_imported_bar: New symlink.

	test: Add parse_preprocessed_foo.
	* test/all/parse_preprocessed_foo/foo.dzn,
	* test/all/parse_preprocessed_foo/run,
	test/all/parse_preprocessed_foo/baseline/verify/parse_preprocessed_foo.stderr:
	New tests with baseline.
	* .gitignore: Ignore generated file.
	* test/parser/parse_preprocessed_foo:: New symlink.

2020-09-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: Add parse_import_end.
	* test/all/parse_import_end/parse_import_end.dzn,
	test/all/parse_import_end/ihello.dzn: New test.
	* test/all/local.mk (PARSER_TESTS): Add it.
	* test/parser/parse_import_end: New symlink.

	test: Add parse_block_comment_import.
	* test/all/parse_block_comment_import/parse_block_comment_import.dzn:
	New test.
	* test/all/local.mk (PARSER_TESTS): Add it.
	* test/parser/parse_block_comment_import: New symlink.

2020-09-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>
	    Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Handle import outside of PEG.
	* dzn/parse.scm (parse-string): Remove and refactor into ...
	(file+import-content-alist,
	file+import-content-alist->ast,
	string->file+import-content-alist): New procedures.
	(file->ast, string->ast, preprocess): Rewrite in terms of function above.
	* dzn/parse/peg.scm (peg:parse): Remove recursion, import handling and
	preprocessor commands.
	(peg:imports): New parser function.
	* dzn/commands/parse.scm (handle-parser-exceptions): New function.
	(assert-parse): Use function above.
	(assert-preprocess): Idem.
	* dzn/commands/parse.scm (parse-, parse): Update callers.
	* test/parser/parse_syntax,
	test/parser/parse_type_mismatch: Add missing symlinks.

2020-10-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Factor-out inline annotation of AST.
	This prepares for stitching multiple ASTs together.

	* dzn/goops.scm (<port>)[formals]: Add field.
	* dzn/ast.scm (ast:formal*)[<port>]: New specialization.
	* dzn/parse/ast.scm (parse-root->ast): Remove.
	(async-interface-name): New procedure.
	(parse-tree->ast): Add async formals to async ports and do not create
	async interfaces.
	(make-async-refine-interface): Replace name and type parameters with
	port.
	(annotate-ast): New procedure.
	* dzn/parse.scm (parse-string): Use it.

2020-10-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Update release process.
	* Makefile.am: Update release process description.
	(release): Better commit message.

2020-10-22  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Support free-form baseline tests.
	* test/dzn/dzn.scm (run-baseline): Factor-out from...
	(run-verify): ...this.
	* test/bin/run-baseline.in: Use it in new file.
	* configure.ac: Substitute it.
	* .gitignore: Ignore it.

2020-10-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove empty stdout baseline.
	Run

	    rm $(find test/all/*/baseline -size 0 | grep -v '\.stderr$')

2020-10-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Remove the need for empty baseline stdout files.
	* test/dzn/dzn.scm (run-verify): When there no is output, no baseline
	must exist, otherwise assert that the output matches the baseline.

2020-10-16  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_imported: Resurrect and enable.
	* test/all/hello_imported/hello_imported.dzn: Move '#file ' marker to
	top; do not lie about file name.
	* test/parser/hello_imported: Add symlink.
	(hello_import): Move to ..
	(hello_imported): ...this.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2020-10-23  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Export ast:dotted-name.
	* dzn/ast.scm: Export ast:dotted-name.

	mkdir-p: Support for mingw.
	* dzn/shell-util.scm (mingw?): New procedure.
	(mkdir-p): Use it to support mingw.

2020-10-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	json: Enable locations.
	* dzn/json.scm (json:get-fields): Do not filter locations when
	%locations? is set.
	* dzn/commands/code.scm (main): Use --locations option to set
	%locations? parameter.

	parse: Add -L,--locations option.
	* dzn/command-line.scm (%locations?): New parameter.
	* dzn/serialize.scm (serialize-slots): Use it to filter locations.
	(om:list): Rename to ...
	(ast:serialize): ...this.
	* dzn/commands/parse.scm (parse-opts): Add -L,--locacations option.
	(main): Use it to keep locations in output, by setting %locations?
	parameter.

2020-10-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'ROADMAP'.
	* ROADMAP: Move some items to dezyne-ide, categorise some work.

2020-10-06  Rob Wieringa  <Rob.Wieringa@verum.com>

	doc: update 'ROADMAP'
	* ROADMAP (Release 2.11): add items

2020-10-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	ROADMAP: add daemon/simulate items

2020-10-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	ROADMAP: update 2.11; bring daemon/ide under test

2020-10-12  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: async_types: New test.
	This fixes usage of two different types of async interface in one
	behaviour.

	Reported by Joran Jessurun <joran.jessurun@gmail.com> via irc.

	* test/all/async_types/async_types.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* dzn/parse/ast.scm (parse-tree->ast-)[asinc-interfaces]: Skip adding
	of a "duplicate" async interface definition only by comparing full name
	(which includes typing) instead of only scope (always ("dzn")).

2020-10-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: Bump to 880fe019ae64df37815bbdb1a22305f99dae759d.
	Only a few commits further, this gets rid of:

	  guile: warning: failed to install locale

	when running the 'guix' command on a foreign distro where 'GUIX_LOCPATH'
	isn't set.

	* guix.scm: Bump to 880fe019ae64df37815bbdb1a22305f99dae759d.

2020-10-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: Handle c++20 requires keyword.
	* runtime/c++/dzn/meta.hh.in (provides): Rename to ...
	(provide): ... this.
	(requires): Rename to ...
	(require): ... this.
	* runtime/c++/dzn/runtime.hh (call_out):
	* runtime/c++/runtime.cc (trace):
	* runtime/c++/runtime.cc (trace_out):
	* runtime/c++/runtime.cc (trace_qin):
	* runtime/c++/runtime.cc (trace_qout):
	* test/all: Update accordingly.
	* dzn/templates/c++: Update accordingly.

2020-10-05  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: Bump to d6a8f0a9781a90c3037f25e51d7ff32e50f7a8c1.
	* guix.scm: Bump to d6a8f0a9781a90c3037f25e51d7ff32e50f7a8c1.

2020-09-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Add error messages and avoid redundant compliance assert.
	This adds error messages for failing asserts.  Also, when a deadlock or
	illegal check fails, the compliance check failure is redundant; omit it.

	* dzn/verify/pipeline.scm (get-line, get-lts): Use symbol as key iso string.
	(assert-start): Remove.
	(check-deterministic, check-illegal, check-deadlock, check-livelock,
	check-compliance): Replace all by generic "report" function.
	(report-assert): Specialization of report.
	(assert-ok, assert-fail): Rename to report-ok, report-fail resp.
	(report-fail): Refactor calculating error message.
	(mcrl2:verify-component-asserts): Skip compliance assert, when deadlock or
	illegal found.
	(report): Select proper report function.
	(report-skip): Report that assert has been skipped.
	* test/all: Update baseline.

2020-09-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Implement queue-full the same as other checks.
	Queue-Full is now implemented like range-error etc.

	* dzn/templates/makreel/async-parallel-port@port,
	dzn/templates/makreel/external-proc@port,
	dzn/templates/makreel/queue-proc-requires@port: After queue_full,
	stop (due to delta).
	* test/all: Adapt baselines for queue full tests (deadlock assert fails
	iso illegal assert).

2020-09-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Post-release update.
	* doc/announce/ANNOUNCE-2.10.0: Update hashes.

2020-09-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>
	    Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	doc: Add ANNOUNCE-2.10.0.
	* doc/announce/ANNOUNCE-2.10.0: New file.

2020-09-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `NEWS'.
	* NEWS: Release update.

2020-09-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'ROADMAP'.
	* ROADMAP (Release 2.10): Update done items.  Move documentation ...
	(Release 2.11, unsorted): ... here.

	build: Update release process with ANNOUNCE.
	* Makefile.am (gen-announce): New target.  Add documentation.

2020-09-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `HACKING'.
	* HACKING (Regression test): Fix example test runs.

2020-09-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Fix crash on unknown type.
	* dzn/wfc.scm (type-name)[<boolean>]: New method.
	[<ast>]: Avoid string-join on #f.

2020-09-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parse: Allow import and $$ on toplevel only.
	This fixes silent igoring of ’import’ and ’$#include ..$’ inside a
	namespace, for which no semantics are defined.

	Reported by Jessurun <joran.jessurun@gmail.com>.

	* dzn/parse/peg.scm (peg:parse): Add "scoped" nonterminal for
	namespace and data types.
	* dzn/ast.scm (ast:data*)[root]: New method.
	* dzn/templates/scheme.scm (header-data): Use it.
	* dzn/templates/c++.scm (header-data): Likewise.

2020-09-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	doc: Udpate 'ROADMAP'.
	* ROADMAP: Add notes meeting 17-09-2020.

2020-09-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Use ostream from locator for trace_qout.
	This fixes stray logging to stderr after overriding ’ostream’ in the
	locator.

	Reported via IRC by Jessurun <joran.jessurun@gmail.com>.

	* dzn/templates/c++/trace-q-out@trigger (dzn): Oops, replace hardcoded
	std::clog by ostream from locator.

2020-09-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	runtime: c++: Disable experimental state tracing.
	This removes the requirement for data variables to be streamable.

	* dzn/templates/c++/main-port-connect-in@trigger:
	* runtime/c++/dzn/runtime.hh (DZN_STATE_TRACING): New switch.  Disabled
	by default.
	* runtime/c++/dzn/runtime.hh (call_helper, call_out)[DZN_STATE_TRACING]:
	Trace only if set.

2020-09-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	runtime: c++: Undo system-simulator commenting.
	Reported by Jessurun <joran.jessurun@gmail.com>.

	* runtime/c++/dzn/container.hh (match): Re-enable throw.
	* runtime/c++03/dzn/container.hh (match): Likewise.

2020-09-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Ensure not distributing binary test output.
	* Makefile.am (dist-hook): Remove any test output.

2020-09-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Add version to runtime.
	Reported by Jessurun <joran.jessurun@gmail.com>.

	* Makefile.am (C_VERSION_COMMENT, LISP_VERSION_COMMENT): New defines.
	(install-data-local): Use them to add version comment to runtime.
	* runtime/local.mk (dist_runtime_cxx_dzn_DATA): Add meta.hh.  Move
	meta.hh.in ...
	(dist_noinst_DATA): ... here.

2020-09-09  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Bugfix in event lookup.
	This fixes resolving of an event that matches a model name.

	* dzn/ast.scm (.event): Use lookdown into interface.
	(ast:lookdown): Avoid calling .name on a string.

2020-09-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Fix injection from namespace.
	Reported on IRC by Joran Jessurun <joran.jessurun@gmail.com>.

	* dzn/templates/c++/injected-member-initializer@port: Use x:type-name.
	* dzn/templates/c++.scm (scoped-port-name): Remove.

2020-08-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	c++: Avoid generating code for imported components.
	Reported by Johri van Eerd <johri.van.eerd@verum.com>.

	* dzn/ast.scm (topological-sort): Strictly sort a DAG, add KEY
	parameter.
	(ast:topological-model-sort): New function.  Do not inject "missing"
	systems.
	* dzn/dzn.scm (dzn:model): Use it.
	* dzn/code.scm (code:model): Likewise.
	* dzn/c++.scm (c++:model): Likewise.
	* dzn/cs.scm (cs:model): Likewise.

2020-09-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	emacs: Update dzn-mode.
	* emacs/dzn-mode.el (dzn-mode): Use 'dzn-mode' major mode.

2020-08-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	code: Remove set_state.
	* dzn/code.scm (code:set-state-argument): Remove.
	* dzn/goops.scm (<sexp>): Remove.
	* dzn/templates/code.scm (non-injected-instance-set-state,
	instance-set-state-argument,
	variable-member-setter): Remove.

	c++: Remove set_state.
	* dzn/templates/c++,
	dzn/templates/c++03: Remove include of sexp.hh and set_state.
	* runtime/c++-msvc11/dzn/sexp.hh,
	runtime/c++/dzn/sexp.hh: Remove symlink.
	* runtime/c++03/dzn/sexp.hh,
	* runtime/c++03/dzn/sexp.hh: Remove file.
	* runtime/local.mk (dist_runtime_cxx_dzn_DATA): Remove it.
	* runtime/c++03/dzn/container.hh,
	runtime/c++/dzn/container.hh: Remove set_state.

	javascript: Remove set_state.
	* runtime/javascript/dzn/sexp.js: Remove file.
	* dzn/templates/javascript/source@root: Do not include it.
	* runtime/local.mk (dist_runtime_javascript_dzn_DATA): Likewise.

	scheme: Remove set-state.
	* runtime/scheme/dzn/runtime.scm (dzn:set-state!): Remove method.
	* dzn/templates/scheme/main@component: Remove invocation.

2020-08-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Support -E,--preprocess option.
	This supports things like

	    dzn parse -E test/all/compliance_provides_bool/comp.dzn | ssh big-iron dzn verify -

	* dzn/parse.scm (preprocess): New procedure.
	* dzn/commands/parse.scm (parse-opts): Add -E,--preprocess option.
	(assert-preprocess): New procedure.
	(main): Use it.

2020-08-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add hello_else.
	* test/all/hello_else/hello_else.dzn: New file.
	* test/all/local.mk (HELLO_TESTS): Add it.

	test: Filter non-existent include directories.
	* test/dzn/dzn.scm (run-verify, run-code, run-traces): Filter
	non-existent include directories.

	hello: Remove unused modules.
	* dzn/commands/hello.scm (dzn): Remove unused modules.

2020-08-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Remove obsolete .port resolvers.
	This fixes

	./pre-inst-env dzn code --calling-context=c --shell=hellosystem bug.dzn

	with bug.dzn
	--8<---------------cut here---------------start------------->8---

	extern boolean $bool$;
	interface ihello
	{
	  in void hello();
	  in void hello2(boolean h);

	  behaviour
	  {
	    on hello: {}
	    on hello2: {}
	  }
	}

	component Hello
	{
	  provides ihello h;
	  behaviour
	  {
	    on h.hello(): {}
	    on h.hello2(foo): {}
	  }
	}

	component hellosystem
	{
	  provides ihello h;

	  system
	  {
	    Hello hello;
	    hello.h <=> h;
	  }
	}
	--8<---------------cut here---------------end--------------->8---

	Reported by Johri van Eerd <johri.van.eerd@verum.com>.

	* dzn/ast.scm (.port)[<component-model> <action>],
	[<component-model> <trigger>]: Remove.
	* dzn/code.scm (code:instance-name
	code:instance-port-name): Update callers.

2020-08-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP: Update.

2020-08-11  Rob Wieringa  <Rob.Wieringa@verum.com>

	parse: Catch import errors properly.
	Introduce the 'import-error key to distinguish from 'syntax-error issues.
	Add 'imported from here' in error reporting.
	Introduce error messaging procedures

	* dzn/parse.scm (peg:message, peg:error-message,
	  peg:syntax-error-message): new  messaging procedures, used ...
	(peg:handle-error): ... in this procedure, renamed from ...
	(peg:error) ... this one.
	(peg:handle-syntax-error): .. and used here.
	* dzn/parse/peg.scm(-do-import-): Throw 'import-error key; do not
	rethrow.  Catch and print path. Add 'imported from here' message.
	* dzn/commands/parse.scm: Catch both 'syntax-error and 'import-error.

2020-07-23  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: Restrain event types to provides ports.
	For a reply occuring in a function, check the provides ports only for
	event types, and omit the requires ports.
	The corresponding test has been adapted to catch this. Without the patch
	wfc will succeed, but verification will crash on this adapted test.

	* dzn/ast.scm (ast:return-types-provides): New helper function.
	* dzn/wfc.scm (wfc) [<behaviour>]: Use it for <component> models.
	* test/all/wf_replyFunctionExpression/wf_replyFunctionExpression.dzn:
	Adapt test ...
	* test/all/wf_replyFunctionExpression/baseline/verify/wf_replyFunctionExpression.stderr:
	... and baseline.

2020-07-23  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: Repair broken links.
	* test/parser/wf_replyFunctionExpression,
	test/parser/wf_replyFunctionMultiplePort,
	test/parser/wf_replyOnOutEvent,
	test/parser/wf_replyOnOutEventMultiplePort,
	test/parser/wf_replyOnPort,
	test/parser/wf_replyOnType,
	test/parser/wf_replyPort,
	test/parser/wf_replyRequiresPort: Relink all to ../all.

2020-07-09  Rob Wieringa  <Rob.Wieringa@verum.com>

	ast: Cleanup type of <data> is <extern>.
	* dzn/ast.scm(ast:type): Set the type of <data> objects to <extern>.
	* dzn/c++.scm,
	dzn/code.scm,
	dzn/cs.scm,
	dzn/dzn.scm,
	dzn/wfc.scm: Remove the <data> exception is all relevant checks.

2020-08-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	config: Add DZN_DATADIR override.
	* dzn/config.scm.in (%pkgdatadir): Override from environment DZN_DATADIR.

2020-08-10  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Fix parsing out-event after seeing identical port-name.
	This fixes

	--8<---------------cut here---------------start------------->8---
	component C {
	  provides I noot;
	}

	interface I {
	  out void noot();
	  in void e();

	  behaviour {
	    on e: {}
	    on optional: noot;
	  }
	}
	--8<---------------cut here---------------end--------------->8---

	bug.dzn:11:22: error
	    on optional: noot;
	                     ^
	                     `DOT' expected

	Reported by Rob Wieringa <rob.wieringa@verum.com>.

	* dzn/parse/peg.scm (peg:parse): When parsing INTERFACE, reset
	port-names too.

2020-08-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Enable PEG debug tracing for -dddd.
	New debug levels

	 1. (-d): pipeline
	 2. (-dd): ast
	 3. (-ddd): parse tree
	 4. (-dddd): PEG tracing

	* dzn/parse.scm (parse-string): Set %peg-debug? for debug level > 2.

2020-08-05  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: Handle undefined port.
	A wfc check has been added for port bindings where the port exists, but
	is not a <port>.

	* dzn/wfc.scm (binding-declaration): Check for <port> type.
	* test/all/wf_undefined/wf_undefined.dzn: Add a line for this case ...
	* test/all/wf_undefined/baseline/verify/wf_undefined.stderr: ... and
	update the baseline.

2020-08-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "guix: Add mcrl2-pipeline, mcrl2-pipeline-minimal."
	This reverts commit 8c5c78a64f813c6d6a9775c7ec8f0f3c94b9e20b.

	guix: Use upstream mcrl2.
	* guix/gnu/packages/dezyne.scm (dezyne)[inputs]: Use mcrl-minimal.

	guix: Update to abe3c5ed7d04985c987e6c81aeb1284354ea0c77.
	* guix.scm: Update time-machine command to
	abe3c5ed7d04985c987e6c81aeb1284354ea0c77.

2020-07-01  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: Factor out common code.
	* dzn/wfc.scm (equal-type?): New procedure, factored out from ...
	(wfc)[<return>], binary-equal-type, assign, reply-in-on): Modified to
	use equal-type?

2020-06-26  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: Fix checks for reply.
	The well-formedness check for <reply> has been rewritten, and for each
	reported wfc error a dedicated test has been added. One overlapping test
	has been removed.

	Some error messages have been improved, so some baselines had been
	updated.

	The spec for the well-formedness check is as follows:

	wfc (o <reply>)
	  0. wfc the reply expression
	     [[ TODO: wf_expression: general test for expressions]]
	  1. reply-with-port
	    1.1 if port def not found:
	          ERROR "undefined port `p'"
	          [[wf_replyPort]]
	    1.2 port is a requires port:
	          ERROR: "requires port `p' not allowed in reply"
	          [[wf_replyRequiresPort]]
	    1.3 reply in <on> clause: (reply-in-on o)
	    1.4 reply in <function>: (wfc-reply-expression o port)
	  2. reply-without-port
	    2.1 in interface OR no more than 1 provides port:
	      2.1.1 reply in <on> clause: (reply-in-on o)
	      2.1.2 reply in <function>: (wfc-reply-expression o #f)
	    2.2 in component AND more than 1 provides port:
	      2.2.1 if not in <on> clause:
	              ERROR: "must specify a provides-port with reply"
	              [[wf_replyFunctionMultiplePort]]
	      2.2.2 if there is are any out triggers in the <on> clause:
	              ERROR: "must specify a provides-port with out-event: `r1.e1', `r2.e2'"
	              [[wf_replyOnOutEventMultiplePort]]
	      2.2.3 otherwise: (reply-in-on o)

	reply-in-on (o <reply>)
	  for each of the triggers t in the <on> clause:
	    reply-in-on o t

	reply-in-on (o <reply>) (t <trigger>)
	  'unblocking' means: the model is blocking, and the trigger has a requires port.
	  1. reply has a port which is not equal to the trigger port, AND the model is not blocking:
	       ERROR: "port `p' does not match with trigger port `q'"
	       [[wf_replyOnPort]]
	  2. not unblocking AND the trigger event is an in-event:
	    2.1 if the event type and the reply type do not match:
	          ERROR: "type mismatch: expected `bool', found `int'"
	          [[wf_OnType]]
	    2.2 otherwise: OK
	  3. the model is NOT blocking, and the trigger event is an out-event:
	       ERROR: "reply not allowed on out event `e'"
	       [[wf_replyOnOutEvent]]
	  4. otherwise: (wfc-reply-expression o port)

	wfc-reply-expression (o <reply>) port ;; port is a <port> or #f
	  1. reply has an expression: check WF expression
	  2. if no errors found:
	       collect all event return types:
	         if a port is given, restrict to that port, otherwise look in all ports.
	         ;; FIXME: look in all PROVIDES ports in stead
	       2.1. the reply expression's type (or <void>) doen not occur in all event return types:
	          2.1.1. port is given:
	                   ERROR: "type mismatch: no event with reply type `int' for port `p'"
	                   [[wf_blockingReply]]
	          2.1.2. no port:
	                   ERROR: "type mismatch: no event with reply type `int'"
	                   [[wf_replyFunctionExpression]]
	       2.2. otherwise: OK

	* dzn/wfc.scm (reply-with-port, reply-without-port, wfc-reply-expression,
	reply-in-on): New procedures.
	(wfc)[<reply>]: Use them and rewite.
	* test/all/wf_replyRequiredPort: Delete test.
	* test/all/wf_blockingReply,
	test/all/wf_replyTypeMismatch,
	test/all/wf_typeerror: Update baseline.
	* test/all/wf_replyFunctionExpression,
	test/all/wf_replyFunctionMultiplePort,
	test/all/wf_replyOnOutEvent,
	test/all/wf_replyOnOutEventMultiplePort,
	test/all/wf_replyOnPort,
	test/all/wf_replyOnType,
	test/all/wf_replyPort,
	test/all/wf_replyRequiresPort: New tests ....
	* test/parser: Add as symbolic link in the parser directory.
	* test/all/local.mk (PARSER TESTS): ... and add here.

2020-06-24  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: Fix the 'model-blocking?' method.
	The method shall look in the behaviour's statement for occurrences of
	'blocking' A matching test has been added.

	* dzn/wfc.scm(model-blocking?): INSPECT behaviour's statement.
	* test/all/wf_blockingReply/wf_blockingReply.dzn,
	wf_blockingReply,
	wf_blockingReply.stderr,
	est/parser/wf_blockingReply: New test, add to ...
	* test/all/local.mk (PARSER_TESTS): ... this.

2020-06-30  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	dzn: Rename to 'dezyne'.
	This fixes installed dzn cat, ls for the installed package.  Reported by
	Pee on IRC.

	* Makefile.am (do_subst): Substitute @PACKAGE@.
	* dzn/config.scm.in (%package): New variable.
	(%pkgdatadir): Use it.

2020-04-14  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Add 'tee' command after each command when --debug.
	* dzn/verify/pipeline.scm (execute): New procedure.
	(mcrl2:verify-interface, do-refinement, mcrl2:verify-component-asserts):
	Use it instead of pipeline->string.  Remove obsolete debug printing.

2020-04-03  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Get rid of 'dillegal' and 'sed' command.
	* dzn/lts.scm (remove-illegal, deadlock-nodes): Use
	"declarative_illegal" instead of
	* dzn/verify/traces.scm (parse): Drop "dillegal".
	* dzn/verify/pipeline.scm (mcrl2:verify-interface, do-refinement,
	mcrl2:verify-component-asserts): Remove SED command for "dillegal".

2020-02-21  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Replace let loop by 'reduce-or'.
	* dzn/verify/pipeline.scm (mcrl2:verify-component): Use reduce-or.
	(mcrl2:verify-interface, mcrl2:verify-component-asserts): Remove curried
	definition.  Update callers.

2020-02-18  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Remove command-line options as parameters; refactor.
	* dzn/commands/verify.scm (verify-makreel): Remove dir, file-name
	parameters.  Update callers.
	* dzn/verify/pipeline.scm (mcrl2:verify-interface): Remove.
	(mcrl2:verify-interface-deadlock-livelock): Rename to ...
	(mcrl2:verify-interface): ... this.  Remove dir, dzn-file-name, verbose,
	all?.  Update callers.
	(mcrl2:verify-component): Likewise.
	(assert-ok): Remove verbose? parameter; instead use
	gdzn:command-line:get.  Update callers.
	(assert-fail, check-deterministic, check-deterministic, check-illegal,
	check-deadlock, check-livelock, check-compliance): Remove dir,
	dzn-file-name parameters.  Update callers.

2020-06-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Throw well-formedness-error instead of exiting from libarary.
	* dzn/wfc.scm (ast:wfc): Throw errors instead of printing and exiting.
	* dzn/commands/parse.scm (assert-parse): Report well-formedness-error.

	dzn parse: Report "internal-error" with arguments.
	* dzn/commands/parse.scm (assert-parse): For errors other than
	syntax-error or system-error, print "internal-error" with arguments.

2020-06-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add parse_syntax.
	Adding only a minimal baseline; the message report format still needs
	some work.

	* test/all/parse_syntax/parse_syntax.dzn,
	test/all/parse_syntax/baseline/verify/parse_syntax,
	test/all/parse_syntax/baseline/verify/parse_syntax.stderr: New test.
	* test/all/local.mk (SMOKE_TESTS): Add it.

2020-06-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'ROADMAP'.
	* ROADMAP: Update for rename and wip-memoize.

2020-02-07  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	makreel: Use tree-collect-filter instead of tree-collect.
	* dzn/makreel.scm (makreel:add-function-return, reachable-calls-,
	ast:trigger*[<model>, ast:blocking?[<component>,<port>],
	ast:provides-blocking?): Use tree-collect-filter.

	makreel: Only generate parts of other interfaces that are relevant.
	* dzn/makreel.scm (makreel:get-model):
	(enum-sort-global-public): New method.
	(makreel:enum-sort)[<component>,<interface>]: Use it.

2019-12-17  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	makreel: Avoid generating dead makreel code.
	* dzn/makreel.scm (no-tail-call, is-called?): New procedures.
	(call-continuations, makreel:called-function*): Use them to avoid
	include return locations of tail-call calls.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	makreel: Improve performance by memoizing reachable-calls.
	* dzn/makreel.scm (reachable-calls-): Rename from
	reachable-calls to enable memoization.
	(reachable-calls): Add memoization using ast:pure-funcq.

2019-11-28  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	makreel: Improve performance by memoizing makreel:locals.
	* dzn/makreel.scm (makreel:locals-): Rename from makree:locals
	Remove commented code.
	(makreel:locals): Add memoization using ast:pure-funcq.

2020-05-26  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	build: Rename to 'dezyne'.
	* configure.ac (AC_INIT): Rename to 'dezyne'.
	* Makefile.am (release, update-hash): Update.

	guix: dezyne: Rename from 'dzn'.
	* guix/gnu/packages/dzn.scm: Rename to  ...
	* guix/gnu/packages/dezyne.scm: this.  Update package.
	* guix.scm (dzn): Rename to ...
	(dezyne): This.

2020-06-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'ROADMAP'.
	* ROADMAP: Update for wip-verse-makreel and fall-back (PEG groundwork).

2020-05-14  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dzn: Use mcrl2-pipeline-minimal.
	* guix/gnu/packages/dzn.scm (dzn)[inputs]: Use mcrl2-pipeline-minimal.
	* Makefile.am (EXTRA_DIST): Add it.

	guix: Add mcrl2-pipeline, mcrl2-pipeline-minimal.
	* guix/gnu/packages/mcrl2.scm: New file.

2020-05-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Assert valid trace when ltscompare fails.
	This helps avoid the dreaded "No verification errors found."

	* dzn/verify/pipeline.scm (do-refinement): Check on status, assert that
	there is a valid trace when ltscompare fails.

2020-04-29  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	verify: Use mCRL2 pipeline, structured output 201908.0.863ff22263.
	This depends on structured output, and pipeline support, mCRL2
	version 201908.0.863ff22263, or later.

	* dzn/verify/pipeline.scm (mcrl2:verify-interface-deadlock-livelock
	do-refinement,
	mcrl2:verify-component-deterministic-illegal-deadlock-livelock-refinement):
	Add --save-at-end.
	(do-refinement): Read status from stdout;
	update to ": " convention.
	* dzn/commands/traces.scm (mcrl2->lts): Likewise.
	* configure.ac: Add --save-at-end to lps2lts test.  Use EOT to separate
	multiple LTSes on stdin.
	* dzn/verify/traces.scm (parse): Accept `;' as separator.
	* README: Document updated mCRL2 requirement.

2020-04-20  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: Only add one element of acceptance-set to trace.
	Concatenating all alternatives from the set creates an impossible trace;
	use just one alternative.

	* dzn/verify/pipeline.scm (do-refinement): Split acceptance set into
	sorted list of events.
	(check-compliance): Use the first element of acceptance set to lengthen
	the trace.

2020-02-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	verify: Remove dependency on file-system and shell.
	* configure.ac: Check for fixed lps2lts.  Check for ltscompare
	--structured-output.
	* dzn/verify/traces.scm (parse): Allow space as separator.
	* dzn/verify/pipeline.scm (do-refinement): Refactor to support
	lps2lts writing to stdout and --structured-output
	(mcrl2:verify-component-deterministic-illegal-deadlock-livelock-refinement): Update.
	(check-compliance): Likewise.
	* dzn/commands/verify.scm (main): Do not run in temporary directory.

2020-04-30  Johri van Eerd  <johri.van.eerd@verum.com>

	verify: Add helper process for valued action replies.
	This is required for upgrading to mCRL2 44ec01df or later, where

	    sum b: Bool . act(b) . P(); P(b: Bool) = ...

	was disallowed.

	* dzn/makreel.scm (makreel:sum-helper-params): New method.
	* dzn/templates/makreel.scm (sum-helper-params): Use it in new
	template definition.
	* dzn/templates/makreel/assign@action: Use it.
	* dzn/templates/makreel/sum-helper-params@formal,
	dzn/templates/makreel/sum-helper-params@return,
	dzn/templates/makreel/sum-helper-params@stack,
	dzn/templates/makreel/sum-helper-params@formal: New template.

2020-05-13  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: Add wf_undefined.
	The well-formedness check for references to undefined entities has been
	fixed.  A dedicated test has been added. As a result missing and
	erroneous wfc methods have been found and repaired. Most noticable, a
	missing check for <instance> has been added.

	* dzn/wfc.scm (wfc)[<instance>]: New method,
	various places: harden against cascading errors.
	* test/all/local.mk (PARSER_TESTS): Add test.
	* test/all/wf_undefined/META,
	test/all/wf_undefined/baseline/verify/wf_undefined,
	test/all/wf_undefined/baseline/verify/wf_undefined.stderr,
	test/all/wf_undefined/wf_undefined.dzn,
	test/parser/wf_undefined: New files.

2020-06-08  Rob Wieringa  <Rob.Wieringa@verum.com>

	fixup: wfc: binding external.
	This is a follow-up commit to 7682386c829277fb6b4c1f2e387f0236eadbf150.

	When an external requires port of a system is connected to a requires port of a
	sub component, that second port must be external also.

	* dzn/wfc.scm (binding-direction): Propagate external to port exposed
	on a system.
	* test/all/wf_bindingExternals/baseline/verify/wf_bindingExternals.stderr:
	Update baseline.

2020-06-17  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "fixup: wfc: binding external."
	After discussion, Rob Wieringa provided an alternative fixup.

	This reverts commit 2cfe9716ba3e3f9421197d97b090980eed1f4dc6.

2020-06-05  Rob Wieringa  <Rob.Wieringa@verum.com>

	Fix class mixing of equally named dzn definitions.
	* dzn/ast.scm (ast:equal?): Consider object class in comparison.
	* dzn/wfc.scm (reply): Use separate TEST and EXPRESSION in COND
	clause.

2020-05-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix.scm: Update to guix-36640207c9.
	Update to a recent, post core-updates merge version of Guix.  The recent
	core-updates merge once again supports MingGW cross-builds.

	This particular commit supports a Guile-3.0 based Guix and allows using
	the time-machine to travel back to the pre-Guile-3.0 era.

	See <https://bugs.gnu.org/41595>.

	* guix.scm: Update time-machine instruction.

2020-06-06  Johri van Eerd  <johri.van.eerd@verum.com>

	normalize: Add missing reply port in functions too.
	* dzn/normalize.scm (add-reply-port): Recurse into functions to add
	reply port, if missing.
	* test/all/blocking_function_reply/blocking_function_reply.dzn: New
	file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2020-01-13  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	makreel: Fix tail-call marking for non-recursive calls.
	* dzn/makreel.scm (makreel:mark-tail-call): Strictly use a (void)
	<return> to mark tail calls.
	(makreel:om): Call makreel:mark-tail-call after
	makreel:add-function-return.
	* test/dzn/makreel.scm ("tail-call other", "non tail-call",
	"non tail-call valued"): New tests.

2020-04-21  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Start unit test for makreel.
	* test/dzn/makreel.scm: New file.
	* Makefile.am (UNIT_TEST): Move from here ...
	* test/dzn/local.mk (UNIT_TESTS): ... to here, and add makreel.scm

2020-05-20  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	parse: Refactor interface and exit.
	* dzn/parse/peg.scm: Remove obsolete %peg-locations? export.
	(peg:error): Use throw instead of exit, leave that
	decision to ...
	* dzn/commands/parse.scm (assert-parse): ... here.  Print actual
	system-error instead of assuming EONOENT.  When --debug,
	(parse-opts): Remove obsolete options --behaviour, --locations.
	* dzn/parse.scm (peg:parse-file): Rename to ...
	(parse-string): ... this.  Remove catch, printing of ENOENT guess, exit.
	Remove obsolete "behaviour? and "locations?" parameters.
	(parse): Rename to ...
	(file->ast): ... this.  Remove model-name parameter and unused
	"behaviour?" and "location?" parameters.  Update caller.
	(string->ast): New procedure.

2020-05-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: Parse unknown identifiers and handle errors in wfc.

2020-05-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: Rename and parameterize skip parser.
	* dzn/peg/codegen.scm (define-skip-parser): Macro for declaring skip parsers.
	(wrap-parser-for-users): Use skip parser via parameter.
	(%peg:skip?): Parameter for skip parser.
	* dzn/parse/peg.scm (peg:skip-parse): Export skip parser.
	* dzn/parse.scm (peg:parse-file): Parameterize skip parser.

2020-05-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: Move peg grammar parameterization to parse.scm
	* dzn/peg.scm (peg:line-number): Remove.
	(peg:column-number): Remove.
	(peg:line): Remove.
	(peg:error): Remove.
	(peg:handle-syntax-error): Remove.
	* dzn/parse.scm (peg:line-number): Add.
	(peg:column-number): Add.
	(peg:line): Add.
	(peg:error): Add.
	(peg:handle-syntax-error): Add.
	(peg:parse-file): Parameterize outside peg.scm to avoid recompiling.

2020-05-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: Add fall-back parsing.
	Refactor:

	* dzn/peg/codegen.scm (format-error): Record skipped input or missed
	  expectations.
	(fall-back-skip): Common code for syntax-error recovery.
	(partial-match): Attempt parse and return true on partial match.

2020-05-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	fixup: wfc: Add more checks.
	This is a follow-up commit to 8b3f12a07cfa95b081830469f3f0afe06d3e63a6.

	* dzn/wfc.scm (reply): Exclude requires out triggers and assume that a
	reply in that case releases a blocking provides in.

2020-05-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	fixup: wfc: binding external.
	This is a follow-up commit to 7682386c829277fb6b4c1f2e387f0236eadbf150.

	* dzn/wfc.scm (binding-direction): Propagate external to port exposed
	on a system.

2020-05-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Drop code2fdr.
	* test/dzn/dzn.scm (run-execute): Use "dzn trace" to translate code
	traces properly.
	* test/bin/code2fdr,
	test/bin/local.mk: Remove.
	* Makefile.am: Remove include.

2020-05-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: async_order, async_order2: Hardcode trace.2 test.
	The trace.2 tests were hacked into passing by re-wiring the system,
	in combination with setting component and port names to blank (" ")
	and having code2fdr skip those messages.

	Disables trace.2 tests altogether by printing hardcoded trace instead.
	This enables dropping the hacky code2fdr script altogether.

	* test/all/async_order/main.cc (main): Hardcode trace.2 test.
	* test/all/async_order2/main.cc (main): Likewise.

2020-05-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: async_ranking: Play well with dzn trace.
	dzn trace chokes on parsing the ranking debug output; avoid that by not
	mixing the trace with debug info.

	* test/all/async_ranking/main.cc: Print ranking info to stdout.

2020-05-12  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: async_rank: Play well with dzn trace.
	dzn trace chokes on parsing the ranking debug output; avoid that by not
	mixing the trace with debug info.

	* test/all/async_rank/main.cc: Print ranking info to stdout.

2020-05-11  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Respect code diff.
	The previously used regexp skips any line that has tree dots, anywhere,
	e.g., these two lines were not considered (and thus these two files were
	considered "the same"):

	   diff -ywB --ignore-matching-lines='[.][^.]\+[.][^.]\+[.]' <(echo -e '<external>.p.hello -> sut.p.hello') <(echo -e '. . .')
	<external>.p.hello -> sut.p.hello				. . .
	   [exit 0]

	note that the trace on the left is perfectly OK.

	* test/dzn/dzn.scm (run-test): Strictly skip system-internal events.

2020-05-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update 'ROADMAP'.
	* ROADMAP: Update for banaan => kluit.

2020-05-26  Johri van Eerd  <johri.van.eerd@verum.com>

	doc: Update `ROADMAP' to prepare for 2.10 release.

2020-05-25  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: Register equal_binary, hello_shadow.
	These were present and pass, just not enabled.

	* test/all/local.mk (REGRESSION_TESTS): Add equal_binary and
	hello_shadow.

2020-05-14  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: Add guard check.
	Add a type check for <guard> <expression>s.  Moreover, add a test
	checking for all kind of <expression> type correctness.

	* dzn/wfc.scm: (wfc)[<guard>]: Add check for <bool>
	* test/all/local.mk: Add wf_expressionExpected check
	* test/all/wf_expressionExpected/META,
	test/all/wf_expressionExpected/baseline/verify/wf_expressionExpected,
	test/all/wf_expressionExpected/baseline/verify/wf_expressionExpected.stderr,
	test/all/wf_expressionExpected/wf_expressionExpected.dzn: New files.

2020-05-15  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	guix: dzn: Remove explicit dependency on coreutils.
	* guix/gnu/packages/dzn.scm (dzn)[inputs]: Remove coreutils.
	[arguments]: Remove coreutils from PATH wrapper.

2020-05-19  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP: Track progress since rc9.

2020-05-18  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	emacs: Use regexp-parsing for model names.
	The standalone dzn client does not implement --interfaces, --components
	flags on dzn parse.  This patch works around that.

	* emacs/dzn-mode.el (get-models): New function.
	(dzn-get-models): Use it instead of dzn parse.

2020-04-14  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: performance: Refactor cycle detection.
	Cycle detection is used in two cases: to set the .recursive property of
	<function> objects, and to do a well-formedness check on <system>
	recursive instantiation.  An efficient generic cycle detection function
	has been added, using Tarjan's strongly connected components (SCC)
	algorithm.  This is used in both cases and code duplication has been
	removed.  Test cases have been sharpened.

	*  dzn/ast.scm (ast:graph-scc): New SCC function, applied in ...
	(ast:graph-cyclic?): ... new method.
	(ast:recursive?): New method, using ast:graph-cyclic?.
	(ast:component-model*): New helper method.
	(ast:system*): New helper method.
	(ast:call-statement): New helper method.
	(ast:function*): New helper method.
	* dzn/parse/ast.scm (set-recursive): Adapt to use ast:recursive?.
	(recurses?): Remove.
	* dzn/wfc.scm (tail-recursion): Adapt to use .recursive attribute.
	(recursive?)[<system>]: New method, using ast:graph-cyclic?.
	(recursive)[<system>]: wfc, adapt to used recursive?.
	(recurses?, sub-systems): Remove.
	* test/all/wf_functionTailRecursion/baseline/verify/wf_functionTailRecursion.stderr:
	Fix baseline.
	* test/all/wf_systemRecursion/wf_systemRecursion.dzn: Add test for
	self-inclusion.
	* test/all/wf_systemRecursion/baseline/verify/wf_systemRecursion.stderr:
	Fix baseline.

2020-05-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "wfc: performance: Call 'recursive?'."
	These two commits to improve performance and remove code duplication of
	‘recurses?’ fail to address the badly understood and duplicated
	recurses? function: "Smart...but too clever."

	This reverts commit 04a766a6a429492af51784b7623f0a1f262cbde0.

2020-05-08  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	Revert "ast: Remove code duplication."
	This reverts commit 934955fb2504a027763e5fdc8eada0e4c5a2b53c.

2020-04-20  Rob Wieringa  <Rob.Wieringa@verum.com>

	ast performance: Use memoization in recursive call of 'ast:lookup-n'.
	ast:lookup-n tries and lookup a name in an outer scope when required.
	It will profit (in performance) from a call to a memoized function.
	Since ast:lookup-n returns a list of matches, a new memoized function
	called ast:lookup-list is introduced, and used where appropriate.

	* ast.scm (ast:lookup-list-): Rename from ...
	(ast:lookup-list): this new memoized function.
	(ast:lookup, ast:lookup-n): Use ast:lookup-list, for performance.
	(ast:lookup-): Remove.

2020-05-07  Rob Wieringa  <Rob.Wieringa@verum.com>

	ast: Fix .port lookup of <trigger> when shadowed by parameter.
	Since <trigger> opens a new scope, the look-up of its port must start in
	its outer scope.  This is extra tricky when parameters get renamed.

	Port names can now be shadowed by parameter names.

	A test case has been added.

	* dzn/ast.scm (.port <trigger>): Fix lookup.
	* test/all/alpha_shadow_port/alpha_shadow_port.dzn,
	test/regression/alpha_shadow_port: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2020-05-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	peg: Treat types-and-events similar to instances-and-bindings.
	* dzn/parse/peg.scm (peg:parse): Rename types-or-events to
	types-and-events.
	* dzn/parse/ast.scm (parse-tree->ast): Update name and treatment
	similar to instances-and-bindings: use partition instead of filtering
	twice.

2020-05-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>
	    Jan Nieuwenhuizen  <janneke@gnu.org>

	peg: Allow mixing instances and bindings.
	* dzn/parse/peg.scm (peg:parse): Replace separate instances and
	bindings with instances-and-bindings.
	* dzn/parse/ast.scm (parse-tree->ast): Handle instances-and-bindings.
	Remove dead code.
	* test/all/system_mix_bindings/system_mix_bindings.dzn: Rename system
	"C" to "system_mix_bindings".  Fixes other test now parse succeeds.
	* test/all/local.mk (XFAIL_TESTS): Remove system_mix_bindings.
	* test/all/wf_interfaceMustDefineEvent/baseline/verify/wf_interfaceMustDefineEvent.stderr:
	Update baseline.

2020-05-07  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	ast: Remove code duplication.
	* dzn/wfc.scm (%calls-per-function, calls-per-function, recursive?):
	Move to
	* dzn/parse/ast.scm (%calls-per-function, ast:calls-per-function,
	ast:recursive?): ... here.  Update callers.
	(recursive?): Remove mostly duplicated function.
	(set-recursive): Adapt to <call> instead of <function> interface.

2020-04-14  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: performance: Call 'recursive?'.
	Well-formedness performance on recursivity of functions has been
	improved by pre-calculating the 'calls per function' property that is
	repeatedly used in a 'recurses?' function.
	This property is passed using the guile parameter mechanism.

	* dzn/parse/ast.scm (recurses?): Factor-out call-statement to ...
	* dzn/ast.scm (ast:call-statement): ... New function.
	* dzn/wfc.scm (calls-per-function): New method.
	(%calls-per-function): New parameter.
	(wfc)[<behaviour>]: Calculate and pass it.
	(recurses?): Use it, and remove dead code.

2020-03-11  Rob Wieringa  <Rob.Wieringa@verum.com>
	    Jan Nieuwenhuizen  <janneke@gnu.org>

	wfc: performance: System checks.
	Performance of well-formedness checks of large systems is improved.
	1. In the test for recursiveness of a system, the calculation of all
	subsystems is memoized by storing the data in an alist.
	2. In the test for cyclic bindings in a system, the collection of all
	reuired instances is calculate once in an alist, and re-used in the rest
	of the test.


	* dzn/wfc.scm (sub-systems-): New method.  Split worker out from...
	(sub-systems): ... rename from subsystems.  Add memoization.
	(all-required): Add 'required-alist' parameter to avoid re-calculation.
	(cyclic-bindings): Calculate required-alist once and re-use it in
	further processing.

2020-05-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	wfc: Remove alternative implementation of ast:return-types.
	This removes code duplication.

	* dzn/wfc.scm (model-event-types): Remove.  Update callers to use
	ast:return-types.
	* dzn/ast.scm (ast:return-types)[<interface>]: Add docstring.
	[<component-model>]: Likewise.  Use filter-map to allow #f.
	[<type>]: New specialization.
	[<event>]: New specialization, rename from ...
	(ast:return-type): ... remove method.

2020-05-04  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: performace: Pre-calculate model properties.
	Well-formedness performance has been improved by pre-calculating some
	model properties that are repeatedly used in a model's sub nodes:
	1. is 'blocking' used in the model?
	2. what event types are used in the model.
	These properties are passed using the guile parameter mechanism.

	Additionally, the well-formedness check for system 'missing-bindings'
	has been improved by pre-calculating all used ports of a system, and
	re-using that set later-on,

	* dzn/wfc.scm (%model-event-types, %model-blocking?): New parameters.
	(model-event-types,model-blocking?): New methods.
	(wfc)[<behaviour>]: Callculate and pass the two parameters.
	(wfc-reply-type): Use %model-event-types.
	(reply): Use %model-blocking.
	(missing-bindings): Re-write to calculate 'ports' once for a system.

2020-05-04  Rob Wieringa  <Rob.Wieringa@verum.com>

	parse: performance: Pre-calculate newlines for Location.
	Location is stored in the ast as (line,col), so has to be transformed
	from the position resulted from the peg parser.  This transformation was
	taking 80% of parsing time.  Performance has been improved by
	pre-calculating the positions of all newlines in the source.
	Furthermore, calculations are only done for <locationed> nodes.

	* dzn/parse/ast.scm (parse-tree->ast): Calculate newlines and use
	these in 'line-number' and 'column-number' functions, called only for
	<locationed>.  Use 'tree-collect-filter' to optimize collecting imports.

2020-05-04  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP: Update.

2020-02-05  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: Add check for reply type.
	A well-formedness check has been added for a 'reply(expr)' construct.
	There must exist an event 'e' that matches the reply, i.e. the type of
	'expr' must match the reply type of 'e'.  This check will prevent mCRL2
	to abort on violating models.  Tests have been modified to reflect the
	change.

	* dzn/wfc.scm (wfc-reply-type)[<expression>]: New method.
	(wfc)[<reply>]: Use it.
	* (wfc)[<return>]: Fix indentation.
	* test/all/wf_replyTypeMismatch/wf_replyTypeMismatch.dzn: Sharpen test.
	* test/all/wf_replyTypeMismatch/baseline/verify/wf_replyTypeMismatch.stderr:
	test/all/wf_typeerror/baseline/verify/wf_typeerror.stderr: Update baselines.

2020-02-04  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: Harden wfc trigger.
	The well-formedness check for a <trigger> 'p.e' now copes with the
	option that 'p' does not refer to a <port>.  In that case 'e' cannot be
	resolved. A corresponding test has been added.  Due to the change some
	well-formedness messages change, resulting in updated test baselines.

	* dzn/wfc.scm (wfc): Check first for availability of port.
	* test/all/wf_importPathErr/baseline/verify/wf_importPathErr.stderr,
	test/all/wf_typeerror/baseline/verify/wf_typeerror.stderr: Update baseline.
	* test/all/local.mk (PARSER_TESTS: Add test.
	* test/all/wf_notPort/baseline/verify/wf_notPort,
	test/all/wf_notPort/baseline/verify/wf_notPort.stderr,
	test/all/wf_notPort/wf_notPort.dzn,
	test/parser/wf_notPort,
	test/regression/wf_notPort: New files.

2020-02-04  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: Add 're-declaration' check, and corresponding test.
	Declaration of an item with the same name as a previous one in the same
	scope, is not allowed in Dezyene.  Well-formedness checks are added for
	missing cases.  A corresponding test has been added.

	* dzn/wfc.scm (wfc): Add re-declaration check for <interface>,
	<component>, <system>, <event>.
	* dzn/wfc.scm (decl-scope): Specify declaration scope for <port>.
	* test/all/wf_declaredBefore/wf_declaredBefore.dzn,
	test/all/wf_declaredBefore/META,
	test/all/wf_declaredBefore/baseline/verify/wf_declaredBefore,
	test/all/wf_declaredBefore/baseline/verify/wf_declaredBefore.stderr: New files.
	* test/all/local.mk (PARSER_TESTS): Add the test.
	* test/regression/wf_declaredBefore,
	test/parser/wf_declaredBefore: New symlinks.

2020-01-31  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	ast: Introduce tree-collect-filter for cutting off traversal.
	The goops method tree-collect recursively traverses all sub nodes of
	an ast object, which can have a severe performance penalty.

	Method tree-collect-filter is introduced to stop traversal when
	filter-predicate is not met.  Method three-collect can be expressed in
	terms of tree-collect-filter.  Its introduction makes
	tree-collect-shallow redundant.

	* dzn/goops.scm (tree-collect-filter): New method.  Traverse ast object
	until filter-predicate is violated.
	* dzn/goops.scm (tree-collect): Ues it.
	* dzn/goops.scm (tree-collect-shallow): Remove.
	* dzn/wfc.scm (reply): Performance improvement: Now use
	tree-collect-filter (was tree-collect).
	* dzn/normalize.scm (triples:->triples): Update to use
	tree-collect-filter instead of tree-collect-shallow.

2020-04-28  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP: Update.

2020-04-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add system_mix_bindings.
	Bug reported with minimal example by Joran Jessurun.

	* test/all/system_mix_bindings/system_mix_bindings.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS, XFAIL_TESTS): Add it.

2020-04-27  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: Add alpha_field_test.
	* test/all/alpha_field_test/alpha_field_test.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2020-04-24  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: Add alpha_local.
	* test/all/alpha_local/alpha_local.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.

2020-04-24  Jan (janneke) Nieuwenhuizen  <janneke@gnu.org>

	test: hello_alpha: Fix verification, test all stages.
	* test/all/hello_alpha/META: Remove.
	* test/all/hello_alpha/hello_alpha.dzn: Accept p.e, fixes verification
	error.

2020-04-23  Rob Wieringa  <rob.wieringa@verum.com>

	test: Add alpha_variable.
	Reported by Joran Jessurun on IRC.

	* test/all/alpha_variable/alpha_variable.dzn: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* dzn/normalize.scm (rewrite-formals): Also rewrite name of variable
	declaration, field-test, formal and formal-binding.  Besides formals,
	also rewrite locals.  Remove catch-all string rewrite.

	Co-Authored-by: Jan Nieuwenhuizen <janneke@gnu.org>
	Co-Authored-by: Rob Wieringa <rob.wieringa@verum.com>

2020-02-27  Rob Wieringa  <Rob.Wieringa@verum.com>

	ast: Fix performance of <void> lookup.
	'void' is defined in <root> scope; skipping to <root> gives better
	performance.

	* dzn/ast.scm (ast:lookup-n): Add special case for <void>: skip all
	irrelevant nested scopes.

2020-03-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	trace: Use "error" and "info" tagging of messages.
	* dzn/commands/trace.scm (seqdiag:sexp->location): Use "error" and
	"info" tagging of messages.

2020-01-15  Ruter van Beusekom  <rutger.van.beusekom@verum.com>

	gash pipe: Support Guile piped-process.
	* gash/pipe.scm (pipeline): Rename to ...
	(forked:pipeline): this.
	(pipeline->sting): Rename to ...
	(forked:pipeline->string): this.
	(piped-process:pipeline, piped-process:pipeline->string, pipeline,
	pipeline->string): New function.

2020-04-06  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: Support running with `Dash' as /bin/sh.
	Dash actively removes environment variables with a hyphen/dash from the
	environment:

	    https://git.kernel.org/pub/scm/utils/dash/dash.git/commit/?id=46d3c1a614f11f0d40a7e73376359618ff07abcd

	which makes `make check' start infinite recursion when /bin/sh is
	Dash (such as Debian).

	* test/bin/run.in (main): Avoid hyphen/dash in environment variable
	'run_seen' used to stop recursion.

2020-03-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Update hash and version.
	* guix/gnu/packages/dzn.scm (dzn): Add markers.
	* Makefile.am (update-hash): Use them to update hash.

2020-03-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP: Update after integration of `wip'.

2020-03-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	trace: Add guile-json-1 compatibility.
	* dzn/commands/trace.scm (json-vector->list): New function.
	(seqdiag:sexp->location, seqdiag:sequence->steps, seqdiag:trace->steps):
	Use it.
	(json->alist-scm): New function.
	(seqdiag:format-sexp): Use it.

2020-03-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	trace: Support for seqdiag trace.
	* dzn/commands/trace.scm (<seqdiag:step>): New type.
	(seqdiag:get-model, seqdiag:sequence->trail, seqdiag:step->string,
	seqdiag:sexp->location, seqdiag:sequence->steps): New function.
	(seqdiag:trace->steps): Use them.
	(seqdiag:format-sexp, seqdiag:format-trace, seqdiag:sexp->steps,
	step:format-trace): New exported function.
	(format-trace): Use them.

2020-03-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: Update help text.
	* dzn/config.scm.in (%languages): New exported variable.
	* Makefile.am (do_subst): Substitute it.
	* dzn/commands/code.scm (parse-opts): Use it to fix help text,
	together with...
	(%default-language): New variable.
	(main): Use it to softcode default.

2020-03-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	trace: Bugfix.
	This fixes

	    echo 'hello -> h.hello' | ./pre-inst-env dzn trace

	* dzn/commands/trace.scm (step->communication): Use "sut", fixes
	string-append on symbol.

2020-03-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	dzn: Allow upgrading to guile-json-3.
	This drops json2scm library that has a strict guile-json-1 dependency.

	* dzn/commands/verify.scm (dzn): Do not include json2scm.
	* dzn/json2scm.scm: Remove.
	* dzn/local.mk (dist_%C%_scm_DATA): Remove it.

2020-03-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	emacs: Remove dzn-ide aspects.
	* emacs/dzn-mode.el (dzn-browse, dzn-register, dzn-select-view,
	goto-location, dzn-handle-trace): Remove.

2020-03-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	emacs: Remove dzn-run.
	* emacs/dzn-mode.el (dzn-run, dzn-run-event, dzn-run-back): Remove.
	Update users.

2020-03-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	emacs: Resurrect dzn-mode.
	* emacs/dzn-mode.el: Initial import.  Disable view commands: browse,
	handle-trace, view/system.
	* Makefile.am (dist_lisp_DATA): Add it.
	* configure.ac (AM_PATH_LISPDIR): Support it.

2020-01-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	verify: Do not write interface-trace.txt.
	* dzn/verify/pipeline.scm (assert-fail): Do not write obsolete
	`interface-trace.txt'.  Remove interface-trace parameter.  Update
	callers.

2020-03-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	verify: Do not dump models when working from stream.
	This fixes the weird ‘compliance_provides_bool-bug’ in IDE.

	* dzn/commands/verify.scm (main): When file-name is `-', parse
	directly from stdin; do not dump models first.

2020-01-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	verify: Prepare for Guile piped-process.
	* gash/pipe.scm (pipeline+): Rename to ...
	(pipeline): this.  Change interface to match piped-process based
	pipeline.  Update callers.
	(pipeline->string): Change interface similarly.  Update callers.
	(pipe*, tee-n, handle-error): Remove.
	* dzn/commands/traces.scm (mcrl2->lts): Update.
	(model->traces): Refactor.
	(mcrl2:verify-interface-deadlock-livelock, do-refinement): Use it.
	(mcrl2:verify-component-deterministic-illegal-deadlock-livelock-refinement): Refactor.

2020-03-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP: Update.

	dzn: Fix command line flags.
	* dzn/commands/traces.scm (parse-opts): Fix -m,--model documentation.
	* dzn/commands/verify.scm (parse-opts): Likewise.  Remove -o,--output
	and MAP-FILE suggestions.

2020-03-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	code json: Fixes for strings and empty $$ data.
	* dzn/json.scm (json:value): Escape double quotes for strings.
	Support uspecified.

2020-02-12  Rob Wieringa  <Rob.Wieringa@verum.com>

	code: Add language `json'.
	Use

	    dzn code --language=json test/all/hello/hello.dzn

	to get the AST in JSON format.

	* dzn/json.scm: New file.
	* dzn/local.mk (dist_%C%_scm_DATA): Add it.
	* dzn/templates/json.scm: New file.
	* dzn/templates/json/: New template directory.
	* dzn/templates/local.mk (dist_nocompile_%C%_scm_DATA, EXTRA_DIST):
	Add them.

2020-03-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	dzn: Remove obsolete command-line options.
	* dzn/commands/cat.scm (parse-opts): Remove -v,--version selection.
	* dzn/commands/hello.scm: Likewise.
	* dzn/commands/ls.scm: Likewise.
	* dzn/commands/lts.scm: Likewise.
	* dzn/commands/parse.scm: Likewise.
	* dzn/commands/trace.scm: Likewise.
	* dzn/commands/code.scm: Likewise.  Remove -A,--ast; --depends;
	--deprecated; -G,--dzn.
	* dzn/commands/traces.scm: Likewise.  Remove -p,-python.
	(model->traces): Remove python? fall-back support.
	* dzn/commands/verify.scm: Likewise.  Drop -G,--dzn.
	* dzn/parse.scm (parse-file): Remove keyword parameter #:generator?
	* dzn/gdzn.scm (parse-opts): Remove -g,--generator; -H,--html;
	-S,--session.
	* dzn/dzn.scm (dzn-async?): Drop generator support.
	(dzn-dzn-async?, generator-dzn-async?): Remove.

	build: Generate man pages for all dzn commands.
	* Makefile.am (dist_man_MANS): Add all dn commands.
	(doc/dzn-%.1): New target.
	(doc/dzn-code.1, doc/dzn-hello.1, dzn-parse.1): Remove.

2020-02-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Support --enable-languages when cross-compiling.
	* configure.ac: Do not test for language compilers when cross compiling.

2020-03-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Remove broken links.
	* test/all/wf_coverageDuplicate/baseline/verify: Remove.
	* test/error/compliance_system_provides_bool: Remove.
	* test/error/external_asynchronous_illegal: Remove.
	* test/import/AlarmSystem: Remove.
	* test/regression/glue-dzn: Remove.
	* test/regression/hello space: Remove.
	* test/regression/hello_namespace_foreign: Remove.

	doc: Update `ROADMAP'.
	* ROADMAP: Update.

2020-03-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Cleanup location configuration.
	* build-aux/pre-inst-env.in (DEZYNE_PREFIX): Remove obsolete variable.
	* dzn/config.scm.in: Add Copyright header.
	(%command-dir, %service-dir, %service-version, %service-version-dir):
	Remove.
	* Makefile.am (do_subst): Remove obsolete fields.
	* dzn/gdzn.scm (service-version, exec-dzn-version): Remove.
	(main): Do not use them.
	* dzn/templates/dzn.scm (version): Use %version instead of
	%service-version.
	* runtime/c++-msvc11/dzn/meta.hh.in (DZN_VERSION_STRING): Use
	PACKAGE_VERSION instead of SERVICE-VERSION.

	build: Install runtime for supported languages only.
	* Makefile.am (local-dist): Install runtime for supported languages
	only.

2020-03-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Do not distribute generated file.
	* dzn/local.mk (dist_%C%_scm_DATA): Remove config.scm.
	(nodist_%C%_scm_DATA): Add it.
	(%C%_go_DATA): Add config.go.

	bi

2020-03-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_provides_illegal4: Move to NON_REPRODUCIBLE_TESTS.
	* test/all/local.mk (NON_REPRODUCIBLE_TESTS): Add
	compliance_provides_illegal4.
	(REGRESSION_TESTS, XFAIL_TESTS): Remove it.

2020-03-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_reply_bool: Move to NON_REPRODUCIBLE_TESTS.
	The LTS for this test is not generated reproducibly by mcrl22lps |
	lps2lts across different mcrl2 builds, at least depending on how mcrl2
	was compiled (e.g., using boost-1.69 or boost-1.70).

	* test/all/local.mk (NON_REPRODUCIBLE_TESTS): Add
	compliance_reply_bool.
	(REGRESSION_TESTS): Remove it.

2020-02-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Set compliance_provides_illegal4, shell to XFAIL.
	* test/all/local.mk (XFAIL_TESTS): Add compliance_provides_illegal4,
	shell.

2020-03-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP: Update.

2019-09-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Initial info manual.
	* doc/dezyne.texi: New file.
	* doc/fdl-1.3.texi: New file.
	* guix/gnu/packages/dzn.scm (dzn): Depend on texinfo.
	* Makefile.am (info_TEXINFOS): New variable.

2020-02-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Disable experimental languages.
	* configure.ac: Make scheme optional.
	* dzn/local.mk: Make languages optional.
	* dzn/templates/local.mk: Likewise.
	* README: Remove dependencies for C++03, C, C#, JavaScript.

	doc: Update `ROADMAP'.
	* ROADMAP: Update.

2020-02-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Distribute importPath.
	This fixes wf_importPathErr when building from tarball.

	* test/all/importPath/run: New file.
	* test/all/local.mk (REGRESSION_TESTS): Add it.
	* test/all/importPath/META: Skip build.

2020-02-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Support rcX releases.
	* configure.ac (have_ltscompare_structured_output): Fix assigning of
	major, minor and patch versions for rcX.
	* runtime/c++/dzn/meta.hh.in (DZN_VERSION_STRING): Update to use PACKAGE_VERSION.
	* runtime/c++03/dzn/meta.hh.in (DZN_VERSION_STRING): Likewise.

	build: Distribute test scripts and makefiles.
	* test/bin/local.mk: New file.
	* test/lib/local.mk: New file.
	* Makefile.am: Include them.

	build: Distribute runtime and templates.
	* dzn/local.mk (dist_%C%_scm_DATA): Remove c++-03, c, cs.
	* configure.ac: Likewise.
	* dzn/templates/local.mk: Likewise.  Also html.
	* runtime/local.mk: Likewise.
	* Makefile.am: Include them.

2020-02-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Use tarball-based package description.
	* guix/gnu/packages/dzn.scm (dzn): Use tarball-based package
	description.

2020-02-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Remove glue-dzn.
	test/all/glue-dzn: Remove.
	test/all/local.mk: Update.

2020-02-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_out_nondet: Use canonical naming.
	Run

	    sed -i \
	       -e 's,\<II\>,ihello,g' \
	       -e 's,\<IO\>,iworld,g' \
	       -e 's,\<ia\>,hello,g' \
	       -e 's,\<oa\>,world,g' \
	       -e 's,\<ob\>,cruel,g' \
	       -e 's,\<ic\>,goodbye,g' \
	       -e 's,\<pp\>,h,g' \
	       -e 's,\<rp\>,w,g' \
	       test/all/compliance_out_nondet/compliance_out_nondet.dzn \
	       test/all/compliance_out_nondet/baseline/verify/compliance_out_nondet

	and

	      ./pre-inst-env dzn -d --verbose verify --all -m compliance_out_nondet test/all/compliance_out_nondet/compliance_out_nondet.dzn | test/bin/reorder > test/all/compliance_out_nondet/baseline/verify/compliance_out_nondet

	* test/all/compliance_out_nondet/compliance_out_nondet.dzn: Use
	canonical naming.
	* test/all/compliance_out_nondet/baseline/verify/compliance_out_nondet: Update.

	xx

2020-02-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_out_inevitable_illegal: Use canonical naming.
	Run

	    sed -i \
	       -e 's,\<II\>,ihello,g' \
	       -e 's,\<IO\>,iworld,g' \
	       -e 's,\<ia\>,hello,g' \
	       -e 's,\<oa\>,world,g' \
	       -e 's,\<ob\>,cruel,g' \
	       -e 's,\<ic\>,goodbye,g' \
	       -e 's,\<pp\>,h,g' \
	       -e 's,\<rp\>,w,g' \
	       test/all/compliance_out_inevitable_illegal/compliance_out_inevitable_illegal.dzn \
	       test/all/compliance_out_inevitable_illegal/baseline/verify/compliance_out_inevitable_illegal

	and

	    cat test/all/compliance_out_inevitable_illegal/baseline/verify/compliance_out_inevitable_illegal > x; test/bin/reorder < x > test/all/compliance_out_inevitable_illegal/baseline/verify/compliance_out_inevitable_illegal

	* test/all/compliance_out_inevitable_illegal/compliance_out_inevitable_illegal.dzn:
	Use canonical naming.
	* test/all/compliance_out_inevitable_illegal/baseline/verify/compliance_out_inevitable_illegal: Update.

2020-02-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: compliance_out_inevitable: Use canonical naming.
	Run:

	    sed -i \
	       -e 's,\<II\>,ihello,g' \
	       -e 's,\<IO\>,iworld,g' \
	       -e 's,\<ia\>,hello,g' \
	       -e 's,\<oa\>,world,g' \
	       -e 's,\<ob\>,cruel,g' \
	       -e 's,\<ic\>,goodbye,g' \
	       -e 's,\<pp\>,h,g' \
	       -e 's,\<rp\>,w,g' \
	       test/all/compliance_out_inevitable/compliance_out_inevitable.dzn \
	       test/all/compliance_out_inevitable/baseline/verify/compliance_out_inevitable

	* test/all/compliance_out_inevitable/compliance_out_inevitable.dzn: Use
	canonical naming.
	* test/all/compliance_out_inevitable/baseline/verify/compliance_out_inevitable:
	Update

2020-02-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Add test/all/compliance_out_inevitable_illegal.
	This tests fails because ltscompare cannot filter that pp.ia -> illegal;
	dzn lts could be added to the pipeline to fix this.

	* test/all/compliance_out_inevitable_illegal: New failing test.
	* test/all/local.mk (REGRESSION_TESTS, XFAIL_TESTS): Add it.
	* test/regression/: Add symlink.
	* test/error/: Likewise.

2020-02-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Rename test/compliance/compliance_out_nondet.
	Run:

	   bin/rename all/compliance_out_async_nondet all/compliance_out_nondet

	*  all/compliance_out_nondet: Rename from all/compliance_out_async_nondet.

2020-02-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Fix and rename test/compliance/compliance_out_inevitable.
	Run:

	   bin/rename test/compliance/compliance_out_async_inevitable test/compliance/compliance_out_inevitable

	*  all/compliance_out_inevitable: Rename from
	all/compliance_out_async_inevitable.  Remove illegal path, simplify.

2020-02-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	guix: Document guix version dependency for environment.
	Run

	    guix time-machine --commit=ab0ede51c041927a1c35535aec3504f84d7a9751 -- environment -l guix.scm

	* guix.scm: Fix environment command.

2020-02-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Fix hello_recursive and recursive tail call check.
	* dzn/wfc.scm (recurses?): New function.
	(tail-recursion): Use it to fix recursive call in tail position test.
	* dzn/parse/ast.scm (recurses?): Robustify.
	* test/all/hello_recursive/hello_recursive.dzn: Remove valued recursive
	function; that is not (yet) supported.
	* test/all/wf_functionTailRecursion/baseline/verify/wf_functionTailRecursion.stderr:
	Update baseline.

2020-02-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Update `ROADMAP'.
	* ROADMAP: Update.

2020-02-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: `HACKING': Describe some test usage.
	* HACKING: Add examples for the simplified, autotools-based regression
	test.

2020-01-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Write progress in org mode.
	* test/dzn/dzn.scm (run-test): Introduce test as top level org entry.
	Enable org mode.
	(run-traces, run-verify, run-code, run-traces, run-build, run-execute):
	Print stage progress as second level org entry.

2020-01-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Rename and xfail import_strip_component.
	Run

	   bin/rename all/hello_import all/import_strip_component

	* test/all/import_strip_component/: Rename from hello_import.
	* test/all/local.mk (XFAIL_TESTS): Add it.  This feature is not
	supported.

2019-11-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: javascript: Cater for nodejs > 6.8.
	* dzn/templates/javascript/main@component: Cater for nodejs > 6.8.

2020-01-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	debian: Remove nodejs, npm, node-q dependencies.
	* debian/control (Build-Depends): Remove nodejs, node-q, npm.
	* debian/rules (override_dh_auto_build, override_dh_auto_test): Remove
	npm stanzas.

	guix: Remove node dependencies.
	* guix/gnu/packages/dzn.scm (dzn): Remove node, node-q, node-getopt
	dependencies.
	(node-q, node-getopt): Remove.

	test: Remove nodejs-based test driver.
	* test/bin/json2html: Remove.
	* test/bin/json2txt: Remove.
	* test/bin/reorder: Remove.
	* test/bin/stress.sh: Remove.
	* test/bin/test: Remove.
	* test/bin/test-clients: Remove.
	* test/lib/aspects.js: Remove.
	* test/lib/code.make: Remove.
	* test/lib/html.js: Remove.
	* test/lib/images/collapse.gif: Remove.
	* test/lib/images/expand.gif: Remove.
	* test/lib/json.js: Remove.
	* test/lib/languages.js: Remove.
	* test/lib/txt.js: Remove.
	* test/lib/util.js: Remove.

	test: Guile test runner for automake.
	* test/dzn/dzn.scm: Import from Gash.
	* test/dzn/local.mk (dist_%C%_scm_DATA): Add it.
	* test/bin/run.in: New file.
	* test/bin/reorder.in: New file.
	* configure.ac: Substitute them.
	* .gitignore: Ignore it.  Ignore automake test output.
	* test/all/local.mk: New file.
	* Makefile.am: Include it.
	(check-smoke, check-hello, check-regression): Remove.
	(install-data-local): Remove obsolete html test result
	installation.
	* guix/gnu/packages/dzn.scm (dzn): Remove regression output.
	test/all/wf_importPathErr/run: New file.
	* bin/dzn.in (%load-path, %load-compiled-path): Add @srcdir@.
	* test/all/blocking_binding/main.cc (connect_ports): Remove gratituous
	newline.
	* test/all/calling_context/main.cc (main): Likewise.
	* test/lib/build.c++.make: Update for new root.
	* test/lib/build.c++03.make: Likewise.
	* test/lib/build.c.make: Likewise.
	* test/lib/build.cs.make: Likewise.
	* test/lib/build.javascript.make: Likewise.
	* test/lib/build.scheme.make: Likewise.
	* README: Remove node, npm from requirements.
	* test/bin/reorder: Remove.

2020-01-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Remove seqdiag baseline from verify.
	After adding missing error links, run

	Run

	   for i in test/error/*/baseline/verify/*.stderr; do > $i; done

	* test/error/async_context3: Link from ../all/async_context3.
	* test/error/async_nondet: Likewise.
	* test/error/async_silent: Likewise.
	* test/error/compliance_out_async_inevitable: Likewise.
	* test/error/compliance_out_async_nondet: Likewise.
	* test/error/compliance_out_sync: Likewise.
	* test/error/compliance_provides_bool: Likewise.
	* test/error/compliance_provides_illegal4: Likewise.
	* test/error/compliance_provides_illegal5: Likewise.
	* test/error/compliance_provides_out: Likewise.
	* test/error/compliance_reply_bool: Likewise.
	* test/error/compliance_requires_illegal: Likewise.
	* test/error/compliance_system_provides_bool: Likewise.
	* test/error/hello.interface_namespace: Likewise.
	* test/error/hello_blocked_external: Likewise.
	* test/error/hello_interface_out_only: Likewise.
	* test/error/hello_single_to_multiple: Likewise.
	* test/error/hello_single_to_multiple: Likewise.
	* test/error/hello_synchronous_livelock: Likewise.
	* test/error/hello_synchronous_livelock: Likewise.
	* test/error/illegal_hello_external: Likewise.
	* test/error/illegal_provides: Likewise.
	* test/error/illegal_requires2: Likewise.
	* test/error/illegal_requires: Likewise.
	* test/error/illegal_requires_out: Likewise.
	* test/error/illegal_system_requires: Likewise.
	* test/error/livelock1: Likewise.
	* test/error/livelock_component2: Likewise.
	* test/error/missing_reply: Likewise.
	* test/error/queuefull_external: Likewise.
	* test/error/queuefull_external_sync: Likewise.
	* test/error/reply_modeling: Likewise.
	* test/error/second_reply: Likewise.
	* test/import/AlarmSystem: Remove broken link.
	* test/error/external_asynchronous_illegal: Likewise.

2020-01-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	dzn trace: Support negative integers.
	* dzn/commands/trace.scm (trace-parse): Support negative integers.

	dzn trace: Cater for traces of one event.
	* dzn/commands/trace.scm (trace->steps): Cater for traces of one event.

	dzn trace: Handle q in events.
	* dzn/commands/trace.scm (step->communication): Handle q in events.
	(communication->code): Likewise.

	dzn trace: Support C++ state vector.
	* dzn/commands/trace.scm (trace->steps): Update to use
	peg:handle-syntax-error.
	(trace-parse): Support C++ state voctor.

2020-01-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	dzn trace: Resurrect.
	* dzn/commands/trace.scm: New file.
	* dzn/commands/local.mk (dist_%C%_scm_DATA): Add it.

2020-01-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Add --enable-languages to configure.
	* configure.ac: Add --enable-languages.  Check for boost (c++03),
	nodejs (javascript), C99 (c) and mono (cs).
	Add --with-courage for unsupported languages: c, c++03, javascript and cs.
	* build-aux/ax_boost_base.m4: New file.
	* .gitignore: Allow it.

2020-01-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Make c++ dependency optional.
	* build-aux/std-gnu11.m4: New file.
	* .gitignore: Add it.
	* configure.ac: Use it toch check for c++11.
	(have_cxx11): New conditional.

2020-01-08  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	ast: Fix ast-equal? for <binary>.
	* dzn/ast.scm (ast:equal?): Remove .expression indirections.
	* test/all/equal_binary/equal_binary.dzn: Test it.
	* test/all/equal_binary/META: Skip build; interface only.
	* test/regression/: Add to suite.

2019-09-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	runtime: c++: Remove redundant pump.hh #include.
	* runtime/c++/runtime.cc: Remove dzn/pump.hh include.

2020-01-13  Rob Wieringa  <Rob.Wieringa@verum.com>

	goops: Remove double administration of var name.
	* dzn/goops.scm (<var>): Remove variable.name slot, as <var> inherits
	from <named>.  Update callers.
	* dzn/ast.scm (.variable): Update caller.
	* dzn/makreel.scm (tick-names-): Update caller.
	* dzn/parse/ast.scm (parse-tree->ast): Update caller.
	(make-async-refine-interface): Update caller.
	* dzn/wfc.scm (wfc): Update caller.

	code: Fix normalize/shadow interaction.
	* dzn/normalize.scm (rewrite-formals): Simplify: also rename trigger
	formals when missing in initial ast (illegal body).  Fix: only rename
	<var> that reference a <formal>.
	* test/all/hello_shadow/hello_shadow.dzn: Test it.
	* test/hello/: Add to hello suite.

2020-01-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Add release target.
	* configure.ac (have_guix): New conditional.
	* guix/gnu/packages/dzn.scm (dzn): Add hash update marker.
	* Makefile.am (update-hash): Use it in new target.
	(release): New target.  Document release process.

2019-11-12  Rob Wieringa  <Rob.Wieringa@verum.com>

	ast: Replace symbols by strings.
	* dzn/parse/ast.scm (parse-tree->ast): Do not translate strings into
	symbols.  Update users.
	* dzn/misc.scm (->string-join): Rename from ->symbol-join, work on
	strings.
	(symbol-capitalize, symbol-drop, symbol-split, symbol-upcase): Remove.
	* dzn/ast.scm: Likewise.
	* dzn/c++.scm: Likewise.
	* dzn/c++03.scm: Likewise.
	* dzn/c.scm: Likewise.
	* dzn/code.scm: Likewise.
	* dzn/command-line.scm: Likewise.
	* dzn/commands/code.scm: Likewise.
	* dzn/commands/parse.scm: Likewise.
	* dzn/commands/traces.scm: Likewise.
	* dzn/commands/verify.scm: Likewise.
	* dzn/cs.scm: Likewise.
	* dzn/dzn.scm: Likewise.
	* dzn/glue.scm: Likewise.
	* dzn/goops.scm: Likewise.
	* dzn/javascript.scm: Likewise.
	* dzn/makreel.scm: Likewise.
	* dzn/normalize.scm: Likewise.
	* dzn/parse/silence.scm: Likewise.
	* dzn/scheme.scm: Likewise.
	* dzn/serialize.scm: Likewise.
	* dzn/templates.scm: Likewise.
	* dzn/templates/cs.scm: Likewise.
	* dzn/templates/dzn.scm: Likewise.
	* dzn/wfc.scm: Likewise.
	* dzn/verify/pipeline.scm: Likewise.

2019-11-07  Rob Wieringa  <Rob.Wieringa@verum.com>

	goops: Restructure scope.name.
	* dzn/goops.scm (<scope.name>): Replace scope and name fields with
	ids.
	(.name.name): Remove.
	* dzn/ast.scm: Update users.
	* dzn/code.scm: Likewise.
	(code:name.name): New method.
	* dzn/dzn.scm: Likewise.
	* dzn/javascript.scm: Likewise.
	* dzn/makreel.scm: Likewise.
	* dzn/parse/ast.scm: Likewise.
	* dzn/serialize.scm: Likewise.
	* dzn/templates/c++.scm: Likewise.
	* dzn/templates/code.scm: Likewise.
	* dzn/templates/cs.scm: Likewise.
	* dzn/wfc.scm: Likewise.
	* dzn/templates/dzn/define-type@extern: Update to use #code:name.name.
	* dzn/templates/dzn/source@namespace: Likewise.
	* dzn/templates/javascript/enum-definer@enum: Likewise.
	* dzn/templates/javascript/global-enum-definer@enum: Likewise.

2020-01-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add `ROADMAP'.
	The ROADMAP file provides an overview of the progress towards future
	releases.

	* ROADMAP: New file.
	* Makefile.am (EXTRA_DIST): Add it.

2020-01-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	dzn: Pluggable commands; eradicate gdzn command.
	* bin/gdzn.in: Remove.
	* .gitignore: Remove it.
	* Makefile.am (bin_SCRIPTS): Remove it.
	* dzn/commands/cat.scm (parse-opts): Rename to `dzn' (from `gdzn').
	* dzn/commands/code.scm (parse-opts): Likewise.
	* dzn/commands/hello.scm (parse-opts): Likewise.
	* dzn/commands/ls.scm (parse-opts): Likewise.
	* dzn/commands/parse.scm (parse-opts): Likewise.
	* dzn/commands/traces.scm (parse-opts): Likewise.
	* dzn/commands/verify.scm (parse-opts): Likewise.
	* test/all/glue-dzn/run: Likewise.
	* dzn/shell-util.scm (directory-exists?): New function.
	* dzn/gdzn.scm (parse-opts): Use it to display all commands in load compiled
	path.  Update `gdzn' to `dzn'.
	* test/all/hello_multiple_provides/hello_multiple_provides.dzn: Likewise.

2019-11-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: Do not prepend %service-bindir.
	* dzn/gdzn.scm (run-command): Do not prepend %service-bindir.

2019-11-04  Rob Wieringa  <Rob.Wieringa@verum.com>

	ast: Make <signature> <locationed>.
	* dzn/goops.scm (<signature>): Derive from <locationed>.
	* dzn/parse/ast.scm (parse-tree->ast): Fill-in location for
	signatures.  Fixes parse errors.

2019-10-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	dzn: verify: Resurrect --json.
	* dzn/verify/pipeline.scm (assert-start): Resurrect --json.
	(assert-fail): Likewise.

2019-09-13  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: Add more checks.
	* dzn/ast.scm (ast:type): Simplify.
	(ast:lookup-n): New method overload.
	* dzn/wfc.scm: Add more checks.
	* test/all: Update baseline.
	* test/lib/aspects.js: Re-enable full parse test.

2019-10-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	ast: Fix imperative/declarative for compound.
	* dzn/ast.scm (ast:declarative?): Fix for compound.
	(ast:imperative?): Likewise.

2019-10-22  Johri van Eerd  <johri.van.eerd@verum.com>

	makreel: Fix function continuation after if statement.
	* dzn/makreel.scm (fix-function): New function.
	(makreel:then-continuation): Use it.
	(makreel:else-continuation): Likewise.

2019-10-30  Rob Wieringa  <Rob.Wieringa@verum.com>

	parse: Only add bool and void on top level.
	* dzn/parse/ast.scm (parse-tree->ast): Move adding of bool/void to ...
	(parse-root->ast): New toplevel function.
	* dzn/parse.scm (peg:parse-file): Call it.

2019-10-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	peg: Fix root location after parsing #file.
	* dzn/parse/ast.scm (parse-tree->ast): Fix root location after parsing #file.

2020-01-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	peg: Update from upstream.
	* dzn/peg/codegen.scm: Update from upstream.
	* dzn/peg/string-peg.scm: Likewise.
	* dzn/peg/using-parsers.scm: Likewise.

2019-10-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	peg: Fix syntax-error location after parsing #file.
	* dzn/parse/peg.scm (-do-file-command-): Add indirection to set
	file-name when encoutering #file.

2019-10-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	peg: Fixup incremental parser merge: syntax error reporting.
	* dzn/parse/peg.scm (peg:parse): Resurrect syntax-error reporting.

2020-01-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Remove lts package.
	* guix/gnu/packages/lts.scm: Remove.
	* guix/gnu/packages/dzn.scm (dzn): Remove dependency.

2020-03-02  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	traces: Move lts2traces into lts.scm; rewrite using lts data types.
	* dzn/lts.scm (<edge>): Rename from <aut-edge>.  Update users.
	(text->edge): Rename from text->aut-edge.  Update users.
	(make-edge): Rename from make-aut-edge.  Update users.
	(clone-edge): Rename from clone-aut-edge.  Update users.
	(lts->nodes): Add optional traces? parameter.
	(<transition>): New record.
	(generate-trace): Move from lts2traces.scm, rewrite using lts data types.
	(lts->traces): Likewise.
	* dzn/commands/traces.scm: Update to include lts.
	* dzn/commands/lts.scm (main): Update for *-aut rename.
	* test/dzn/lts.scm: Likewise.
	* dzn/lts2traces.scm: Remove.
	* dzn/local.mk (dist_%C%_scm_DATA): Remove it.

2019-10-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	dzn lts: Assimilate external lts tool.
	* configure.ac: Remove check for lts.
	* dzn/commands/lts.scm (dzn): Replace with command-line parsing of
	lts.
	* dzn/config.scm.in (%dzn, %version): New variable.
	(%lts): Remove.  Update users.
	* dzn/lts.scm: New file: library part of lts tool.
	* test/dzn/local.mk: New file.
	* test/dzn/automake.scm: New file, from Gash.
	* test/dzn/lts.scm: New file: test part of lts tool.
	* Makefile.am (UNIT_TESTS): Add it.

2019-09-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Use upstream mcrl2.
	* guix/gnu/packages/mcrl2.scm (mcrl2-1, mcrl2-1-minimal): Remove.
	(mcrl2-minimal-with-dparser): New variable, for mingw.
	(mcrl2-minimal-mingw): New variable.

	gdzn: verify: Avoid using stdin for tracepp.
	* dzn/verify/pipeline.scm (mcrl2:verify-component-deterministic-illegal-deadlock-livelock-refinement):
	Avoid using stdin for tracepp.  Allows using pristine upstream mCRL2.

2020-01-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Explicitly use guile-json-1.
	* guix/gnu/packages/dzn.scm (dzn): Explicitly use guile-json-1.

2020-01-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Update baseline.
	Run:

	    for i in wf_*; do cp $i/verify/* ../test/all/$i/baseline/verify/; done

	* test/all/wf_*: Update baseline.

2019-10-03  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: Fix async_async_prio.
	* test/all/async_async_prio/async_async_prio.dzn: Fix test.

2019-09-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: illegal_requires_out: Add missing baseline.
	* test/all/illegal_requires_out/baseline/verify/illegal_requires_out:
	New file
	* test/all/illegal_requires_out/baseline/verify/illegal_requires_out.stderr:
	New file.

2019-09-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: async: Fix trace comparisons.
	* test/all/async_context/main.scm: Trim trace.
	* test/all/async_order/main.scm: Likewise.
	* test/all/async_order2/main.scm: Likewise.
	* test/all/async_prio/main.scm: Likewise.
	* test/all/async_prio2/main.scm: Likewise.
	* test/all/async_simple/main.scm: Likewise.
	* test/all/async_synccb/main.scm: Likewise.
	* test/all/async_synccb2/main.scm: Likewise.

	test: state_deadlock: Skip traces, verify.
	* test/all/state_deadlock/META: Skip traces, verify.

	test: label_instance_mismatch: Skip verify, traces.
	* test/all/label_instance_mismatch/META: Skip verify, traces.

	test: dollars, shell: Only run c++.
	* test/all/dollars/META: Only run c++.
	* test/all/shell/META: Only run c++.

	test: illegal_requires_out: No execute.
	* test/all/illegal_requires_out/META: New file.

	test: illegal_system_requires: No execute.
	* test/all/illegal_system_requires/META: Skip execute.

	test: system_hello: Skip verify.
	* test/all/system_hello/META: Skip verify.

2019-09-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: makreel: Fix hello_namespace_shadow, inner.space.
	* dzn/ast.scm (ast:empty-namespace?): Export.
	* dzn/makreel.scm (tick-names-): Use it to not tick `/'.  Fixes
	hello_namespace_shadow, inner.space.

2019-10-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: scheme: runtime: Disable rank debugging.
	* runtime/scheme/dzn/runtime.scm (dzn:rank): Disable rank debugging.

2019-09-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: Do not propagate --model to parse; fixes generated main.
	* dzn/commands/code.scm (main): Do not propagate --model to parse.
	* dzn/commands/parse.scm (parse): Use options rather than command-line:get.

	build: Install test html reports.
	* Makefile.am (install-data-local): Install test html reports.
	* guix/gnu/packages/dzn.scm (dzn): Add `regression' output.

	test: Use all CPUs.
	* Makefile.am (CPUS): New variable.
	(check-hello, check-regression): Use it.

2019-09-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Support make-check.
	* Makefile.am
	* build-aux/pre-inst-env.in
	* configure.ac
	* guix/gnu/packages/dzn.scm
	* test/bin/code2fdr
	* test/lib/aspects.js
	* test/lib/languages.js
	* Makefile.am (check-smoke, check-hello, check-regression): New target.
	(check-local): Depend on them.

2019-09-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: scheme: Fix issue with not and field-test.
	* dzn/templates/scheme/subexpression@expression: New file.
	* dzn/templates/scheme/expression@not: Use it.
	* dzn/templates/scheme/left@not: Remove.
	* dzn/templates/scheme/right@not: Remove.

2019-09-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Drop python dependency.
	* configure.ac: Drop python check.
	* guix/gnu/packages/dzn.scm: Drop python dependency.
	* Makefile.am (do_subst): Drop python subst.
	* bin/lts2traces.in: Remove.

2019-09-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: Initial lts2traces.
	TODO: review and remove python comments from lts2traces.

	* dzn/commands/lts2traces.scm (dzn): New file.
	* dzn/commands/traces.scm (model->traces): Use it.
	* dzn/lts2traces.scm: New file.
	* dzn/local.mk: Add them.

2019-09-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	gash: Show exec* full error message.
	* gash/pipe.scm (exec*): Show full error message.

2019-09-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	runtime c++: Have trace_qin print <q> at copmonent port.
	* runtime/c++/runtime.cc: Fixes hello_flush.

2019-09-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	pack: Initial binary distribution.
	* HACKING: Add some documentation.
	* guix/gnu/packages/dzn.scm (dzn): Add lts, m4-cw, mcrl2, sed.
	* Makefile.am (dist_man_MANS): Add code, lts2traces.

2019-09-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Wrap dzn.
	* guix/gnu/packages/dzn.scm (dzn): Wrap dzn.

2019-09-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: Debugity support for dzn, and relocation.
	* dzn/command-line.scm (gdzn:debugity): Support dzn, and relocation.

2020-02-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Reproducible tarball.
	* Makefile.am (dist-hook): Add reproducible timestamp to tarball.
	(am__tar): Use it instead of EPOCH.  Add mode.

2019-09-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Move scheme Makefile.am snippets into %D%/local.mk.
	* dzn/parse/local.mk: New file.
	* dzn/peg/local.mk: New file.
	* dzn/local.mk: New file.
	* dzn/commands/local.mk: New file.
	* Makefile.am: Update.

2019-09-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	debian: Initial.
	TODO: tarball watch location.

	* debian/changelog: New file.
	* debian/control: New file.
	* debian/copyright: New file.
	* debian/dzn.lintian-overrides: New file.
	* debian/rules: New file.
	* debian/source/format: New file.
	* debian/watch: New file.

2019-09-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Add manual pages.
	* Makefile.am (dzn.1, gdzn.1, dzn-hello.1, dzn-parse.1): New target.
	* guix/gnu/packages/dzn.scm (dzn): Depend on help2man.
	* .gitignore: Update.

2019-09-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Split-off package description.
	* guix/gnu/packages/dzn.scm: New file.
	* guix.scm: Use it.
	(dzn): Remove.
	(dzn.git): New variable.

2020-02-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Relicense dzn-runtime under lesser gpl3+.
	* COPYING.LESSER: New file.
	* README: Mention dzn-runtime and its license.
	* runtime/: Relicense dzn-runtime under the GNU Lesser General Public
	Licence 3.0 or later.

2019-08-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Add autotools.
	* .gitignore: Update.
	* guix.scm: Update.
	* AUTHORS: New file.
	* COPYING: New file.
	* ChangeLog: New file.
	* HACKING: New file.
	* INSTALL: New file.
	* Makefile.am: New file.
	* NEWS: Update.
	* README: New file.
	* autogen.sh: New file.
	* build-aux/config.rpath: New file.
	* build-aux/git-version-gen: New file.
	* build-aux/gitlog-to-changelog: New file.
	* build-aux/pre-inst-env.in: New file.
	* configure.ac: New file.
	* dzn/templates/local.mk: New file.
	* gash/local.mk: New file.
	* runtime/local.mk: New file.
	* dzn/verify/local.mk: New file.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	Rename from Gaiag to Dezyne.
	* dzn/ast.scm: Update header, renaming from Gaiag to Dezyne.
	* dzn/c++.scm: Likewise.
	* dzn/c.scm: Likewise.
	* dzn/code.scm: Likewise.
	* dzn/dzn.scm: Likewise.
	* dzn/fifo.scm: Likewise.
	* dzn/goops.scm: Likewise.
	* dzn/indent.scm: Likewise.
	* dzn/javascript.scm: Likewise.
	* dzn/json2scm.scm: Likewise.
	* dzn/misc.scm: Likewise.
	* dzn/parse.scm: Likewise.
	* dzn/scheme.scm: Likewise.
	* dzn/templates/c++.scm: Likewise.
	* dzn/templates/code.scm: Likewise.
	* dzn/templates/dzn.scm: Likewise.
	* dzn/wfc.scm: Likewise.

2019-11-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Remove generate baseline.
	Run

	    git rm -r test/all/*/baseline/generate

	* test/all: Remove generate baseline.

2019-11-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Remove fdr2 baseline.
	Run

	    git rm -r test/all/*/baseline/fdr2

	* test/all: Remove fdr2 baseline.

2020-01-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Remove trailing whitespace.
	Run

	   sed -i 's, *$,,' $(git ls-files '*.dzn' -- test)
	   sed -i 's, *$,,' $(git ls-files '*.py' -- test)
	   sed -i 's, *$,,' $(git ls-files makefile -- test)

	* test/: Remove trailing whitespace.

2020-01-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Remove step.
	* test/step/: Remove.
	* test/all/: Remove corresponding tests.

	test: Remove unused tests and categories.
	* test/all/: Remove unused tests.
	* test/livelock: Remove category.
	* test/scheme: Remove category.
	* test/shadow: Remove category.
	* test/tode: Remove category.
	* test/work: Remove category.

	test: Remove BallSorterNetwork.
	* test/all/BallSorterNetwork: Remove.

	test: Remove bugs.
	* test/bugs: Remove.

	test: Remove examples.
	* test/examples: Remove.
	* test/all: Remove corresponding tests.

	test: Remove old-regression.
	* test/old-regression: Remove.
	* test/all: Remove corresponding tests.

	test: Remove NUTS.
	* test/NUTS: Remove.
	* test/all: Remove corresponding tests.

2019-05-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: Move to toplevel.
	Also, remove traling whitespace by running

	    sed -i 's, *$,,' $(git ls-files '*.scm')

	* gaiag: Move from gaiag/gaiag.
	* runtime: Move from gaiag/runtime.
	* scmcrl2: Move from gaiag/scmcrl2.

2019-12-18  Rob Wieringa  <Rob.Wieringa@verum.com>

	ast: select outermost system by default

2019-12-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: illegal_system_requires: use canonical naming.

	test: illegal_requires_out: use canonical naming.

	test: compliance_requires_illegal: use canonical naming.

	test: hello_foreign_path; fix test for code.

	test: hello_foreign: fix trace.

	test: step: META

	runtime: rank: support foreign.

	step: cleanup.

	step: blocking.

	test: async step

	step: async.

	step: add implicit illegals.

	display: skip location.

	step: split-off state, step-serialize.

	step: runtime.

	test: remove component traces.

	string

	test: aspects: Add step.

	gdzn step: new command.

	test: Add step semantic [system] test symlinks in test/regression.

	test: Add step semantic [system] tests.

	test: vermeubel Camera + InitialCamera, SimpleCamera etc.

	test: add BallSortNetwork.

	test: parser: skip state, step in META.

	test: remove table, view from META.

	test: add some hello-component traces ???

	gdzn parse: print scm2json'able ast, try:
	    ./pre-inst-env gdzn parse -o- --locations test/all/hello/hello.dzn | ./pre-inst-env scm2json

	javascript: runtime fixlet.

	code: c++: step-fubar? REVIEWME

2019-12-18  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: fix exception in aspects.js

	handle 'no such file' in import, and on top leval

	test/all/dollars: fix failing parse test

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	wfc: fix binary expression type check

	peg: line and columnn both set to 1-based

	wfc: add check for undefined; reword some error messages

	fix location for #file and #imported

	wfc: first check for undefined type

	parser: accept any string in #file and #imported

	peg: refactor line-column and parse catching

	peg: FIXME: copy syntax error catch from parser to grammar

	peg: handle recursive import; nonterm if to if-statement (clash!)

	peg: optimize line-column; TODO: use 'skip?' parameter

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	foo

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	peg: fixes in pretty-print, interface-call, comment skipping

	peg:rewrite lookup

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	verify: bugfix for bool == paul.SUGAR in guard_expressions.

	peg: parse #file, #imported. WIP

	peg: grok parsing from `-'.

	peg: process comment.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: peg-comment add comment to parse tree

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: do not let language/c known propagate to all aspects.

	Revert "test: only build c++,scheme REMOVEME"
	This reverts commit d26c40bcc4d0b90c56c3cb91e979e8b67c1017b3.

	test: remove data_shadow_port REVERTME

	test: only build c++,scheme REMOVEME

	scheme: new language.

	test: async_rank, async_ranking: re-enable traces and thus execute.

	test: enable async_sync_prio/async_async_prio.

	Revert "test: move some old-regression to regression FIXME."
	This reverts commit 31c427fcd730716279f00c387716dc421d3810ca.

	test: move some old-regression to regression FIXME.

	test: code, makreel: hello_int.

	test/wfc: reply type

	peg: fix <group>.

	wfc: blocking reply missing_prefix

	test: componentInDollars: use known instead of skip for languages FIXME?

	c: implicit_illegal_requires

	c: implicit_illegal

	c: implicit_on

	c: Injected WIP

	peg: negative int: FIXUP: b708ead8 peg: refactor string to number

	async: cs/js cleanup WIP.

	c: Dataparam WIP

	test: hello.interface_namespace.

	test: fix alpha_event (rename from alpha_bug).

	wfc: redeclared identifier.

	wfc: missing function return.

	wfc: binding external.

	wfc: async_silent.

	peg: mark modeling silence.

	peg: mark recursive functions.

	Revert "disable c, cs."
	This reverts commit 38e02ecc08106c9e097fe7b18b16922c70e8ffba.

	disable c, cs.

	Revert "test: Add step semantic [system] tests."
	This reverts commit a814dbf0cf4e13d62e04b9baa6584429fac37777.

	Revert "test: Add step semantic [system] test symlinks in test/regression."
	This reverts commit 9c8ac91f036d15eb27481758415100f3c7cdd404.

	gaiag: eradicate deprecated om, compare, util.

	test: c: fix empty_dollars.

	test: c: blocking/async META

	code: cleanups.

	c: fix hello_system

	c <->

	c: <binding> -> <end-point>, <bind> -> <binding>.

	c: remove CD.

2019-11-29  Filip Toman  <filip.toman@verum.com>

	c: New language.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: empty_dollars META.

	test: Add step semantic [system] test symlinks in test/regression.

	test: Add step semantic [system] tests.

	code: drop model2file feature.

	test: aspects: remove table, view.

	gaiag: remove norm, norm-event, norm-state, table-event, table-state.

	wfc: implement for PEG, update baseline. WIP

	test: update parse baseline with PEG errors.

	peg: verify: cater for functions without void return.

	peg: import.

	gaiag: resolve peg namespacing.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: add namespaces

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn parse: switch to PEG. WIP

	test: verify: update non-seqdiag traces.

	test: verify: remove seqdiag's `illegal' at end of trace.

	test: verify: prepend interface name to trace.

	gdzn verify: output plain trace, do not run seqdiag.

	code: javascript: Add browser support.

	verify: proc confusion -- fixes hello_function.

	verify: do not filter out interfaces: they might contain types needed elsewhere

	ast: prepare for step, end-point, code: <- pijltjes ->.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	parser: remove behaviour from imported components

	c++ parser: add IMPORTED feature

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: alpha_bug

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: stress_comment.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: empty_dollars.

	peg: fix formal-binding

	peg: allow reply()

	peg: allow illegal triggers to have optional parameters.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	peg: do not exit after parsing.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: refactor: parameterize locations, trace, skip parsing

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	peg: install wrap-parser-for-users patch into codegen.peg.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: import files in the path of the main dzn file

	peg: refactor string to number

	peg/makreel: add missing function return normalization WIP: REVIEWME

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	peg: simplify parser and matcher, resolving.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	peg: extend with # expect, parse and goopify test/all/*/*.dzn

	peg: succesfully parse and goopify all test models

	peg: add skip parser

	peg: succesfully parse test/all/*/*.dzn

	peg: dzn.async, blocking-binding

	peg: parse all of LegoBallSorter

	peg: sprinkle dzn grammar with #

	peg: #

	grammar: add expect proof of concept

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: os: postgres-service: use custom postgres-config.

	release: v2.9.1-40-gf183955f1 18ad0z8ja4y2b7l80nyz8jdfxi6mamcdyc244r5y6jn3nxhs07cz
	guix version:1.0.0-1.326dcbf

	README: Update release and deploy.

	postgres/shepherd.

	guix: use (dezyne pack).

	README

	gdzn release: Grok release commit.

	gdzn:debugity: return level.

	release: v2.9.1-22-gbb0da784b 1qmzkf8nkw9ls0p9ciciiwlxp3h38m5fd7i8g3dqa2rgbpaxws4y
	guix version:1.0.1-3.4a54ed7

	wip: remove test.scm

	guix: channel development pack.

	release: v2.9.1-18-g1f4835f7e
	guix version:1.0.1-1.8204295

	guix: channels: packaging.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	simplify starting of daemon and server:
	   ./pre-inst-env dzn-server -d[d...]
	   ./pre-inst-env dzn start -d[d...]

	or

	   M-x dzn-setup-devel

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: channels.

	guix: Cleanup guix/, guix.scm.

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	guix: Update to 1.0.1.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: resurrect dezyne-regression-test.

	guix: build local tree only, remove 2.4, 2.8.

	.dir-locals.el: allow TAB in makefile-mode.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	tests: fix NOLOG issue

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	test: fix spurious output from child processes

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	templates: disable comment tracing

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	compile-all: avoid bug #33216.
	See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=33216

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	NEWS: enterprise pre-release

	NEWS: enterprise pre-release

	NEWS: enterprise pre-release

	NEWS: enterprise pre-release

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	7547: c++/c++03/cs pass async_flush2 and refactor

	NEWS: remove dzn-explore

	NEWS: 2.9.1

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	NEWS: Some test1 enterprise instructions.

	NEWS: WIP.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	VERSION: bump to development

	VERSION: bump to 2.9.1

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: improve memory usages by using aut iso lts; improve error msg when out-of-memory or internal error

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	makreel: fix issue 7547, flush provides port when queue_empty in semantics_async

	c++: issue 7529: allow port annotated replies outside blocking context.

	c++: pump: issue 7527: use Args... template parameter in lambda type

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: remove stale symlinks.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	VERSION: bump to 2.9.0

	c++/cs: fix shell & injected

	cs: new language.

	c++/c++03: fix async & formals-type

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	code: fix javascript

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: glue-dzn fixed

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	templates: debugability with gdzn -d

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: hello_system, remove model from META

	test: remove broken symlinks + AlarmBlock

	code: file2file: fix hello_foreign_file

	makreel: fixes reply expressions (boolnnot)

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	server/dzn: include daemon in dzn client tarball.

	build: pre-inst-env.in: remove empty dir in GUIX_PACKAGE_PATH.

	test: robustify html.details generation against crashing test.

	VERSION: bump to 12.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	NEWS

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	glue: add reset of api ptrs in dtor

	glue: replace model name by interface name if related to provides port

	configure: make handling of go-js more robust

	glue: add missing ',' between parameters of out-event

	glue: fix: perform processCBs on a flush (iso when out-event is posted in queue)

	test: glue-dzn: add api-call direct on a callback

	test: avoid changing environment of calling context (make deep copy)

	fix several issues for generated main

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	goops/resolve: fix modeling (n)ast-iness

	c++: foreign: add empty set_state member function

	c++: fix 7509 blocking combined with field-test

	c++: fix 7518 duplicated injected instances

	c++: fix 7505: code --shell=namespace.system

	c++: hello_alpha

	configure: toggle executable bit on services/scripts/convert.sh

	verify: fix async_blocking2

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	release/guile-mingw.sh: WIP

	release-commit: WIP.

	test1: run dezyne-service main.js -d.

	release-commit: WIP.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	converter: glue patch

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: asd-converter-0.1.5: Add suffix to name.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	guix add converter 0.1.6

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: pack: include dezyne-regression-test.

	guix: use postgres-9.6.

	typo

	dezyne os: switch to 0.15.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	guix patch

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	os declaration for both guix 0.13 and 0.15

	WIP: test guix system vm from local source tree

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: regression content refactor. WIP

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Import dezyne from guix-0.13 fork. WIP
	Guix packages should now build with the old guix-0.13

	    GUIX_PACKAGE_PATH=guix guix build dezyne-regression-test
	    ./pre-inst-env guix build dezyne-services@2.8.0
	    ./pre-inst-env guix build dezyne-pack

	as well as with guix-master (upcoming 0.15)

	    GUIX_PACKAGE_PATH=guix ~/src/guix-master/pre-inst-env guix build dezyne-pack

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: cleanup

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: add aspect and version filter for META.

	test: javascript: resurrect foreign support.

	test: c++/c++03: build fixes.

	test: pretty status, resurrect exit failure.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: support single-test in html

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	test: toggle versions in html view

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: header

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	test: incremental summary of test run

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: async: move blocking inside #if DZN_PUMP_HAVE_BLOCKING.

	test: glue, timeout.

	test: c++/c++03 per version build fix.

	test: glue-dzn: per version development.

	test: use DZN cat instead of ln; fixes 2.4.1 cs.

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	test: split table and details, suppress output from test by default

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: one test for all versions in 'dzn query'; one html page showing the results (using vue)

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: use vue

	test: added 'Not Under Test Set'

	test: add test folder support

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	PEG: foreign fixup.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	PEG parser + locations in goops

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: code: dzn: use .port.name.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	make parse-opts memoized

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	makreel: fix preformance degrade by reorder fix

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: remove extra in event for missing reply: breaks ifreply (trace too short, integration)

	gdzn: Add lts command to generate readable LTS from .dzn files

	guix: mcrl2-git instead of mcrl2-svn, also use Release for -O3

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	namespace: solve shadowing + c++ codegen

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	revert VERSION back to development.

	test: hello_namespace_shadow: several namespace problems.

	code: javascript: foreign ressurrect fixup.

	traces, verification: use m4-cw for new guix packaging.

	gdzn: use exec for --version.

	test: javascript: resurrect foreign support.

	GOJS hack 2.

	GOJS hack

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	makreel: fix blocking sync out event

	eclipse: workaround LegoBallSorter cat

	c++*: fix foreign includes

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	makreel: tick-names: do not tick types.

	release: 2.8.0

	NEWS: Release notes for 2.8.0.

	test: hello_interface_namepace: rename from ihello.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: fix interface model name

	makreel: hello_reorder fix

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	%version: c++: remove version check.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	%version in code, static_assert #if DZN_VERSION_ASSERT.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	silent: handle recursive functions

	add silent_optional to regression

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	glue: for callbacks, use c++ type for external type iso of dzn type name

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	NEWS: WIP

	code: javascript: global-enum-definer, move from c++ to code FIXUP

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	glue: remove first char (I) from interface

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: update hello METAs.

	test: hello link fixups

	code: c++: remove global enums from interface definition.

	Revert "guix: update mcrl2 package after transition to git"
	This reverts commit f3b1a89e75ca43d2b88490f0618aee888bf2a923.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	makreel: fix assignment and local variable scope

	WIP: scoped removal

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	guix: update mcrl2 package after transition to git

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	glue: derive implemented interface name from provides port iso component

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	global enum in namespace

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	namespace: add hello test (still failing)

	simple namespace fix

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	makreel: silent modeling events

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	add silent to modeling events

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: remove FIXME from --version, now working.

	test: add hello space; some support.

	gdzn: use gash instead of gulp-pipe, fixes spaces in file names.

	test: do not assume /bin/sh

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	fixup foreign fixes

	make pump use conditional

	add foreign test and fixes

	fix topological sort

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Remove /tmp loophole from scripts.

	gdzn: support <command> --version;.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	makreel: cache interface definitions

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	hello_foreign: new test, resurrect javascript.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	fix thread safe shell includes

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	remove all csp code (and animate)

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: update ./configure for lts and asd.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++*: file2file

	c++*: fix BlockedSystem1 and async_blocking

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: perform makreel code generation just-in-time

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: set javascript flush to KNOWN

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	glue: fix one-off for converting enums DZN -> ASD

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	test: Add hello_clash_port_variable to hello and regression

	makreel: fix for shadowing (rename projection functions)

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	execute: async_multiple_provides: set to known

	c++*: blocking async fix

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	FU: interface dependency

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	makreel: use model-name.makreel, faster interface feedback.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: fixed solved in META

	test: fix META for failing tests

	test:javascript async is known

	javascript: add async template

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++*: fix async

	c++*: fix async

	c++: flush

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: add META to table; fix all solved in META

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	makreel: flush.

	fix glue/foreign; clean up test dirs

	makreel: async

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: restrict models to have only 1 witness for failing check

	verify: fix nondet issue by using dpweak-sim for ltsconvert

	test: clean up test h

	verify: first version of combining several checks into one

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: dzn-glue: use gash, print diagnostics.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	glue code fix

	code: handle (foreign) component with requires ports only

	fix table views w.r.t. import

	test: remove dangling links

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	makreel: fix function continuations

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: set some known issues to 'known' in META

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: add test for tail call followed by non-tail call

	test: make tests deterministic

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: rm some traces and update META in test/hello

	test hello: remove superfluous traces

	add hello_flush test

	rewrite semantics_requires with port parameter

	prevent name clashes in generated makreel

	makreel: prevent name clash for model names 'Illegal' etc

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: use triplet normalize.

	test: update/missing METAs; set timeout 30 on dzn.

	code: void data, void return.

	test: regression: re-enable GarageDoorControlErr, verify.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	fix view crashes

	resolve: make type? safe for invalid type.name

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	remove cruft.

	makreel: m4-changeword in pipeline.

	Revert "makreel: block foo."
	This reverts commit 3a3724f60adae362b43825aac8031cd091f091fa.

	test: META update for 0-trace tests.

	test: traces: fail if no traces generated or present.

	traces: parse plain `return' from interface.

	makreel: block foo.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	fix illegal in traces

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	traces.scm/traces.py fixes.

	test: remove cruft.

	test: hello_enum_function, hello_global_enum: fix naming.

	test: oops, enable verify by default.

	test: SKIP GarageDoorControlErr, verify.

	traces: WIP

	WIPZOR

	gdzn: traces: resurrect. WIP: traces.py: use --provided-in

	remove dead code: mcrl2, end2endtestscripts, flattener, lts.

	makreel: remove speck and cruft.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	makreel: fresh implementation.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	revert VERSION to development

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: code, dzn: create output directory; fixes -o, fixes javascript.

	gdzn: support <command> --version.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	release 2.7.1

	fix c++-msvc11 code generation

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	mcrl2: multiple provides

	mcrl2: more straightforward semantics process

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	Revert "code: new normalize WIP"
	This reverts commit c4a272f1e62aa8fd1388ee4c5372662b1b3f3322.

	normalize: add triples:fix-empty-interface

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mcrl2: remove dead code.

	code: new normalize WIP

	mcrl2: use new normalize.

	normalize: fresh normalization.

	test: code2fdr: use /bin/sh.

	test: add hello_implicit_illegal.

	norm: rename add-illegals to add-illegals-and-otherwise.

	templates: grok <grammar>@<type>.

	test: hello: add optional and multiple provides tests.

	ast: add parent-not, tree-collect, tree-collect-shallow.

	ast: add ast:past overload with stop predicate.

	ast: ast:provides?, ast:requires? return port rather than #t.

	goops: allow setting name of <bool>, <void>.

	mcrl2: tick-names after resolve.

	goops: parent: fix order of parameters, do:
	    sed -ri -e 's,\(parent (<[^>]+>) ([^)]+),(parent \2 \1,g' -e 's,\(cut parent (<[^>]+>) ([^)]+),(cut parent \2 \1,g' $(find gaiag -type f -a -name '*.scm')

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	Determinism verification with 'lts' tool

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	resolve: all resolving lazy: resolve is identity

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	goops: lazy <event>.

	goops: lazy .type: <argument>, <enum-field>.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	goops: lazy .type in variable, signature, enum-literal, and formal.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: verify/mcrl2: flag any stderr output on verify as failure.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: fix function references

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	goops: use define-ast, remove wrap.

	goops: update #: callers.

	goops: remove @.

	test: verify/mcrl2: upon failure, always show stderr.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	first version of introdcution of modeling channel (and remove all optional_xxx blaat)

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	version: bump back to development.

	version: bump to 2.7.0.

	NEWS: release update.

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: small fixup and tau->internal

	mcrl2: Remove br: Bool and encode in replyUnion

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	mcrl2 fix: function references for 'identical' continuations

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	code: generate foreign skeletons.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	c++: remove FIXME.

	verification: upon error/exit, always print stderr.

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	Test empty else in function

	Test: nested function call

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	add skip in functions

	fix tables next state in case of if-then-else

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	Fix tables

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	mcrl2: add missing template

	Revert "WIP: norm in mcrl2"
	This reverts commit 32ee823c16e3fd4990cea31dde01fad94a1b2ea3.

	WIP: norm in mcrl2

	resurrect pretty-printing in mcrl2 output when -d is used

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	Add category for determinism test models

	Re-enable exit on lts non-zero exit

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	wip: fubar2

	wip: fubar

	integration: verification/lts: ignore exit 1.

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	mcrl2: introduce lts tool

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: SynchronousLivelockExternal: META: known => external delay

	c++03: fix capture template

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: fix dependencies

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	mcrl2: update baseline for makreel update

	mcrl2: baseline fixes

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: dollar statement fix

	c++: foreign: fix

	c++*: Camera fix

	fixup fix the fixes

	mcrl2: importPath: META: is also multiple provides

	mcrl2: operator # formatting

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	fix the fixes.

	compile-template: also read from source tree.

	templates: read grammar at compile time.

	template dir should point to compile time location.

	dzn display

	gdzn table/html/dzn dump to file.

	hes

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	mcrl2: restore completeness check on interface as part of deadlock check

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: remove incorrect override, allow upcast to <model>

	mcrl2: integration: verification: remove --quiet

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	templates: compile time expansion.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gdzn: verify: properly propagate exit status and print all pipeline errors on stderr

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	fix imported

	fix mcrl2 data param in function for variable parameters

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	mcrl2: clever encoding of optionals

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: cleanup defined actions for component model

	mcrl2: update namespace_assert stderr baseline

	mcrl2: add baselines

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: integration: fix namespace

	traces: fix peg for namespace

	gash: pipe: -d adds tees to the entire pipeline including the end.

	gash: non-interactive job handling fix

	gash: pipe/job: add debugging

	mcrl2: update baseline

	gash: job: refactor

	gash: pipe: bugfix

	gash: pipe: implement pipeline->string in terms of pipeline+

	mcrl2: update baseline with livelock repitition

	gash: remove redundant tcsetpgrp and catches

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mcrl2: remove shell-string-quotes from inits.

	integration: compliance write trace to stdout; needs new guix mcrl2 update.

	traces: use gash.

	integration: wait for job. fixes fork: Resource temporarily unavailable.

	gash: more node/notty spawn...FIXME: add test iso catch.

	gash fix for non-ttys.

	integration: verify: gash pipeline.

	gash: job.scm, pipe.scm update.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	fix system verification when global types are present

	differentiate ast:model* and ast:global*

	fix mcrl2 data param in function

	fix dollar statement in verify

	evaluate: handle #t and #f

	fix function continuation

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: update baseline

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	traces peg parser: cope with global'

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: livelock: concat trace and loop; update baseline.

	mcrl2: update baseline

	mcrl2: integration + baseline

	mcrl2: update baseline

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	inner_space has multiple provides: skip

	fix non-compound behaviour statement

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: update baseline.

	mcrl2: integration: fix AlarmDeterministicFail

	FAILING: update

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: updated baselines

	mcrl2: missing templates for variable declaration by call

	mcrl2: fix queue size and add queue_full error in trace

	mcrl2: variable by call fix and baseline update

	mcrl2: fix variables in function continuation

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	table more fix evaluation

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: baseline updates in regression

	mcrl2: update test/mcrl2 baselines and fix root-add-voidreply

	mcrl2: inevitable-unconstrained oopsie

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	tables: fix expression evaluation

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: speed up interface process without optionals

	mcrl2: update FAILING

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: out of range check fix.

	mcrl2: add missing template.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	integration: verify interface asserts one by one.

	mcrl2: refactor make-trace-file.

	test: strict diffing for mcrl2's stderr.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: remove blank lines; add wheel; add timer in view

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	table fix

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: InterfaceLivelock: update baseline

	mcrl2: split EventNotHandled with double error into two

	mcrl2: use seqdiag trace for compliance

	test: split ActionIllegal with double error into separate models.

	scmcrl2 traces: replace regex with peg.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: strict diffing for mcrl2's stdout: 60 tests fail.

	Revert "mcrl2: performance"
	This reverts commit 9edcf646291648ebedf49614ba9705baaea33cb0.

	mcrl2: performance

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: fix issue with double results

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mcrl2: uniformise traces.py:event_convert and traces.scm:rename-lts-actions.

	mcrl: verify: traces.scm: remove range_error, dillegal.

	gdzn: print compliance trace from seqdiag.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	Wellformedness: add checks on reply value

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	integration: more careful still with regexps; fixes scm crash with -q 3 Handle.

	integration: verify: more whitespace.

	integration: seqdiag: do not basename.

	integration: add verification error message to gdzn.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	integration: don't buffer verification results

	mcrl2: fix silent_fail baseline

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	dzn-glue: even more love for container.

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	tables: fixes

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	2x oops.

	gdzn: traces: fix -m for namespaces.

	tests: even more container love for dzn-glue.

	cleanup paul's whitespace.

	verify: handle: The acceptance of the left process is empty.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	views: reanble filling of verification view

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	Compliance failure multiple witnesses: spec + impl for sequence diagram

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	verify: integration: fix tmpdir, use --csp for csp, resurrect.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	fix-empty-interface-behaviour

	test: emptyBehaviour: change mcrl2 baseline

	Revert "add voidreply for modeling and required out events"
	This reverts commit b3b982f7078538a916066f26e3c267f12235d9ae.

	add voidreply for modeling and required out events

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	FAILING: update.

	test: dzn-glue: fix running in container.

	animate: fix for symbol(instead of string)-producing templates.

	animate: another fix for *unspecified*.

	Revert "test: always enable illegal for traces"
	This reverts commit 6d41a76264d5b14d6e9690a8c0889406ed1f9509.

	test: baseline external_asynchronous* updates.

	x:pand: enable animate.

	animate: #:x-process-parameters.

	remove .variable debug printing.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	fix broken .variable in tables, due to lazy variable resolution

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	animate: more spaces.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	mclr2: fix issues with hiding of parameter

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	remove debugging.

	x:pand: fix *unspecified*, enable animate.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: mcrl2: multiple provides ports is know to fail.

	test: Camera: add explicit trace to allow execute.

	test: mcrl2: suppress model parameter.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	x:pand: default to peg.

	mcrl2: use -dd for template debugging, -d for dzn comments.

	animate: add spaces to templates using sed:
	sed -i -re 's@([^(); ])#@\1 #@g' -e "s@([-.:])(name|type|port|process|scope)('})@\1\2 \3@g" -e 's@ # @ ## @g' $(find . -type f)

	gdzn: xpand: make peg/animate switchable, default to animate.

	gdzn: verify: transparently display results, do not accumulate until done.

	oops: remove ./verify.mcrl2: fixup 3ef459bc test: mcrl2: add parse baseline symlink.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	FAILING: update

	test: shell: meta: set mcrl2/traces to known

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	traces: uses weak-trace reduction iso trace

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	fix broken .variable in tables, due to lazy variable resolution

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++03: runtime: container: allow illegal in trace.

	test: verify: meta: disable code.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	traces: removes taus

	mclr2: reenable optional after each disable

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: fix broken links, re-add verify to regression

	test: always enable illegal for traces

	traces: fix -i

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: baseline updates.

	traces.scm, trace.py: fixup.

	test: mclr2,traces: set async,blocking to KNOWN.

	test: execute: set timeout to 2s.

	c++: container: sleep for DZN_CONTAINER_SLEEP ms.

	Revert "mcrl2: performance"
	This reverts commit 78e59a718d5512acb55f9dfd113d5d8eb4006689.

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: add --queue option

	mcrl2: add missing template

	mcrl2: fix dillegal flags and add some baselines

	mcrl2: improve replies

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	EXPERIMENTAL: set dillegals to true

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: add --cached and configurable cppflag

	mcrl2: performance

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	traces.scm, trace.py: update return in rename-lts-actions/event_convert.

	resolve: remove model parameter, resolve-top-model, resolve-model.

	dzn/c++: remove variable-expression.

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: update FAILING

	mcrl2: some more range error fixes

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mcrl2: remove assign-expression, variable-expression and 35 templates.

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: FIX missing internal to allow optionals on req port

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: remove baseline

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: reply fixes

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	trace: fix 'niet in de haak' issue for traces

	mcrl2: fix translation of non-deterministic traces; add additional test for this

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: fixes function references && repair reply on modeling event

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	add expression templates

	resolve: remove use of locals; goops: make xxx@ accessors local to goops

	test: fix comonent name

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: fix unused function references generation

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mcrl2: integrate lps2lts --nondeterminism (update guix to: mcrl2@2017.1.15172)

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: add-illegal fixes.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test html: sort and align

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	rcesolve: fix pijltje.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	traces: fix issue with too short traces

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	norm: enable aggregate-on for interface, fixes mcrl2 implicit illegal for interfaces.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	fixed resolver issues

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: display trace difference, ignore it but do fail if ok/fail differs.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test mcrl2: ignore trace content in diff

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: remove verify; 1h05 duration. REVERTME

	test: update range test admininstration.

	remove debugging output; fixes test mcl2.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	traces: use 'traces' model when compressing lts for traces

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mcrl2: fix -m simple.space.

	mcrl2: data_shadow_port/formal-binding transformation and pretty-printing.

	mcrl2: copy missing baselines from fdr2.

	test: print verification failure with newlines.

	oops: parse symlink.

	mcrl2: use assert parse, do not canonicalize-path.

	test: mcrl2: add parse baseline symlink.

	mcrl2: rename-lts-actions: trim whitespace.

	mcrl2: traces: another return,false fix.

	guix: bump to mcrl2-svn.

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: various fixes and updated FAILING

	mcrl2: WIP, integer bounds

	mcrl2: WIP, reply types mismatching

	mcrl2: fix range errors and add multiple range error tests

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	FAILURE: update

	mccl2: dzn_Axis:add suspicious template.

	mcrl2: name space.

	mcrl2: namespace frontend.

	mcrl2: use ast:path.

	revert bits of ast voidreply refactor

	mcrl2: root-add-voidreply: do not add voidreply on modeling event.

	root-add-voidreply WIP

	mcrl2: remove -lstack for interface too.

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	mcrl2 refinement verification counter-examples

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: 'fixes' verify; REVISIT UNIQUE IDENTIFIERS

	mcrl2: update FAILING

	mcrl2: update FAILING

	mcrl2: fix equal continuation references after function call

	mcrl2: fix local variables passthrough for var decl by call

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	don't remove

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: fix process declarations in if-then-else paths

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: fix translation of Enum.Value

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: fix variable or assign as last statement in compound

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "mcrlr2: assign/variable: workaround hack."
	This reverts commit d0e03eb6e4f0f83891350a978dc653bf1683a293.

	mcrlr2: assign/variable: workaround hack.

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: support int-expr

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mcrl2: do not crash on --model=<system>

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	add FAILING

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: no deadlock due to illegal: changed mcrl2 baseline

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mcrl2: mcrl22lps: silence stderr `Generated 25 processes.' ofzo.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: tick-names.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	traces: also accept interfaces

	traces: use tmpnam iso of fixed name for tmp dir

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	mcrl2: add template.

	mcrl2: purge-data.

	mcrl2: ast-add-skip: .parent fixup. FIXME: functions?

	mcrl2: global scope in template 2.

	mcrl2: global scope in template.

	mcrl2: function-return comma-fix.

	mcrl2: add implicit interface illegals.

	mcrl2: resolve: function signature: fixes Dataparam.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: add -f flag

	mcrl2_regression: add mcrl2 baselines

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	NEWS: add mcrl2 status for development

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: missing templates

	mcrl2: assign-expression templates

	mcrl2: calls from calls (partial?) fix

	mcrl2: interface verification (with verify -m only)

	mcrl2: assign-expression templates

	mcrl2: assign by action fix

	mcrl2: fix assign by action

	mcrl2: function return process fix

	mcrl2: added templates

	mcrl2: add mcrl2_regression test folder

	mcrl2: functions and reply union fix

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	dzn/gdzn: verify mcrl2: integration.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	fix traces for mcrl2; add --lts options

	eqn allow-dillegals for all interfaces

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: fix test/hello

	mcrl2: global types wip2

	mcrl2: global types wip

	mcrl2: verify interface wip

	mcrl2: global variables wip

	test: remove unnecessary interface from test file

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mcrl2: optional/inevitable: frisse parent.

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: use parent to guarantee unique ID

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mcrl2: use x:mcrl2-model-name throughout.

	mcrl2:om: fixzor

	pass: helloenum

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	mcrl2: skip

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn verify: prototype integration.

	gdzn: verify -M: support --json.

	test: import simple compliance errors with trace.

	gdzn code: resurrect.

	Revert "xpand: timing and memoization of template expansion"
	This reverts commit 2828456fa2df2bbbcb649f4c6823057f2afe6785.

	test: mcrl2: new directory with hello, hellofail.

	guix: add mcrl2.

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	mcrl2: parent tree refactoring and verify command fixes

	mcrl2: wip

	mcrl2: REVISIT; bandaid fix

	mcrl2: wip

	mcrl2: fix implicit illegals WIP

	test: added verifyok folder

	mcrl2: wip

	xpand: timing and memoization of template expansion

	mcrl2: hello & hellofail tests all pass

	mcrl2: hellofail modulo interface checks works

	mcrl2: add hellofail test dir

	mcrl2: fix reply-type for formals

	mcrl2: use subint range to limit possible reply (determinism)

	mcrl2: test/hello almost fully functional

	mcrl2: implicit illegals and refinement check

	mcrl2: WIP for refinement

	mcrl2: added deterministic check and support for varying mcrl2 inits

	mcrl2: added to test framework

	Revert "mcrl2: wip (debugging time etc)"
	This reverts commit 9f8dab0e99418de27389a6aed70cc15d8d81f359.

	mcrl2: let verify output resemble csp verify output

	mcrl2: wip (debugging time etc)

	mcrl2: fix verification command & mcrl2 replies

	mcrl2: fix initial values for replyunion

	mcrl2: valued reply implemented

	mcrl2: variable assign by function return

	mcrl2: fix Alarm after rebase

	mcrl2: assign by call (var foo = bar())

	xpand: allow ? in template name

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: mcrl2

	from mcrl2: WIP

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	compile: set %default-optimizations when GO_FAST is not set

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: parse-file: reverse default to favour generator.

	gaiag: remove parser and test.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	parent: remove dead code

	parent: remove root-scope.

	parent: remove model scope.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: disable table aspect.

	test: hello/hello_guard_two.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	parent: introduce <ast-node> and <ast> wrapping.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: glue: align member function names between foreign component and bottom glue component.

	c++/c++03: glue: cast return value.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	version: bump back to development.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: glue: add missing return.

	c++: glue: align member function names between foreign component and bottom glue component.

	c++: glue: remove namespace for LOPW

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	version: bump services to 2.6.1.

	NEWS: release update.

	resurrect gdzn code -l <module> AST pretty printing, try:
	    ./pre-inst-env gdzn code -l parse test/hello/helloworld/helloworld.dzn
	    ./pre-inst-env gdzn code -l om test/hello/helloworld/helloworld.dzn
	    ./pre-inst-env gdzn code -l resolve test/hello/helloworld/helloworld.dzn
	    ./pre-inst-env gdzn code -l norm-state test/hello/helloworld/helloworld.dzn
	    ./pre-inst-env gdzn code -l norm-event test/hello/helloworld/helloworld.dzn

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: add helloglobal test case

	test LegoBallSorter: factor out polling (lego specific stuff)

	test: suppress -q when no queue is specified

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: initialise members to avoid warning

	c++: removed warnings by visual studio compiler.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	c++: calling-context: diffably-correct trace.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: calling_context: reimplement and test.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	javascript: factor-out component preamble.

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	version: bump back to development.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	version: bump client,services to 2.6.0.

	NEWS: release update.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	c++ code: fix reply_bool type

	verify: fix -q option

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	Javascript runtime: check_bindings robust against leaf components

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: change META for all solved issues

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	javascript: fix component import.

2019-11-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	if reporting livelock, extend trace with unfolding of 1 loop

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	remove executable bit from some data files

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	javascript code: fix illegal reporting

	gaiag: fix table namespace issue

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: verify: verify all models.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	daemon + service: change verify behaviour: verify all models instead of the first one

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: cat: new command.

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: queues in watch window

	guix setup scripts

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	version: bump back to development.

	NEWS: reduce pump dependency

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	version: bump client,services to 2.5.3

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	NEWS: update 2.5.2

	c++*: remove pump dependency when blocking & async are not used.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	dzn,gdzn: convert: add --glue option.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: add verify with globals test

	gaiag: do not filter root when generating csp

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	version: bump services to 2.5.2

	c++*: shell: void fix.

	version: bump services to 2.5.1

	NEWS: update 2.5.1

	c++*: shell: enum and int support.

	c++/c++03: redirect optional-return@enum to optional-return@type

	c++/c++03: test: async: add dzn::blocking function.

	traces: replace implementation with gdzn trace.

	NEWS: add c++ warning fix and c++03 thread safe shell.

	test: fix broken symlinks.

	c++: generate pump pointer based on async use.

	c++03: partial msvc shell port.

2019-11-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	update client and service version to 2.5.0

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: table: set 20 failing [normalization] tests to known.

	NEWS: update for 2.5.0 release.

	code: remove runtime for c, c#, java, java7, python, scheme.

	for mcrl2: cleanup parameterize.

2019-11-29  Johri van Eerd  <johri.van.eerd@verum.com>

	dzn: mcrl2/csp support.

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	./configure: FIXUP @@.
	re

	dir-locals WIP

	dzn: ls: pre-inst-env fix.

	dzn: support external, injected port.

	bin/gaiag: remove.

	build: fix configure, ./pre-inst-env.

2019-11-29  Henk Katerberg  <henk.katerberg@verum.com>

	dzn devenv run local dezyne database

2019-11-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: html: fix statement

2019-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	x:pand: html: support foreign.

	x:pand: dzn: support foreign.

	test: table: drop baseline.

	test: table: test using parse, also test identity.

	x:pand: html: update.

	x:pand: dzn: functions.

	x:pand: dzn: direction and global types.

	x:pand: code: drop gratuitous toplevel on-compound.

	code: use dzn statement expansion; c++/c++03/javascript: cleanout templates.

	resolve: incorporate functions from om.

	ast: lift om: bits.

	x:pand: html: resurrect.

	<field-test>: rename from <field>.

	<literal>: rename from <value>.

	<enum-literal>: rename from <literal>.

	x:pand: code: base on dzn.

	x:pand: dzn: re-implement.

2017-09-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	resolve: move expression resolve from deprecated om.

	delete cruft.

	deprecate om.

2017-09-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	x:pand: use template@type.

2017-09-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	x:pand: refactor string-join+.

2017-09-05  Johri van Eerd  <johri.van.eerd@verum.com>

	x:pand: template allows pre and post grammars

2017-09-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	junk om:register, global model cache *ast-alist*.

	code: remove obsolete animate templates.

	code: remove deprecated animate backend usage.

2017-09-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	NEWS: update layout.

2017-09-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	NEWS: update, generate and serve as html.

2017-09-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	README: org mode harder.

2017-08-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: use lightweight guile optimization for non-container builds.

	build: use canonicalization 'absolute for guile compilation.

	emacs: .dir-locals.el: include editing settings and dzn-setup-devel.

	dzn-daemon: rename from daemon.

2017-08-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	dzn: move from client.

2017-08-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: bugs: remove old-style tests.

2017-08-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	unbundle: 4 copies of gojs: use gojs fom guix.

	remove cruft.

	unbundle: gaiag/json: use guile-json from guix.

	gaiag: delete baseline and examples.

	gaiag: remove guile-2.0 lalr support.

	README: new file.

	test: recursive import: upgrade include test.

2017-08-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	x:pand: better debugging.

2017-08-31  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++/c++03: x:pand glue, add construction parameters.

2017-08-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: remove unused templates.

2017-08-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: expressions: add >= !=.

	code: javascript: file2file and --deprecated=model2file.

2017-08-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: x:pand: javascript.

2017-08-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: c++: resurrect DZN_DEPRECATED=model2file.

2017-09-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	version: bump back to development.

2017-09-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve: allow top-level <call> resolving, fix json-table.

2017-09-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	NEWS: new file.

2017-09-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++/c++03: fix $$-statements and file2file.

2017-08-31  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	version: bump services to 2.4.1

2017-08-30  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++03: boost compatible workaround for lacking move semantics.

	gaiag: csp: rename fix renaming of queue-size commandline option renaming.

2017-08-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: xpand: support ast:extend-scope.

2017-08-25  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: resolve variable in <field>

	gaiag: properly resolve port in reply

2017-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	version: bump back to development.

2017-08-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: update guix.scm.

	build: cleanup environment variables, use ./pre-inst-env <command>.

2017-08-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: regression: rename from regression-test.

2017-08-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: drop GDZN.

2017-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	version: bump client,services to 2.4.0.

2017-08-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: verify: update baseline

2017-08-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Dataparam: assert assigment to in-parameter does not go out.

2017-08-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: fix shell.

2017-08-17  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: verification: adapt baselines due to finding different wittnesses after CSP changes

2017-08-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: java7: resurrect.

	gaiag: deprecate animate, animate-code.

2017-08-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: c++: cleanup scope, type.

	test: type/: test scopes, types.

	code: c++: cleanup.

2017-08-15  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: xpand: extract define-template body to speedup compilation by factor 3

2017-08-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: split x:pand, old animate-code, deprecated/c++

2017-08-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: remove dzn view test: viewrace; move to guix system test?

2017-08-08  Rob Wieringa  <Rob.Wieringa@verum.com>

	interpreter and run command: accept -I flags

2017-08-07  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag table: include global types in generated table code

2017-08-03  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: add <foreign> to multiple matches

2017-08-02  Rob Wieringa  <Rob.Wieringa@verum.com>

	code c++03: add missing template

	gaiag: repair Paul's csp change

2017-07-14  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: generate c.e iso c?x:{e}

2017-07-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	generate/gaiag/gdzn: toplevel $-statements; file.dzn -> file.cc,/hh
	  expose previous implementation via --deprecated=model2file

2017-07-11  Jvaneerd  <J.vaneerd@student.fontys.nl>

	cs.check_bindings: implement and add to test

2017-07-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: ls: resurrect DEZYNE_PREFIX=$HOME/development feature.

	gdzn: ls: oops, use service-dir prefix.

2017-07-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	node-snapshot.sh: bump fibers to 1.0.15.
	Error: /gnu/store/lrycb2fqr0fj1fkva4zi6xkkwmchbkyy-node-snapshot-1/lib/node_modules/fibers/bin/linux-x64-v8-5.1/fibers.node` is missing

	yup

	    $ l /gnu/store/lrycb2fqr0fj1fkva4zi6xkkwmchbkyy-node-snapshot-1/lib/node_modules/fibers/bin/
	    total 76
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 win32-x64-v8-5.0/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 win32-x64-v8-4.6/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 win32-x64-v8-4.5/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 win32-ia32-v8-5.0/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 win32-ia32-v8-4.6/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 win32-ia32-v8-4.5/
	    -r-xr-xr-x 3 root root 1222 Jan  1  1970 repl*
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 linux-x64-v8-5.0/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 linux-x64-v8-4.6/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 linux-x64-v8-4.5/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 linux-ia32-v8-5.0/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 linux-ia32-v8-4.6/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 linux-ia32-v8-4.5/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 darwin-x64-v8-5.0/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 darwin-x64-v8-4.6/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 darwin-x64-v8-4.5/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 darwin-ia32-v8-5.0/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 darwin-ia32-v8-4.6/
	    dr-xr-xr-x 2 root root 4096 Jan  1  1970 darwin-ia32-v8-4.5/

2017-07-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	node-snapshot.sh: bump q (required for test: q.any).

2017-07-12  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: do function resolution through scope; fix tables after introduction <expression>

2017-07-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn run: comment-out generate, document limitations.

	gdzn: Add view.

	gdzn: Add query.

2017-07-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: bin install.

2017-07-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Camera: skip verify of arbitrary interface.

	gdzn: run: use generator -I.

2017-07-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: update guix.scm, add development manifest.

2017-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	version: bump daemon 10.

2017-05-18  Rob Wieringa  <Rob.Wieringa@verum.com>

	language: accept keywords in dollar expressions

2017-07-04  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: fix json tables (used in dzn view)

2017-07-07  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: documentation update

	test framework: add 'collect' feature

2017-07-06  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: handle incomplete json outcome

2017-07-05  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: cope with missing/incomplete outcome

2017-07-04  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: add filtering to results table columns

2017-07-03  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: color table headers

	test: add test framework high level documentation

2017-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: table: use generator parser by default.

2017-07-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: verify: add implicit include dirs.

	gdzn: verify: support -I.

	gdzn: parse: -v: no errors found.

	test: support running of bin/test from elsewhere; imports bit.

	gdzn: parse: run on canonicalize-path; fixes symlinked with imports.

	gdzn: convert: resolve file-names of interfaces.

	gdzn run: use --illegal.

	test: fixup dzn-glue/run.

	fixup: test: package and fix include asd headers building from elsewhere.

	test: package and fix include asd headers building from elsewhere.

2017-07-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	convert/dzn-glue: --system fixes.

	gdzn: remove / removal-fu.

	test: dzn-glue: generate outcome.

2017-06-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gdzn: convert

2017-06-28  Henk Katerberg  <henk.katerberg@verum.com>

	(fixup) test support running of bin/test: no-preserve ownership.

2017-06-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: run: install trace2net.js and use that.

2017-06-26  Henk Katerberg  <henk.katerberg@verum.com>

	gdzn: run based on seqdiag and trace2net.js

2017-06-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: Add table.

	gaiag: resolve: handle port's type (dotted ...).

2017-06-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: verify: run parse first.

	gdzn: verify: fix model option, queue size.

	gdzn: verify: fix long error messages, fix errors without trace.

2017-06-22  Henk Katerberg  <henk.katerberg@verum.com>

	fixup: gdzn verify

2017-06-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: Add run.

2017-06-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: verify: WIP.

	gdzn: add parse.

	gdzn: fix prefix for traces.

	gdzn: install gash too. Fixes traces.

	gdzn: add hello.

	gdzn: prefix fix.

2017-06-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "test framework: start with 'make hello' in stead of 'dzn hello', to remove unwanted session"
	This reverts commit 12ffbff3dee338c36855c4d3b0194f26f147616f.

2017-06-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: if GDZN=*dzn*, use dzn for testing.

	test: support running of bin/test from elsewhere; glue bit.

	resurrect dzn traces.

2017-06-15  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: codegen for function returning subint

2017-06-02  Rob Wieringa  <Rob.Wieringa@verum.com>

	WIP: gaiag port binding resolution

2017-06-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag, gdzn, jsoscm2json, scm2json: factor-out script-preamble.scm

	gdzn: show commands in help.

2017-06-01  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag:replace ast:model parameter

2017-05-30  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: replace ast:root object by ast:scope list

2017-05-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: c++: glue-top-header-system.

2017-05-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: c++03: resurrect --glue=dzn, add test.

2017-05-23  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++03: glue: fix void replying events.

2017-05-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: snippets: oops: binding

	code: c++03: glue-related fixes.

	test: c++: calling_context.

	code: c++: foreign-source-component.

2017-05-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: c++: shell-source-system.

	code: c++: foreign-header.

	code: c++: shell-header.

	code: c++03: use source-system.

2017-05-22  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: optimize norm-event speed

	test: fix Camera c++03 bug in handwritten code

2017-05-19  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: trigger and action .port lazy resolve

2017-05-18  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: use equal? in clone (part 2)

2017-05-17  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: replace make by clone; add-skip: only for declerative

	gaiag: fixup compose-root

2017-05-16  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: set ast:root in tables

2017-05-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: code: support -o - for CSP.

2017-05-16  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: equal? in clone; om:equal? is structural

2017-05-15  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: turn .id into pointer

2017-05-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: build: skip interface models.

2017-05-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: code: support --mangle and CSP.

2017-05-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: use gdzn traces.

2017-05-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: traces.

	gdzn: verify: WIP

	gaiag: code: resurrect -l scheme.

2017-05-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	resolve: instance: handle resolved tree.

2017-05-11  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: om:equal?

2017-05-10  Rob Wieringa  <Rob.Wieringa@verum.com>

	DISABLE GAIAG TEST-SUITE: TRY AND REVERTME I DARE YOU ;-)

	gaiag: shell: fix name of port from binding.

	gaiag: code: compare types by list-equality

	gaiag: csp: parameterize ast:root for traces command.

	gaiag: c: parameterize ast:root

	gaiag: fix trigger equality; parameterize ast:root for csp; add id to <root>

2017-05-05  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: c++ compose root in resolve.

2017-05-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	code Fix system: init-port.

	code Fix system: init-bind.

2017-04-24  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: resolve system: component instances and bindings

2017-04-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	code: c++: system-component.

	code: c++/c++03: system-header

2017-04-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve: expressions.

2017-04-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: gaiag: resurrect unit test scaffold.

2017-04-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: code: accept --debug.

2017-04-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++/c++03: templatize #statement. TODO: ->code expressions, types.

2017-04-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: namespace: new directory.

	test: import: new directory.

2017-04-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: check: run hello/ first.

	table: workaround normalization change affecting table.

2017-04-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	norm: flatten-compound only in declarative part.

2017-04-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	services: code.sh: invoke gdzn code iso composing generator+gaiag.

2017-04-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: use gdzn for code.

2017-04-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	gdzn: dzn-compatible direct gaiag command-line.

2017-04-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	make: new target realclean, speed-up om and gaiag build.

2017-04-20  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: start with 'make hello' in stead of 'dzn hello', to remove unwanted session

2017-04-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	runtime: c++: simplify timer servicing.

2017-04-21  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: also show formal reference as @

2017-04-20  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: resolve function call

2017-04-18  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: resolve field variable

2017-04-13  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: resolve literal type; replace literal .name by .type

2017-04-11  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: resolve assignment variable

	gaiag: display: show @ only if real reference

2017-03-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve ast to use references iso names: <port>.type

	gaiag: ast to use references iso names: <port>.type

2017-04-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: use ref@ notation for <variable>.type.

2017-03-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve ast to use references iso names: <var>.variable

	gaiag: use <formals> in <trigger>.

	gaiag: remove <trigger> from <action>.

2017-03-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve ast to use references iso names: {<signature>,<variable>}.type

2017-03-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: remove <port-event>.

	gaiag: remove usage of (om:event model <trigger>).

2017-03-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve ast to use references iso names: trigger.event

	gaiag: resolve ast to use references iso names: trigger.port

2017-03-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: FIXUP template approach: add-illegals with data param.

2017-02-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++/c++03: new template approach
	* removes use of define-on

2017-06-12  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++/c++03: container event function parameter.
	* gaiag/runtime/c++/dzn/container.hh:

2017-03-22  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++03: add blocking & async support

2017-04-14  Henk Katerberg  <henk.katerberg@verum.com>

	version: bump back to development.
	* VERSION: Back to development.
	* guix.scm (dezyne.git): Back to development.

2017-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: make cleanups.

	daemon: build using installed dezyne-services.

2017-07-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: install-test: copy traces.js.

	build: test, install-test: tests content only.

2017-06-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	make: client, daemon, test, install-test.

	test: fix and cleanup dzn file links.

2017-06-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: allow DZN override.

2017-06-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: support running of bin/test from elsewhere.

2017-06-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: drop dependency checks from configure.

2017-06-08  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: add extra queuefull test

2017-05-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	version: bump services to 2.3.4

2017-05-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: guix.scm.

	configure: comment-out emacs, java, javac, gtk+, gtkmm dependencies.

2017-05-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag scm2json json2scm: rewrite sh to scm

2017-05-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	cs: shell: add missing internal connects.

2017-05-19  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	cs: runtime: pump: add timer support.

	runtime: c++: fix timer lock.

2017-05-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	runtime: cs: workaround for cs < 4.0 lock keyword

2017-04-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: main: add --debug to enable runtime debugging.

2017-03-28  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++/run: allow illegal in trace

2017-04-18  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: fix reply(var) for integer var

2017-04-06  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: report queue_full for all cases

2017-04-14  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: Test known issue with unconstrained requires external out event

	version: bump back to development

2017-05-09  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	version: bump services to 2.3.3

2017-05-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	code: out-binding fix for cs and javascript.

2017-04-13  Ladislau Posta  <ladislau.posta@verum.com>

	version: bump services to 2.3.2

2017-04-10  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: Deal with namespace in CSP channel prefix

2017-03-30  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: selection is entire behaviour for 'model is incomplete' error traces

2017-03-20  Henk Katerberg  <henk.katerberg@verum.com>

	regression-test: change test trace for error message documentation

2017-04-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	version: bump services to 2.3.1

2017-04-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++/c++-mscv11: fix include dependencies

2017-04-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	cs: add thread safe shell.

	test: shell: force failure without a shell.

2017-04-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: aspect: do not retry known failing tests.

2017-04-06  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: remove known issues from all/*/META

2017-03-22  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: allow filtering result table

2017-03-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	version: bump client & services to 2.3.0

2017-03-30  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: calling_context for functions
	  * enable test in regression
	  * fixes scope.name refactoring

2017-03-28  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: runtime: disable debug by default.

2017-01-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++03: resurrect dzn2asd glue.

2017-03-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: cs: blocking support.

2017-02-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: cs: add coroutine doc.

2017-02-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: add coroutine doc.

2017-03-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: add c++-msvc11 source ext.

2017-03-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: do not generate headers for dzn.async interfaces.
	* gaiag/gaiag/c++.scm (dzn-async?, gaiag-dzn-async?,
	  generator-dzn-async?): New functions.
	* gaiag/gaiag/c++.scm (ast->): Use them to filter-out dzn.async interfaces.

2017-03-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: runtime: async interface declaration.

2017-03-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: parse: goops fix for dzn.async interface.

2017-02-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: handle normalization of out-bindings (formal <- global).

2017-01-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: strictly use goops in ast and ast-handling. TODO: expressions.
	    ('events (event* ...) ...) => (events* (event* ...) ...)
	    ('ports (port* ...) ...)   => (ports* (port* ...) ...)
	    ...
	    ('name scope ... name)     => (scope.name* (scope ...) name)

2017-01-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: Implement clone.

2017-01-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: Add geiser-guile setup.
	* .dir-locals.el: New file.

2017-01-16  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: add test for dzn.async.ack -> illegal

2016-12-14  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: async - report livelock in component
		new file:   ../../test/all/Async_LiveLock/Async_LiveLock.dzn

2017-01-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++-msvc11: Update meta for rank.
	* gaiag/runtime/c++-msvc11/dzn/meta.hh: Update meta with rank and
	  requires.

	gaiag: c++: shell: rank fixes.
	* gaiag/templates/c++/shell.cc.scm: Update dzn_meta initialization for
	  rank.

2017-01-05  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: fix baseline of async_silent

2016-12-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: c++, run: async_context: add handwritten main, enable test.

	test: c++: async_ranking: enable test.

2016-12-09  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: enable run in async regression tests

2016-12-12  Henk Katerberg  <henk.katerberg@verum.com>

	test: async_silent verify output modified by interpreter

2016-11-24  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: async

2016-12-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: async_order, async_order2: replace tmp pump hack by container.

2016-12-07  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: add another async-refine ranking test

2016-12-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: async: add ranking.

2016-12-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: pump refactor service_timers.

2016-12-12  Henk Katerberg  <henk.katerberg@verum.com>

	test: c++: async_silent: enable test.

2016-12-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: c++: async_order2: add handwritten main, enable test.

2016-12-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: c++: async_order: add handwritten main, enable test.

2016-12-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: async: flush after ack. Allows cancel on callback.

2016-12-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: c++: async_simple: add handwritten main, enable test.

2016-12-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: c++: async_prio3: add handwritten main, enable test.

	test: c++: async_synccb2: add handwritten main, enable test.

	test: c++: async_synccb: add handwritten main, enable test.

2016-11-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: runtime: loop servicing timers and queue. Fixes async race.

2016-12-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: c++: async_prio2: add handwritten main, enable test.

	test: c++: async_prio: add handwritten main, enable test.

2016-11-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: async-refine: async_hello, async_cancel.

2016-12-12  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: change deadlock check for component to [F] iso [FD] model

	csp: give second ack highest priority if first ack didn't perform cb

2016-12-07  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: remove asserts for dzn async interface

2016-12-05  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: implement silent modeling events

2016-12-02  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: add async test for silent transition when a req is out standing

2016-12-01  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: add more async-refine tests

2016-11-30  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: rewrite test and fix illegal bug

	csp: keep order of ack's same as req's

2016-11-28  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: implement clr on async port correctly

	test: fix baseline

2016-11-25  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: implement prio of async acks

2016-11-23  Henk Katerberg  <henk.katerberg@yahoo.com>

	async test models
		new file:   ../interpreter/test/AsyncRefine.dzn

2016-11-22  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: add async-refine tests

2016-11-23  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: hide events of async ports

	csp: allow mangling by renaming added behaviour

2016-11-22  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: add internal-libs behaviour

2016-11-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: parse: async-refine: allow port in behaviour.

2016-11-22  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	scm: add ports to behaviour

2016-11-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: add --include flag.

2017-03-17  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: error message review rework

2017-03-16  Henk Katerberg  <henk.katerberg@verum.com>

	test models: enable as many aspects as possible on new interpreter/verification tests

2017-03-14  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: Error message renamed from 'EVENT not handled' to 'EVENT not performed by component'

2017-02-21  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: empty behaviour in interface reported as MODEL is incomplete

2017-02-17  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: Compliance check truncates trace at error; Re-enable live-lock error for components; Override external message when detecting error.

2017-02-01  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: improve error messages

2017-03-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: viewrace: record race on jenkins as KNOWN.

2017-03-20  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	fix race in view command: give higher prio to msg with error

2017-02-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	version: bump daemon 0.0.9.

2017-03-13  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: extend with 'known' and 'solved'; update META accordingly; add info to html table.

2017-03-09  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: add link to model file.

	test: aspects: retry (transiently) failed test.

	emacs: rename ~/development.git to ~/development

2017-03-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: disable view aspect by default, add view test to make check.

2017-03-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++03: add newline in mapped foreign include snippet.

2017-03-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c: fix closure declaration clash.

2017-03-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++*: runtime: move illegal handler to locator
	  make it available by default

2017-03-01  Rob Wieringa  <Rob.Wieringa@verum.com>

	WF check: add check for nameclash with model name (for c++ codegen)

2017-02-28  Rob Wieringa  <Rob.Wieringa@verum.com>

	WF check: subint min <= max

2017-02-14  Rob Wieringa  <Rob.Wieringa@verum.com>

	WF check: global variable initialization

2017-02-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	version: bump back to development.

2017-02-22  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	container: shell: force shell pump to stop before container pump is destroyed.

2017-02-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	version: bump services to 2.2.1

	c++: fix 7275

2017-02-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	regression-test: add shell.

	test-clients: add previous daemon version.

2017-02-15  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test-clients: isolate config, increase verbosity

2017-02-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	version: bump back to development.

	version: bump client 2.2.0, daemon 0.0.8, service 2.2.0.

2017-01-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: om: Update instance and port-bind getters.
	* gaiag/gaiag/om.scm (om:instance): Accept <bind> and <port>.
	  (om:port-bind): Accept <port>.

	gaiag: c++: shell: trace fixes.
	* gaiag/templates/c++/shell.cc.scm: Use it to set unititialized port
	  meta of instance.  Fixes trace.
	* test/all/shell/META: Skip all languages except for c++ and c++-msvc11.

	test: Allow selecting of c++-msvc11.
	* test/lib/languages.js: Add c++-msvc11.  Required for selecting it.
	* test/lib/aspects.js (meta): Filter-out c++-msvc11 as default language.

2017-01-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: state tracing @ return

2017-01-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: runtime: fix koenig lookup.

2016-12-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: foreign base class separate #include with newline.

2016-12-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: cast model parameter to void.

	gaiag: c++/c++03: fix enum-typed event in foreign component.

2016-12-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: lego-main: replace tmp pump hack with container.

2016-11-15  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	simplify lego make, update code for foreign base class.

2016-11-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++03: runtime: resolve overload ambiguity.

2016-10-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: state tracing

2016-11-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: base session from 100. Fixes unintended daemon interaction.

	gaiag: main: use incremental argument numbering for c, c++, javascript.

2016-10-24  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: Camera: use foreign base class.

2016-10-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++03: foreign baseclass.

2016-10-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: abstract base class

2016-10-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: calling_context

2016-11-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: norm-event: rewrite-formals: do not reverse order of formals.

2016-10-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: norm-event: Rename argument shadowing member.

2016-10-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: use norm-event.

2016-10-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: declare-io: any->string, <signature>, <formals> and lexicals.

2016-09-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: tiny C: fold runtime_event into call_in.

	gaiag: tiny C: DZN_ILLEGAL.

2016-08-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: tiny c.

2016-09-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: switch to goops.

2016-10-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: json-table: handle <var> in expression.

2016-10-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve: bugfix: externs in expressions.

2016-10-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve: remove dead code.

2016-10-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: is-a?/om:declarative? fix.

2016-10-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: have .name, .functions .variables .types handle #f.

2016-10-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: dzn: use make <> to synthesize ast objects.

2016-09-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: revert avoidance of generics.

2016-10-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: normalize: handle blocking.

	gaiag: goops: create generic equal? to use list semantics.

2016-09-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: resurrect.

2016-10-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: animate: always work on cloned module; allows nested use.

	gaiag: animate: also handle guile module exceptions.

2016-10-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: animate: parameterize any->string.

2016-10-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: animate: gracefully handle error in eval too.

	gaiag: animate: better error messages.

2017-01-26  Henk Katerberg  <henk.katerberg@verum.com>

	interpreter: refactor error reporting, ProgramStep-kind 'error' in trace
		modified:   ../seqdiag.cpp

		modified:   ../seqdiag.cpp

		modified:   interpreter/seqdiag.cpp

		modified:   seqdiag.cpp

		modified:   interpreter/MicroTrace.cpp
		modified:   interpreter/MicroTrace.hpp
		modified:   interpreter/seqdiag.cpp

2016-12-15  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: hide port.silent events from trace of fdr (Zoho #7168)

2016-10-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: csp: update unit test.

2016-10-12  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: share processes more among different asserts (speedup)

2016-12-02  Rob Wieringa  <Rob.Wieringa@verum.com>

	c++: fix bad_function exception blocking out param

2016-12-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: system: delete duplicate component includes.

	c++/c++-msvc11: initialize meta.ports_connected in system.

	c++-mscv11: support foreign base class.

2016-11-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: reader: better model-not-found error.

2016-10-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: fix setting of c++ as default language.

	gaiag: gaiag.scm: do not exit in interactive mode.

2016-12-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: examples: add helloworld.

2016-11-30  Rob Wieringa  <Rob.Wieringa@verum.com>

	set VERSION to 'devleopment' for development release

2016-12-01  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	generator: fix selection of named model in case of namespaces

2016-12-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: aspects: clean out before creating symlink tree [WAS: plain cp].

2016-11-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: aspects: skip dzn traces if handwritten trace is present.

2016-09-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Injected: drain stdin.

2016-09-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: resurrect Injected (c, c++, c++03).

2016-11-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	version: service=master.
	* VERSION:

2016-12-08  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	version: service 2.1.3

2016-11-03  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: stop reporting livelocks for events via inevitable/optional for external interfaces

2016-11-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	version: bump daemon 7, service 2.1.2.
	* VERSION:

2016-11-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: clients x daemons

2016-09-26  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: livelock: unhide missing events from trace by fdr2

2016-09-20  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: make NOLOG appear read in html

2016-09-20  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp implicite illegal: change IIG to IG for out events of required ports

2016-09-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: remove Handle.

	test: set timeout 10s.

2016-09-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: c,c++: handwritten main: drain stdin.

2016-09-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: move packages to guix repo.

2016-09-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: build from git.

2016-09-19  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: fix mangling issue with namespaces

2016-09-19  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: otherwiseNested: enable code

	test: re-enable Dataparam; cs connect fix.

	version: bump & cleanup

	c++: shell: capture this and out parameters by reference and the rest by value.

2016-09-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: add completeness illegals.

2016-09-09  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: LegoBallSorter: update handwritten code to new c code structure

2016-09-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	client: disable commands: export, user

	server: export: require phantomjs.

2016-09-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: remove completeness check for components.

2016-09-06  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	norm: fix issue with nested otherwise

2016-09-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	version: bump: 2.1

	c++03: remove blocking support (requires c++11).

2016-09-01  Rob Wieringa  <Rob.Wieringa@verum.com>

	convert: add -I flag; add test

2016-09-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: random trace selecion only from out.

	test: update baseline: replace all/ with out/

2016-09-01  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: copy test input to out, allows convert.

2016-08-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "test: change Injected example"
	This reverts commit b43ffbedf399b5fad3381568fa747b11ec0072d9.

2016-08-25  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: change Injected example

2016-08-17  Henk Katerberg  <henk.katerberg@yahoo.com>

	interpreter: refactor error handling/reporting
		modified:   ../MicroTrace.cpp
		modified:   ../MicroTrace.hpp
		modified:   ../seqdiag.cpp

		modified:   ../seqdiag.cpp

		modified:   ../MicroTrace.cpp
		modified:   ../MicroTrace.hpp
		modified:   ../ModelState.cpp
		modified:   ../ModelState.hpp
		modified:   ../StateVector.cpp
		modified:   ../StateVector.hpp
		modified:   ../seqdiag.cpp

		modified:   ../ModelState.cpp
		modified:   ../ModelState.hpp

		modified:   ../interpreter/seqdiag.cpp
		modified:   all/Alarm/baseline/verify/Alarm.stderr
		modified:   all/ConsumeMultiple/baseline/verify/ConsumeMultiple.stderr
		modified:   all/GarageDoorControlErr/baseline/verify/GarageDoorControlErr.stderr
		modified:   all/IgnoreNotification/baseline/verify/IgnoreNotification.stderr
		modified:   all/MultipleOutEventsOnSingleTau/baseline/verify/MultipleOutEventsOnSingleTau.stderr
		modified:   all/QTriggerModeling/baseline/verify/QTriggerModeling.stderr
		modified:   all/SimpleBlockingDeadlock/baseline/verify/SimpleBlockingDeadlock.stderr
		modified:   all/SimpleBlockingDeadlock2/baseline/verify/SimpleBlockingDeadlock2.stderr
		modified:   all/SimpleBlockingGuard/baseline/verify/SimpleBlockingGuard.stderr
		modified:   all/SimpleBlockingTwoReply/baseline/verify/SimpleBlockingTwoReply.stderr
		modified:   all/StartDevices/baseline/verify/StartDevices.stderr
		modified:   all/asyncasync_illegal/baseline/verify/asyncasync_illegal.stderr
		modified:   all/asyncasync_illegal2/baseline/verify/asyncasync_illegal2.stderr
		modified:   all/component_deadlock_fail0/baseline/verify/component_deadlock_fail0.stderr
		modified:   all/component_deadlock_fail1/baseline/verify/component_deadlock_fail1.stderr
		modified:   all/component_deterministic_fail0/baseline/verify/component_deterministic_fail0.stderr
		modified:   all/component_deterministic_fail1/baseline/verify/component_deterministic_fail1.stderr
		modified:   all/component_illegal_fail0/baseline/verify/component_illegal_fail0.stderr
		modified:   all/interface_deadlock_fail0/baseline/verify/interface_deadlock_fail0.stderr
		modified:   all/interface_deadlock_fail1/baseline/verify/interface_deadlock_fail1.stderr

		modified:   ../MicroTrace.cpp
		modified:   ../MicroTrace.hpp
		modified:   ../seqdiag.cpp

		modified:   ../ModelState.cpp
		modified:   internalConsistencyTest.reference.out

2016-07-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: shell: remove extraneous comma.

	c++-msvc11: add symlink to c++/pump.cc

2016-08-09  Henk Katerberg  <henk.katerberg@yahoo.com>

	test/all c++03: generated main, skip blocking tests
		modified:   all/Injected/main.cc

2016-08-04  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: fix crash due to skipping of selected aspect

2016-08-03  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: add automatic addition of unhandled events (as illegal) guranteeing completeness

2016-07-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: compute guards-by-trigger alist.

2016-07-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: move split-valued-void to norm-state.

	gaiag: csp: refactor behaviour->csp.

2016-08-02  Henk Katerberg  <henk.katerberg@yahoo.com>

	interpreter: execute incomplete component models
		modified:   ../interpreter/test/seqdiagReference/OutEventSetReply.net.seqdiag
		modified:   ../interpreter/test/seqdiagReference/blocking_RequireExplicitValuedReply.net.seqdiag
		modified:   ../interpreter/test/seqdiagReference/blocking_RequireExplicitVoidReply.net.seqdiag
		modified:   ../interpreter/test/seqdiagReference/incomplete.net.seqdiag
		modified:   all/GarageDoorControlErr/baseline/verify/GarageDoorControlErr.stderr
		modified:   all/Incomplete/baseline/verify/Incomplete.stderr
		modified:   all/SimpleBlockingDeadlock/baseline/verify/SimpleBlockingDeadlock.stderr
		modified:   all/SimpleBlockingDeadlock2/baseline/verify/SimpleBlockingDeadlock2.stderr
		modified:   all/SimpleBlockingGuard/baseline/verify/SimpleBlockingGuard.stderr
		modified:   all/component_queuefull_fail0/baseline/verify/component_queuefull_fail0.stderr
		modified:   all/coverageMissing/baseline/verify/coverageMissing.stderr
		modified:   all/h/baseline/verify/h.stderr

		modified:   ../interpreter/ModelState.cpp
		modified:   ../interpreter/ModelState.hpp

2016-07-26  Henk Katerberg  <henk.katerberg@yahoo.com>

	codegen: c++03 execute and triangle pass regression test
		modified:   ../gaiag/templates/c++03/main.cc.scm
		new file:   lib/build.c++03.make

		modified:   ../gaiag/templates/c++03/main.cc.scm
		new file:   all/Forward/Forward.dzn
		new file:   lib/build.c++03.make
		new file:   regression-test/Forward

2016-07-25  Henk Katerberg  <henk.katerberg@yahoo.com>

	codegen: c++03 build pass all regression tests
		modified:   ../gaiag/templates/c++03/component.cc.scm

2016-07-22  Henk Katerberg  <henk.katerberg@yahoo.com>

	c++03 runtime and code-gen pass regression tests

2016-07-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: c++03: add c++03 to regression-test + fixes for Injected in c++03.

	test: aspects: handle skipping language while being explicitly supplied via command line.

2016-07-19  Henk Katerberg  <henk.katerberg@yahoo.com>

	gaiag: cs: move component's runtime info into Runtime.info.

	gaiag: cs: remove Interface inheritance.

2016-07-19  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: add RecursiveImport test

	test framework: add trivial view test

2016-07-15  Henk Katerberg  <henk.katerberg@yahoo.com>

	dzn traces: interface model traces without model name; regression-test: skip weak illegal interface model run

2016-07-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: META build updates.

	test: change interface model: cannot execute to cannot build.

	test: regression-test: add new symlinks.

	test: remove old handwritten traces.

	test: move regression-nocode to all/ and symlinks in regression-test and verify/.

2016-07-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	VERSION: services: switch to development.

2016-07-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: cs: use dzn.global namespace instead of dzn.Global class. Fixes externaltypes.

2016-07-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: fix shadow model naming, META, symlinking.

	test: add shadow_local_shadow, rename Reply5.

2016-07-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: cs: support bool and int reply.

	gaiag: cs, java: type-int: use int.

	gaiag: cs, javascript: alias snippet typo.

	test: cs: update handwritten code.

	test: cs: skip Camera: no main, lock is keyword.

	test: cs: skip blocking.

	gaiag: cs: push base, locator, runtime into dzn namespace.

2016-07-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: cs: implement --flush.

2016-07-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: aspects: hack to remove `ERROR' from command line.

2016-07-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: enable cs.

2016-07-12  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c: runtime: add meta.h

	c: put system under test and fix CONNECT.

	c++: pump.hh: msvc11 workaround

2016-07-11  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: add import tests to regression-test

	test framework: add import test with errors

	test framework: add import test without errors

2016-07-04  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: create out sub dir before writing outcome

2016-06-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	release: VERSION: bump.

	Revert "test: Camera: put execute of c++ under test."
	This reverts commit 5027eb5fd756ea4e5505f775ee7d3e50b2a866d4.

2016-06-29  Henk Katerberg  <henk.katerberg@yahoo.com>

	interpreter: lifeline order

2016-06-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: aspects: capture command in output.

	test: Camera: put execute of c++ under test.

2016-06-28  Ladislau Posta  <ladislau.posta@verum.com>

	update baseline of some tests after fixes of Henk

2016-06-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: support guile-2.0.

	gaiag: resurrect coverage.

	gaiag: list: remove collect.

2016-06-28  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: exclude divergence as non-determinism cause

2016-06-28  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: put target in html title

	test framework: five table smaller font

2016-06-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	tests: MultipleProvides: remove META.

	javascript: put locator, rt, meta and runtime info in ._dzn object.

2016-06-27  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: add MultipleProvides example

	test: add MultipleProvides example

2016-06-27  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: handle missing outcome.json

	test framework: replace '+' by 'p' in hrefs, to avoid broken links

2016-06-24  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: externaltypes: fix model to pass wellformedness check for #arguments.

	test: Recursion: add META to skip run and execute.

	c++-msvc11: add missing runtime.cc symlink.

2016-06-24  Rob Wieringa  <Rob.Wieringa@verum.com>

	test framework: refactor html

	test framework: remove unused css info

	test framework: refactor table test; prevent information loss

	test framework: add better coloring in html

	test framework: ensure status sorting is fixed in all tests

	test framework: in html make selected outcome details green/red upon selection

2016-06-23  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	parser: check that events definition in component has same number of parameters as defined in interfaces

2016-06-23  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: aspects: split status from output in outcome.

	test framework: outcome matrix fixed + some bugs fixed

	test framework: output matrix

2016-06-23  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	daemon: html/css: make background white everywhere (Guillermo's suggestion).

2016-06-22  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	example: Alarm: move siren.turnoff, remove redundant state Triggered.

2016-06-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: set ulimit on spawn.

2016-06-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Revert "test: use -j4 as a temporary attempt to work around out-of-memory on build4."
	This reverts commit 035813c2d80fbab30c4d4b0aa1b86e1e2d761aba.

2016-06-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: aspects: write outcome.json containing test status and output per aspect[,language]

2016-06-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: use -j4 as a temporary attempt to work around out-of-memory on build4.

	gaiag: c: blocking: use #error blocking not supported (WAS: assert).

	test: coverageMissing, emptyBehaviour: undo verify baseline merge.

	test: parse: re-add directory, fix wheel, share baseline with verify.

2016-06-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: blocking/block: identify as blocking, add META skipping c.

	test: disable execute on blocking deadlock models.

	test: c: Camera: skip; no handwritten main and stubs.

	test: c: Dataparam: update handwritten main.

	gaiag: c: use INT_MIN as invalid int/enum value.

	test: META: do not skip traces for systems.

2016-06-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c: main: extension of meta and fixes to pass all but one regression tests.

	gaiag: traces: silently skip traces for system.

2016-06-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: enable c.

	gaiag: c: support --flush. WIP

	test: blocking: add skip for c-language.

	test: shadow: identify as blocking.

	test: lib/aspects.js: support skip by language, skip-specific comment.

	gaiag: c: blocking: add missing templates that fail with assertion.

	gaiag: c: support bool and int.

2016-06-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	VERSION: set to 2.0.0.rc1.

2016-06-16  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: add tail and non-tail recursion example

2016-06-15  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: client/daemon: replace shell with scm.

	test: client/daemon: install/upgrade.

2016-06-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: verify: update stderr baseline with change in annotation/index.

2016-06-14  Rob Wieringa  <Rob.Wieringa@verum.com>

	test WF: split messages over two lines

2016-06-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: aspects: drop timeout on run.

2016-06-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: make: increase parallelism from 4 to 16.

	test: aspects: go parallel for everything but run and verify.

2016-06-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: IChoice: not an error model.

2016-06-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	norm-state: csp-norm-state: flatten before passdown-on. Fixes IChoice.

2016-06-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: bin/test: support running on leaf, i.e.: bin/test all/IChoice.

2016-06-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: util: add copy of Array.find

2016-06-09  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: make: add -j4

2016-06-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: extend parallel_n with session, fixes non deterministic failures of run.

2016-06-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: aspects: verify: echo verify output clearly.

	test: aspects: run: stop hanging dzn run with a timeout.

	test: example: GarageDoorControl: cannot compile incomplete system, skip c++.

2016-06-13  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	examples: add example for External and Blocking

2016-06-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: verify: update stderr baseline (some indexes added).

	test: error: remove asyncsync, add coverageMissing, emptyBehaviour.

	test: util: spawn_sync_shell: print "\r" instead of CR.

	test: verify: add stderr baseline newly linked error models.

	test: error: add missing error model links.

2016-06-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: bring verify with parse errors under test.

	Revert "test: make: add -j4"
	This reverts commit acccaf088ccb45cf2f920ca2db3d2ca0f0cc5aa2.

	test: aspects: verify: fail upon non-zero exit.

2016-06-08  Rob Wieringa  <Rob.Wieringa@verum.com>

	test WF: add blocking with multiple provides

2016-06-09  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: make: add -j4

2016-06-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: regression-test: add symlinks lost by flattening.

	test: add assert/ grouping.

	test: SynchronousLivelock,livelock2,silentoptional,single_tau_to_multiple_tau_should_not_refine: add error symlink, update verify trace.

	test: bin/stress: remove illegal from trace.

2016-06-08  Rob Wieringa  <Rob.Wieringa@verum.com>

	test WF: add blocking with multiple provides

2016-06-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: move all tests flattened into all; add toplevel groupings with symlinks.

	test: verify: update baseline.

2016-06-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: remove non failure baseline.

	test: parse: update baseline of typeerror and replyRequiredPort.

2016-06-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: LegoBallSorter, DezyneApplication: remove `empty' baseline.

2016-06-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: add converter test.

	javascript: main: fix type error in type_helper, fixes boolnot.

	test: h: update baseline.

	test: move typeerror to parser tests.

	test: util.spawn: add NODE_PATH env var, fixes missing fibers.

	test: META: skip traces for all error models.

	test: range_runaway: update baseline.

	test: asyncsync_illegal: update baseline.

2016-06-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: inner_space, name_space, simple_space: set model name, enable run.

	test: lib/code.make: use symlinks for runtime.

2016-06-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: use pipe in stead of file for diff.

	test: add --jobs option.

2016-06-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: all/assert: tfw compliance fixes, baseline update.

2016-06-06  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: parse: add comment to META

	test WF: add '<-' test

2016-06-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: h: sort completeness message.

	test: StartDevices: add META.

	test: run tests in parallel up to 4.

	test: skip aspect which has a skipped dependency.

	test: make verbose default, add summary option.

2016-06-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	/services/root/fs/share/examples/index.txt: move, resurrect.

	test: index.txt: resurrect.

	test: add comment to skip, move failing test to test/todo, v2.

	test: add comment to skip, move failing test to test/todo.

2016-06-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: print comment when skipped.

	test: extend with failure expectation, fixes SimpleBlockingTwoReply, removes ls_files_recursively.

2016-06-06  Rob Wieringa  <Rob.Wieringa@verum.com>

	Revert "test: parser: negate value of exit status."
	This reverts commit 63b4882fd8c0183feede8077f7e7351ddea9b918.

	test parser: fix baselines

2016-06-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	VERSION: bump to 4. This will trigger 1.3.x daemon upgrade.

2016-06-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: bin/test: apply-append harder; fixes exit code.

	test: bin/test: also stop at dir/run.

	test: parser: negate value of exit status.

	test: skip of exucute instead of languages. Fixes skipping everything.

2016-06-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: bin/test: remove parent-or-child restriction, recurse into tree.

	test: add DezyneApplication, fix /share/examples and stress test.

	test: move error-test to all, enable in regression-test.

	test: import async.

	test: remove autocryocycle.project.

	test: import parser.

	test: import verification.

	test: import shadow, remove unnecessary handwritten main.

	test: import Injected.

	test: import Dataparam.

	test: modify baseline of GarageDoorControlErr: now .error is not performed (WAS: .reset).

	test: import "examples". PUZZLE: 8/15 fail to produce code.

	test: javascript: support handwritten main.

	test: lib/aspects.js, lib/code.make, lib/build.c++.make: support handwritten main.

	test: regression/*.dzn: remove already-`moved' files.

	test: all/blocking: import from regression. Also enable in regression-test.

	test: all/assert: import from regression, also enable in regression-test.

2016-06-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: refactor and fix random_selection.

2016-06-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	.init.el: dzn-setup-devel: setup server and daemon buffers.

	Examples: rename examples/Lego to examples/LegoBallSorter. Fixes dir = <main>.dzn.

2016-06-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: shell: capture in arguments by value.

	test: add missing q, should fix: no traces found.

	test: add debug to no traces error.

2016-06-03  Henk Katerberg  <henk.katerberg@yahoo.com>

	test interpreter: forking

2016-06-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: killme harder.

	test: fix check for no traces available.

2016-06-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: remove console.log.

	test: replace 'ERROR' with -1, fixes JSON.parse(undefined).

2016-06-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: check: use AlarmSystem as AlarmSytem (was: Alarm hack). Disable run.

	test: aspects: read traces from dir iso baseline.

	tet: regression-test/boolnot: skip for javascript. FIXME.

	test: aspects: allow skipping of language.

	gaiag: javascript: main: handle boolean and integer return values.

	test: unify/simplify command line interface between test and run.

	test: remove ENOENT error printing if no handwritten trace is present.

	test: strip, or do not prepend, cwd from, or to, all file names.

2016-06-02  Henk Katerberg  <henk.katerberg@yahoo.com>

	regression-test: move verification error models to error-test

2016-05-27  Henk Katerberg  <henk.katerberg@yahoo.com>

	interpreter: add module test to regression test set
		new file:   seqdiag-unit

2016-06-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: javascript: main: remove port from reply value.

2016-06-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: javascript: main: fix log_valued.

	test: move incomplete.dzn (model with verification error) to error-test/.

	test: regression-test/{inner_space,name_space,simple_space}: skip RUN.

	test: lib/aspects.js: allow setting of model for run.

	gaiag: javascript: --flush: fix DataVariables, Handle.

2016-06-01  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: resurrect jan's code for maximum nr runs (default 50)

	test: handle multiple languages in TFW

	test: handle multiple languages in TFW

	test: add 'LANGUAGE' to code.make

2016-05-31  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: rewrite aspects to output parameters

2016-05-30  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: make list of items unique (preventing duplicate execution)

2016-05-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table-state: do not crash on empty file.

2016-05-27  Maarten van de Waarsenburg  <maarten.van.de.waarsenburg@verum.com>

	Allow command-line execution of html.js (json2html) and txt.js (json2txt)

2016-05-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	configure: find version tuplets harder. Fixes texinfo-6's texi>>2<<any.

2016-05-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: regression-test/silentoptional: add baseline with livelock failure.

	test: regression-test/Incomplete: sort events in baseline. Makes test pass.

	test: bin/test: use out/ as default report output location.

	test: regression-test/livelock2: Update baseline: we now have a livelock

	test: bin/reorder: more robust incomplete sorting. Fixes `incomplete.dzn'.

2016-05-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: move h/h.dzn (model with verification error) to error-models/, note:
	See diff below:

	  * The model is incomplete.  bin/reorder now sorts the list of completed events.

	  * The simulator now reports: ctrl.operate not performed; was: ctrl.stop.

	  diff -uwB /home/janneke/src/verum/development/test/regression-test/h//baseline/verify/h <(/home/janneke/src/verum/development/test/lib/../../client/bin/dzn --verbose verify --all -m h /home/janneke/src/verum/development/test/regression-test/h//h.dzn | /home/janneke/src/verum/development/test/lib/../bin/reorder)
	  --- /home/janneke/src/verum/development/test/regression-test/h//baseline/verify/h	2016-05-28 23:07:08.884659803 +0200
	  +++ /dev/fd/63	2016-05-30 16:21:43.890957047 +0200
	  @@ -5,14 +5,14 @@
	   ITransfer.tcalibrate
	   ITransfer.tcalibrated
	   ITransfer.return
	  -ITransfer is incomplete: 'ITransfer.move,ITransfer.transfer,ITransfer.tcalibrate' not handled
	  +ITransfer is incomplete: 'ITransfer.move,ITransfer.tcalibrate,ITransfer.transfer' not handle' not handled
	   verify: ITransfer: check: deadlock: ok
	   verify: ITransfer: check: livelock: ok
	   verify: h: check: deterministic: ok
	   verify: h: check: completeness: fail
	  -h is incomplete: 'ctrl.stop,robot.placed,robot.arrived,ctrl.operate,robot.picked' not handled
	  +h is incomplete: 'ctrl.operate,ctrl.stop,robot.arrived,robot.picked' not handle,robot.placed' not handled
	   verify: h: check: illegal: ok
	   verify: h: check: deadlock: ok
	   verify: h: check: compliance: fail
	  -ctrl.stop not performed by component
	  +ctrl.operate not performed by component
	   verify: h: check: livelock: ok
	  verify[h]: [FAILED]

2016-05-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: move typeerror (model with verification error) to error-models/.

	test: move QTriggerModeling (model with verification error) to error-models/.

	test: move ConsumeMultiple (model with verification error) to error-models/.

	test: bin/reorder: sort incompleteness events.

	test: add meta.max property to restrict number of apsect:run traces; default=50.

	test/GNUmakefile: re-enable regresion test.

2016-05-30  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: make: drop smoke and test target, --verbose by default.

2016-05-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	test/GNUmakefile: skip regression test.

	VERSION: add comment about branch/release.

2016-05-30  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: introduce new META format + default value

2016-05-30  Ladislau Posta  <ladislau.posta@verum.com>

	set Dezyne commandline client and service version to 2.0.0

2016-05-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: resurrect writing of in-memory-accumulated-log output.

	test: rename SKIP to META.

	test/lib/aspects.js: use run --strict. Fixes ConsumeMultiple.

	test/regression-test: add SKIP files with --flush option.

	test/lib/aspects.js: Implement --flush parameter on execute and traces.

	test: GNUmakefile: enable running regression-test.

	test/bin/test: skip `baseline' directory. Allows running regression-test.

	test: check: add SKIPs.

	test/bin/test: move --target option to FILE argument. Remove some globals.

	test/lib/aspects: implement SKIP; experiment with parameters.

	test/bin/test: filter on DIR or .dzn file. Avoids readdir on file and processing SKIP, *.trace.

2016-05-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: main: add synchronous required out event support.

	test: mv run from lib to bin

	test: fixed various bugs

2016-05-27  Maarten van de Waarsenburg  <maarten.van.de.waarsenburg@verum.com>

	Created test targets and harmonised status output

2016-05-27  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: aspects: avoid double work; protect execute and run with timeout; make traces non parallel

2016-05-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: aspects: implement run, like execute.

	test: execute: all available traces.

	test: make: fail on undefined parameters.

2016-05-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	configure: hack for chrooted build.

	configure: enable guild check. Add emacs and texinfo for documentation.

2016-05-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: make: fix prerequisites renaming

	test: aspects: failing verify with empty expection display output.

2016-05-26  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: replace fs.access by util.writable

2016-05-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: aspects: sort aspects alphabetically

	test: output test.html by default.

	test: make: assume running server, check with dzn hello.

	test: put output property back in test result, fix error path in test.

2016-05-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: remove duplicate all/block2.

	test: check: move content to all, resurrect check target using symlinks.

	test: exec: do a trace diff.

2016-05-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: make Controller pass

	test: make: enable html output.

2016-05-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: re-enable server stress test.

	test: all/Controller: import. TODO: script this, see all/Controller/README.

	test: c++: support globals.h.

	test: print command that gets spawned. allows testing manually.

	test: javascript mode.

	test: use node [WAS: nodeJS]. Fixes running on Guix.

2016-05-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: allow make and make test in test dir to run new framework verbosely and quietly respectively.

	test: output start and end of test in a visually discernable and consistent manner.

	test: remove old polling q.delay run and show stdout/stderr in realtime

	test: put script in bin and make it run from there

	test: initial commit of node js based test framework

2016-05-24  Rob Wieringa  <Rob.Wieringa@verum.com>

	gaiag: code: handle portless reply in function.

2016-05-23  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: remove port from reply event generated main reply match.

2016-05-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	test/makefile: FIXME disable stress test. Allows deployment on development.

2016-05-17  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	javascript: remove supferfluous space between ! and expression

	javascript: do not generate multiple requires of same interface

2016-05-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: bump timeout. fixes build3 builds.

	test: package.json: add fibers.

2016-05-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	FIXME: test/regression/blocking/makefile.make: disable some c++ failing tests...

2016-05-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: BlockedSystem4: fix Blocked to verify. Fixes javascript.

2016-05-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: javascript: propagete return values.

2016-05-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: runtime: javascript: implement blocking, using fibers.

2016-05-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test/regression/examples/index.txt: sort alphabetically.

2016-05-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: javascript: runtime: remove valued_helper. Fixes valued returns.

2016-05-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: javascript: support bool as reply type.

2016-05-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	daemon: Debugger with model and util-broker component, like Editor.

	gaiag: javascript: refactor runtime call_in/out.

2016-05-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: inject.project: enable again.

	test/regression/examples: generate index.txt to aid list-examples.

2016-05-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: make: use replace depends with code --depends.

	daemon: depends: use output option, update rename dezyne to dzn

2016-04-19  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	bug: not equal for normalize (second)

	bug: not equal for normalize

2016-04-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	WIP

	add check_bindings.

2016-04-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: javascript: add meta.ports and meta.children.

2016-05-04  Henk Katerberg  <henk.katerberg@yahoo.com>

	C# runtime support for uninitialized data variables

2016-04-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: csp: fix reply(b).

2016-04-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	c++: add <map> include to interface.c++.scm for to_<enum>. Fixes trip.cc.

2016-04-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: get rid of redundant includes in interface.

2016-04-12  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: punp: fix member initialization order.

2016-04-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: remove triangle traces.

2016-04-12  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: code: syntactic sugar for port prefix on reply.

2015-12-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: runtime: library solution for generated main.

2016-03-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: decouple generated code from pump

2016-03-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: shell: handle systems with internal bindings.

2016-03-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	configure: check for guile.

	test: fix make regression.

	guix: full build of guix-vm on Ubuntu 15.10.

2016-03-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	client-version: 1.3.0

2016-03-18  Maarten van de Waarsenburg  <maarten.van.de.waarsenburg@verum.com>

	Remove guild from checks in configure

2016-03-17  Maarten van de Waarsenburg  <maarten.van.de.waarsenburg@verum.com>

	Rule out check on fdr2

2016-03-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: support for plain guix-0.9.0.

	configure: handle /bin/sh is not bash.

2016-03-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: update split-package support.

2016-03-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	VERSION: set SERVICE_VERSION=<branch name>.

2016-03-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	services: split off from server.

2016-03-08  Rob Wieringa  <Rob.Wieringa@verum.com>

	WF: add test for new check for infinite system recursion

2016-03-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	configure: play nice with guix-0.9.0 and g++ on Ubuntu.

2016-02-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: (dezyne-server-release): new variable.

	makefile: run configure if .config.mk is of date.

	configure: check for fakechroot.

2016-02-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	configure: check for fdr2

2016-02-24  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	VERSION: client 1.3.1, daemon 0.0.3.

2016-02-23  Rob Wieringa  <Rob.Wieringa@verum.com>

	set VERSION to 1.3.0

2016-02-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: use alists instead of hash-tables for json throughout.

	json/builder.scm: create objects from alists.

2016-02-19  Rob Wieringa  <Rob.Wieringa@verum.com>

	OM parser: fix WF crashes due to attempts to recover from earlier syntax errors

2016-02-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag:code: Use namespace dzn throughout, move headers into dzn/.

	gaiag: c++03: runtime.cc: use ! iso `not'.

2016-02-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	dezyne.scm: remove tclxml, now upstream.

	dezyne.scm: remove tcllib, now upstream.

	guix: use default configure.

	configure: add support for --prefix, --sysconfdir.

2016-02-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	dezyne.scm: support guix build.

2016-02-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	verify: do not assume bash lives in /bin.

2016-02-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	make: have-db-p, test-db: new targets.

	gaiag: (system): remove module, now upstream.

	support tarball builds.

2016-02-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	guile/json/tarball

2016-02-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: simplify build.

2016-02-08  Rob Wieringa  <Rob.Wieringa@verum.com>

	WF check: repair baseline

	WF: removeredundent check

	WF: add check for portless reply when multiple ports are involved

2016-02-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	client/daemon: standardize messages further, use daemon_api, websockets:
	client:

	    {post:{
	      command: {
		name: string,
		options: {},
		flles: [],
	      },
	      auth: {
		user: string,
		password: string,
		ticket: string,
	      },
	      client: {
		name: 'dzn',
		version: string,
	      },
	      url: string,  // 'http://localhost:3000',
	      debug: false|true
	    }
	    ,
	    read:{name:string,content:string},
	   }

	daemon:
	   {
	     post:{
	      auth: {ticket:ticket}
	      type: error|install|progress|result
	      command:{
		name: string
		status: int
		stderr: string
		stdout: string
		files: []
	      }}
	     ,
	     read:{name:string},
	   }

2016-02-10  Henk Katerberg  <henk.katerberg@yahoo.com>

	parser: nested namespaces shorthand allow more than 1 deep
		new file:   shorthandNamespace/parse

2016-02-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	configure: ps.

2016-02-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	convert: stable daemon-client interface: [stdin,] stdout, stderr, files, status.

2016-02-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	configure: add perl and python.

	use space after shebang.

	configure: add bash, make, w3m.

	make dist: new target.

	configure: check for dot.

2016-02-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	stable daemon-client interface: [stdin,] stdout, stderr, files, status.

	add support for dependable guix builds.

2016-02-03  Henk Katerberg  <henk.katerberg@yahoo.com>

	verify: csp robust against bool and int reply in void event

2016-01-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	add markdown to configure

2016-01-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	daemon: split-out into separate dzn-daemon package.

2016-01-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	client/server: redo versioning.

2016-02-02  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: fix issue with async required out during a blocking call

	csp: for "on <out event>:" take first provided port if port is omitted for reply

	test: add external tests

2016-01-27  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: external: make all out events of external port asynchronous

2016-01-19  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: external: have queue per external port

2015-08-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: (.type): rename from .component.

2016-01-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: block: update.

2016-01-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: int reply.

	gaiag: code: fix reply of subint expression.

2016-01-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: javascript: main: use --flush.

2016-01-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: blocking: move to regression, quick check with (c++) and without blocking.

2016-01-21  Rob Wieringa  <Rob.Wieringa@verum.com>

	Wellformedness: check for bindings with external

2016-01-19  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: add test for testing silent transitions in (provided) interface test: add test for type error (wrong enum reply for event)

	csp: external: have queue per external port

	test: add baseline GarageDoorControl

2016-01-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	client: use executable name `node' for nodejs [WAS: nodejs].

2016-01-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	dezyne-client: create npm package.

2015-08-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: (.type): rename from .component.

2016-01-19  Rob Wieringa  <Rob.Wieringa@verum.com>

	Wellformedness: check for multiple provides + reply in function

2016-01-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: python: bool and int reply.

2016-01-13  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: add support for external.

2016-01-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: support external on ports.

2016-01-13  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add type_error fix issues with bool and int

	c++: fix issue with to_string for enums and bools

	test: add ThreadSynchronization to baseline

2016-01-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: update baseline.

	csp: handle assignment, fixes updated addint.dzn and boolnot.dzn.

2016-01-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: handle reply of member variable, fixes updated boolnot.dzn.

2016-01-07  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: add support of events with integer type

	csp: implement boolean events using data constructor

2016-01-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: support int as reply type.

2016-01-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: main.cc.scm: update handle bool.

	gaiag: parse: grok reply().

	parser: cleanup bool event, better failing typecheck message.

	test: VERBOSE=runtime debugging.

2016-01-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	parsers, code, csp: allow bool as event return.

	gaiag: runtime: goops: (locator): usability fixes.

2016-01-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: disable debug printing.

2015-12-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: implement --glue=asd for ASML:LOPW.

2016-01-06  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	reenable real livelock check for interfaces allow for silent transitions in interfaces (was broken for provided interfaces)

2016-01-05  Henk Katerberg  <henk.katerberg@yahoo.com>

	Blocking example passes regression test

2015-12-18  Henk Katerberg  <henk.katerberg@yahoo.com>

	examples: add purpose to ThreadSynchronization.dzn

	examples: blocking thread synchronization

2015-12-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: top level target fixes.

	gaiag: typo.

	gaiag: goops: (om:declarative?, (is-a <statement>)): align with list backend. Fixes VM.

	gaiag: run: typo.

2015-12-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: glue: refactor templates.

2015-12-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: add --html baseline.

	dzn --html: preserve spaces and line breaks.

2015-12-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	dzn: table: add --html option.

2015-12-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	daemon: serve localhost:4000/run: static trace.

2015-12-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: move new files from regression/parse to regression/parser.

2015-12-14  Buildmaster  <buildmaster@verum.com>

	Increase version from 1.2.1 to 1.2.2

2015-12-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: bin/reorder: sort models. Fixes race in verify results. Update baseline, ran:
	    for i in $(find . -path */verify/*); do set -x; cat $i | bin/reorder > $i.r; mv $i.r $i; done

	test: resurrect `make regression'.

	Revert "fix baseline for GarageDoorControlErr"
	This reverts commit 5284c2a1a8254bae77e4ce9b9b3ac5273d925946.

	Revert "remove autocryocycle completely."
	This reverts commit 4188ea421f33f6d852d059e28bc4754606b0f1fc.

2015-12-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: fixes for make <subdir>.

2015-12-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: fix toplevel targets, fix files and project run target leakage.

2015-12-14  Buildmaster  <buildmaster@verum.com>

	Increase version from 1.2.0 to 1.2.1

2015-12-12  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	remove autocryocycle completely.

2015-12-11  Ladislau Posta  <ladislau.posta@verum.com>

	fix baseline for GarageDoorControlErr

2015-12-11  Maarten van de Waarsenburg  <maarten.van.de.waarsenburg@verum.com>

	Increase version from 1.1.0 to 1.2.0

2015-12-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: make: run: pass name in name.project to dzn run -m.

	c++: revert shadowing problem introduced by: 0dc33c02d.

2015-12-11  Rob Wieringa  <Rob.Wieringa@verum.com>

	add WF tests

2015-12-10  Ladislau Posta  <ladislau.posta@verum.com>

	resolve baseline for regression example

2015-12-09  Ladislau Posta  <ladislau.posta@verum.com>

	finalize list of testable examples for release

2015-12-10  Henk Katerberg  <henk.katerberg@yahoo.com>

	lego: changed pump in main

2015-12-10  Ladislau Posta  <ladislau.posta@verum.com>

	remove reference to old Alarm project

2015-12-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table: json: do not attempt to evaluate <call>. Fixes TouchSensor.

2015-12-09  Ladislau Posta  <ladislau.posta@verum.com>

	remove wrapped components and system component for now

	finalize list of testable examples for release

2015-12-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table: json: do not attempt to evaluate <action>. Fixes StartDevices.

	test: regression/examples: Add Alarm without Alarm.trace.2.

	test: regression/examples: remove broken examples, update baseline.

	test: support symlinking of directories. Fixes examples/Lego etc.

2015-10-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: convert: add example project.

2015-12-08  Ladislau Posta  <ladislau.posta@verum.com>

	add Alarm.dzn to the examples even if it fails - needed by stress test

	ensure a first set of testable set of publishable examples

2015-12-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: ressurect fei, lopw. fix table-update, verify-update.

2015-12-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: simplify target naming scheme, add `make list', support `make -C subdir'.

	test: only generate dependencies necessary for the current target.

	client/, server/: move to toplevel. Removes published examples not under test.

2015-12-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: runtime: remove valued_helper, another refactoring removing distinction between void and valued for.

	c++: runtime: shell: do not distinguish between void and valued.

2015-12-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: update BlockedSystem4 trace.

2015-12-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: runtime: refactor distinction void and valued reply.

2015-12-07  Ladislau Posta  <ladislau.posta@verum.com>

	updated backlog with bug found on Monday the 7th of December related to shared type definitions

2015-12-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: add blocking to trip.

2015-12-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: runtime: use bind in stead of a lambda in combination std::forward<Args>(args)...

2015-12-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: json-table, state-table: use <var>==<value> for subint states (WAS: <var>.<value>).

2015-12-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: remove dependency on runtime.hh from header files.

	c++: string-to-enum: throw exception in stead of returning an invalid enum value.

	c++: locator: prevent -Wshadow warnings.

	c++: pump: allow and_wait to deduce the return type.

2015-12-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: trip: add blocking.

	test: regression: fixes.

	gaiag: json-table: use simulator's evaluate for subint states. Fixes some i.<unknown>s.

2015-12-01  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: correct baseline WF check on illegal

2015-12-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: c++: add gratituous parentheses around AND. Fixes obnoxious suggest parentheses around-warning.

	gaiag: code: c++: remove line breaks from compound expressions.

	gaiag: c++: cast parameter aliases to void. Fixes unused variable-warnings.

	webapp: state-diagram/dot: add missing nodes. Fixes state diagram for some incomplete models.

	test: update baseline.

	test: examples-alarm.project: remove handwritten mains and stubs.

	gaiag: dzn: bugfix for void return.

	gaiag: html: true,false: add missing snippets. Fixes some state/event tables.

	gaiag: json-table: (json-next): fix next state list for deep illegals.

	gaiag: json-table: (json-next): recurse into blocking; fixes next state.

	gaiag: code: c++: initialize reply values. Fixes trip.dzn; i.e., undefined behaviour for missing reply().

	test: alarm.project: remove handwritten code.

	test: update baseline.

	gaiag: dzn: bugfix for instances.

	test: bugs: add voidenum.dzn.

	test: check: add trip.dzn.

	test: alarm.project: update system test.

	test: BlockedSystem4: enable.

2015-11-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: disable explicit duplicate triangle runs.

	test: no code for examples/Stage.dzn.

	test: run: add traces, disable failing tests.

	test: shadow.project: update system test.

	test: lego.project: update system test.

	test: glue.project: update system test.

	test: examples-alarm.project: update system test.

	test: dezynesystem.project: update system test.

	test: dataparam.project: update handwritten main and trace.

	test: alarm.project: update handwritten main for new code2fdr.

	test: blocking: move new regression/*blocking* to blocking.

	test: blocking: add verify and run.

	test: make timeout configurable.

	gaiag: code: c++: main: remove pump from internals.

	gaiag: code: main: remove SHELL.

	gaiag: code: main: return-assert thinko.

	gaiag: code: main: refactored, use --flush.

2015-11-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: runtime: cleanup

2015-11-30  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: fei: replace specific data types by int.

	c++: pump: main: input events from stdin while blocking main thread.

2015-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: use timeout 0.01; fail rather than hang.

	main.cc.scm: use pump.and_wait together with pump.next_event. Some success.

2015-11-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	pump: next_event

2015-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	main.cc.scm: [BLOCKING]: use pump.and_wait. BREAKS `make blocking'

2015-11-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: only c++.

	test: move blocking to toplevel; use: make blocking.

	gaiag: code: main, test: code2dr: allow system port.event input-output tracing.

	gaiag: main: allow instance.port.event system input-output traces.

	test: split into check (default, fast) and regression. Support make -C some/dir.

2015-11-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: ignore blocking on required ports.

	gaiag: code: c++: support blocking required ports. Fixes SimpleBlocking3.dzn

	REVERT: create interfaces on the fly. Need for test: fei/lopw, breaks alarm.project.

2015-11-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: fei. Add AxisComp.dzn. TODO: --shell. Use: make FEI=true triangle

2015-09-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	lopw: create interfaces on the fly simplify use to: make LOPW=true

2015-09-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	all traces, no --illegal

2015-08-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	LOPW traces hack. Run twice: (1st time fails bo dependencies)
	    make lopw CODE_LANGUAGES=c++ CXXFLAGS="-Wall -std=c++11 -Iregression/lopw -include globals.h"

2015-11-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: run simulator also for blocking tests.

2015-11-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: runtime: add collateral blocking
	     i.e. block an event directed at the provided port of a component which is already blocked on a required port.

2015-11-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: make: expose errors in pipelines in make recipes.

	c++: runtime: cleanup

	c++: runtime: do not expose context member on coroutine.

	test: lego: remove local pump.o from projeck.make, fixes link error.

	c++: pump: avoid propagation of the unwind exception.

	c++: pump: refactoring + cleanup commented out asserts.

	c++: pump: remove level string on create_context.

2015-11-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: runtime: add collateral blocking
	     i.e. block an event directed at the provided port of a component which is already blocked on a required port.

2015-11-25  Ladislau Posta  <ladislau.posta@verum.com>

	change not to ! in main.cc of camera project to ensure that project compiles also in visual studio 2013

	ensure that the right main.cc file is present for the camera project

2015-11-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: update baseline for event tables with blocking.

	gaiag: norm-event: passdown-blocking. Fixes state and event tables with blocking.

	gaiag: html: mark blocking as keyword.

	test: regression/SyncPedal: add trace. Enables testing code and run. FIXME: compliance error

	test: examples/muliple_provides: add trace. Enables testing code and run.

	test: examples/ReplyTwo: add trace. Enables testing code and run.

	test: examples/Sensor: add trace. Enables testing code and run.

	test: examples/ErrorPattern: add trace. Enables testing code and run.

	test: remove obsolete baseline.

	test: Alarm: add <flush> to trace. FIXME: many traces may lack <flush>.

	gaiag: code: c++,c++03: main: silence warning.

	gaiag: code: c++,c++03: [!BLOCKING]: update generated main and meta wrt <flush>.

	test: lego.project: resurrect c++03.

	test: use symlinks for local runtime.

	gaiaig: c++03: remove dezyne::component from runtime.

2015-11-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: lego: update meta.

	test: SimpleBlocking{,2,Binding,TwoReply}: add trace and baseline.

	test: DirectAndDeferredReply: fix syntax error, add actual baseline.

	gaiag: code: c++: glue: update meta. Fixes test:glue.project.

	gaiag: code: fix infamous formal parameter shadowing member + test.

	gaiag: code: c++: main: create component c before pump. Fixes segfault.

	verify.js: fdr, modelchecker, simulator: add line buffering. Fixes non-determinism.

	gaiag: c++: runtime: compile fixes.

	gaiag: code: disable __ASD_VoidReply hack.

2015-11-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: c++: avoid parameter hiding port name.

	test: guardifnest: new test to match ifnest.

	gaiag: code: c++: runtime: use DEBUG_RUNTIME (WAS: DEBUG).

	gaiag: code: c++: runtime: add missing include.

	gaiag: c++: runtime: update from m2lib.

	gaiag: code: reproduce and fix FEI AxisComp.dzn's if-wrap-compound bug.

	gaiag: c++: pump: compile fix.

2015-11-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: add runtime instance to shell

	gaiag: c++: shell: construct pump after everything else, i.e. destroy it before everything else.

2015-11-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: c++: dump_tree: typo

2015-11-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: runtime: update from m2lib

2015-11-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: shell: add own pump, ie one per thread safe shell.

	gaiag: pump: allow more in one process.

	gaiag: c++: pump: handle pumping from pump.

2015-11-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: add pump to bindings in shell system.

2015-11-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: c++-msvc11: workaround with std::move in interface meta.

	gaiag: c++: pump: microsoft locking support

2015-11-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: c++: conversion from ASD enum VoidReply hax0r.

	gaiag: c++-msvc11: update meta wrt binding_error.

2015-11-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	pump.cc: update from m2lib.

2015-11-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	refactor coroutine/thread-context combination for c++11

2015-11-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: remove difference in binding error between in and out.

2015-11-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	microsoft meta update

	microsoft NULLPTR foo

2015-11-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiaig: c++: remove dezyne::component from runtime.

2015-11-20  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: correct asd dm to make test succeed after converter has been fixed

2015-11-17  Rob Wieringa  <Rob.Wieringa@verum.com>

	converter: fix datapath for out parameters transfer

2015-11-09  Henk Katerberg  <henk.katerberg@yahoo.com>

	regression test: blocking data path

2015-11-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	WIP: via pump

2015-11-06  Henk Katerberg  <henk.katerberg@yahoo.com>

	regression test: blocking data path - flush synchronous out in asynchronous out context, test data flow through sub-machines

2015-11-11  Rob Wieringa  <Rob.Wieringa@verum.com>

	test: change baseline for ReplyTwo test due to changes in WF

2015-11-10  Rob Wieringa  <Rob.Wieringa@verum.com>

	WF: test: add tests for reply on requires port

	WF: test: remove reply tests (not relevant due to blocking intro)

	WF test: repair tests on required reply

2015-11-10  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: fix issue with wrongly marking synchronous posted cb as asynchronous when being blocked

	csp: fix issue with blocking { illegal }

2015-11-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: disable coroutine test; build3.oban is still at vivid / 15.04 / boost1.55.

2015-11-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: no blocking for C.

	test: update baseline queuefull

2015-11-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	refactor blocking_datapath_asd use pump.and_wait

	refactor coroutine/thread-context combination for c++11

2015-11-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	add valued pump.and_wait

2015-11-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	c++: pump: factor-out do_one().

	blockdata: remove outdated data patch

	gaiag: remove tmp/ coroutine experiment

2015-11-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: resurrect autocryocycle.

	test: resurrect lego.

	c++-msvc11: add blocking runtime: context.hh coroutine.hh pump.hh pump.cc.

	c++: remove c++14-isms.

	c++: remove make_unique. helps c++11.

	c++: runtime: downgrades for microsoft c++ dialect.

	test: update baseline

	test: parse: disable replyVoidExpected.dzn and replyNotFound.dzn.

	test: disable lego.project and autocryocycle.project; expect old pump.

	test: add Henk's blocking_datapath_asd.project.

	c++: flush before block. Fixes: henk:e_out_sync.

2015-11-05  Henk Katerberg  <henk.katerberg@yahoo.com>

	gaiag: data path test - fix early reply test

	gaiag: data path test - out parameter flow through synchronous out event

2015-11-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	implement reply in blocking scope in runtime.

2015-11-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	out/henk: some logging

	switchable DEBUG printing

	haax0rs

2015-11-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	refactor

2015-11-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	avoid join without thread.

2015-11-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	trek de stekker druit

2015-11-05  Henk Katerberg  <henk.katerberg@yahoo.com>

	gaiag: blocking datapath test

2015-11-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	working coroutine implementation, threaded version throws bad function call.

2015-11-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	BlockedSystem3.trace runs ... removal coredump with threads

	pump: context/threads runs BlockedSystem3/test.

	test: add BlockedSystem2,3

	pump: coroutine runs BlockedSystem3/test.

2015-11-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	wip

	pump: transplant delicacy from pump.cc-orig.

	test: update baseline.

	test: resurrect.

	pump: support threads/coroutines: -DHAVE_BOOST_COROUTINE=1 2/2

2015-11-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	pump: support threads/coroutines: -DCOROUTINE=1 1/2

2015-11-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	thread based coroutine pump implementation

2015-11-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: c++: add AlarmBlock traces.

	gaiag: c++: runtime: update pump.cc.

	gaiag: c++: BLOCKING <flush>

	gaiag: norm: retain blocking on (skip)s too. Fixes csp SimpleBlockingGuard.dzn

	gaiag: norm-state: passdown-blocking before passdown-on. Fixes csp SimpleBlockingGuard.dzn

	gaiag: dzn/html: grok <port>.reply.

2015-10-30  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	henk's OutParam: fix issue with missing ><

	converter: generate bindings

2015-10-28  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	test: add and update many test for blocking

2015-10-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: csp: (model-purge-data): use binding-name. Purges also bound data parameters.

2015-10-28  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp blocking: allow blocking on actions of out event. allow p.reply within blocking. mark double reply as illegal

2015-10-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: om: (om:declarative?, om:imperative?): only true for statement. Fixes blocking normalize.

2015-10-26  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	csp: first version for blocking

2015-10-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve: align with generate.

	gaiag/blocking_datapath_asd_convert/main.cc: more hax0rz

	gaiag: code: norm2b: add baseline.

	gaiag: code: norm2b.cc: add asserts to handwritten main.

	gaiag: code: revert to using csp-norm-state. Fixes multiple-on issue.

	gaiag: code: handle all ONs... WIP

	gaiag: norm2b.dzn: normalization example.

	gaiag/blocking_datapath_asd_convert/main.cc: attempt at handwritten main.

2015-10-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: manual edits to blocking_datapath_asd_convert; generates code. Try: make out/henk.

	gaiag: add blocking_datapath_asd_convert.

2015-10-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve: type check thinko. Fixes assignment to parameter from global.

2015-10-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve: handle on p.e (number__ <- nr__STORE) { nr = number__; }.

	gaiag: code: remove p.out = $ .. $ support.

	gaiag: code: c++: generate data path. on p.e (out <- global).

	gaiag: blockdata2b: handwritten datapath prototype. on p.e (out <- global).

	gaiag: parse: datapath: add on p.e (out <- global).

2015-10-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: c++: generate data path. p.out = $..$;

	gaiag: blockdata: handwritten datapath prototype. p.out = $..$;

	gaiag: parse: datapath: add p.out = $..$;

	gaiag: code: --output-dir: fix for non-script languages.

2015-10-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: pump. WIP.

	gaiag: code: use code-norm-event.

	gaiag: blocking as prefix.

2015-09-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: remove setting handling to true in release, is this right???

2015-08-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	WIP: multi threaded Alarm semantics in single threaded using coroutines.

	fixup c++: add block and release

2015-08-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	WIP: c++: add block and release

	WIP: introduce blocking & port.reply into list/goops backends

	WIP: introduce blocking & port.reply

2015-10-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	synchronize semantics constraining process with queue for queue_full
	makes reported traces for illegal, deadlock and compliance uniform.

2015-10-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: add stress target that expects running server.

	test: enable verify/run for subdirectories. Update baseline.

	verify: remove gratituous newline, update baseline.

2015-10-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: triangle: remove .<flush> for run.

2015-10-12  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	traces: suppress <flush> for provided port. Support multiple provides port

2015-10-07  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	traces: add --flush option.

2015-10-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	test/runtime: use <external>.event (WAS: <external>..event, sometimes).

	gaiag: goops: main: handle flush. Fixes test/flush2cb.dzn.

	gaiag: cs: main: handle flush. Fixes test/flush2cb.dzn.

	gaiag: java7: main: handle flush. Fixes test/flush2cb.dzn.

	gaiag: java: main: handle flush. Fixes test/flush2cb.dzn.

	gaiag: python: main: handle flush. Fixes test/flush2cb.dzn.

	gaiag: javascript: main: handle flush. Fixes test/flush2cb.dzn.

	gaiag: c: main: handle flush. Fixes test/flush2cb.dzn.

	gaiag: c++03: main: handle flush. Fixes test/flush2cb.dzn.

2015-10-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: main: handle flush. Fixes test/flush2cb.dzn.

	test: add flush2cb.dzn.

2015-10-01  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	traces: set queue lenght on 7 (iso 3)

2015-10-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: javascript: timer.js: update for new locator.

2015-10-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: baseline: update-verify

	test: camera: fix IHardware interface

	gaiag: add --output-dir

2015-10-01  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: make: reorder dzn verify output to match reference.

2015-09-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	server: verify: stream imported files.

2015-09-28  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	server: verify: javascript: allow both require and cat of javascript for verify.js

2015-09-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	javascript: runtime: allow to supply the tracing function via the locator.

2015-09-23  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	server: verify: implementation using dezyne.

2015-09-22  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: template: reduce complexity COMPLETE process by allowing range error to occur during completeness check.

2015-09-18  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: runtime: locator: allow overwriting values.

2015-09-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: make - read from stdin

	gaiag: make -o - write to stdout

2015-10-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: use proper name for interface in refinement specification.

2015-10-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: wrap compound around inner else-less if.

2015-09-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	daemon: only display EADDRINUSE from verbosity level 2.

	daemon: improve debugging: only detach when listening, info with dzn --verbose.

	gaiag: parse: (add-scope): generalize.

2015-09-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: parse/resolve: namespace fixes.

	gaiag: dzn: default command-line option should be a string. Fixes dzn.test.

2015-09-25  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	examples: add examples of Customer Meeting

2015-09-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: html: remove ctrl-click from actions. Fixes state diagram labels.

	gaiag: json-state: (json-next): look into 3-deep guards.

	state-table, event-table: ctrl-click: function call go to definition.

	gaiag: html: remove enum- prefix.

	gaiag: code: javascript: support cat-to-one-file. Do something like:
	    (echo -e 'dezyne = {};\n require = function () {return {};};'; cat out/alarm.project/javascript/dezyne/runtime.js out/alarm.project/javascript/dezyne/*js regression/alarm.project/main.js) | grep -v '^#' > test

	gaiag: parse: (add-scope): namespace me harder.

2015-09-23  Rutger van Beusekom  <rutger.van.beusekom@hansei-kaizen.org>

	c++03: namespace: support inner space.

2015-09-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: support name_space.dzn and inner_space.dzn (except c++03).

	webapp: ast: (add_scope): finish implementation. Fixes depends, fixes namespace.

	gaiag: code: namespace simple_space.

	gaiag: code: c++03: namespace.

2015-09-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: javascript: support modules and namespaces.

	test: enable simple_space.

2015-09-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: html: new language backend.

2015-09-17  Rob Wieringa  <Rob.Wieringa@verum.com>

	WF: test: add WF case

	WF: test: add WF case

	WF: add WF case

	WF: add 'otherwise' tests

2015-09-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	webapp: daemon: deployment.

2015-09-18  Ladislau Posta  <ladislau.posta@verum.com>

	add missing file

	fix test framework to correctly handle java

2015-09-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: update from lego.

2015-09-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: java: use lambda expressions. Add java7.

2015-09-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: coroutine: add yield-to and naive scheduler.

	gaiag: coroutine.scm: new module.

2015-09-15  Ladislau Posta  <ladislau.posta@verum.com>

	build version 1.1.0

2015-09-15  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++-msvc11: runtime: replace and, or, not by &&, ||, ! respectively.

2015-09-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++-msvc11: vs does not provide language support for the: "and, or, not" keywords

2015-09-14  Rob Wieringa  <Rob.Wieringa@verum.com>

	WF check: test: replace imperative by declarative in error msg

	WF check: test: replace imperative by declerative in error msg

2015-09-11  Rob Wieringa  <Rob.Wieringa@verum.com>

	WF check: repait typo: fix baseline in test framework

2015-09-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: add multiple provides examples

	csp: resurrect multiple provides on top of refinement fix

2015-09-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: dzn: support printing of function calls.

2015-09-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: fixes refinement error as documented by test/regression/single_tau_to_multiple_tau_should_not_refine.dzn

2015-09-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	cleanup: remove reference

2015-09-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: json-table: compose namespace'd name to string. Fixes [java.lang.object].

2015-09-03  Rob Wieringa  <Rob.Wieringa@verum.com>

	parser WF test: remove empty line in baseline

	parser WF: check for at least one provides port

	Revert "parser: wfc: remove single provided port constraint."
	This reverts commit 4560e70c00b54a9dae77286daf5755becfa32413.

2015-08-24  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c++: add c++-msvc11 as new c++ language dialect.

	c++: allow passing ostream instance through dezyne::locator

2015-08-14  Henk Katerberg  <henk.katerberg@yahoo.com>

	gitignore test/regression/autocryocycle.project

2015-08-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: complete run to completion constraint in multiclient.

	csp: multiclient: replace example.

2015-08-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	parser: wfc: remove single provided port constraint.

	gaiag: csp: update baseline for make check

2015-08-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: allow multiple provided ports
	       simplify csp by moving modeling events to separate channel
	       as well as renaming reply events with the rest of the events
	       and removing the behaviour name from csp processes.

	       passes all test framework tests.

2015-08-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: initial multiclient reference.

2015-08-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: replace accessor generics with matchers.

2015-07-14  Henk Katerberg  <henk.katerberg@yahoo.com>

	examples: fix Camera/main.cc compile error

2015-08-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: update baseline.

	gaiag: csp: do not sort interfaces (by mangled name).

	gaiag: wfc: re-enable tests.

	gaiag: goops: fully functional as backend.

	Update Gaiag README.

2015-08-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: parse: add optional bits.

	gaiag: om: move backend switch here. Fixes warnings.

	gaiag: goops/list: remove duplication in om:* util.

	gaiag: goops: resurrect.

	test: update baseline.

2015-08-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: namespace.

	gaiag: parse: loosen model-name/file-name relation. Handles parsing lego.

	gaiag: json-table: namespace update. Fixes state/event tables.

	gaiag: code: bug fix for group expressions.

	gaiag: dzn: bugfixes for integers and group expressions.

	test: glue.project: actually bring glue under test.

	gaiag: code: c++03: resurrect glue.

	gaiag: code: c++: resurrect glue.

	gaiag: code: prepare for glue.

	gaiag: wfc: resurrect well-formedness checks.

2015-08-03  Rob Wieringa  <Rob.Wieringa@verum.com>

	namespace test: rename port foo to avoid shadowing

2015-08-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: om: namespace.

	gaiag: parse: use symbols instead of names. Fixes error messages.

	gaiag: code: goops: namespace. WIP

	gaiag: code: cs: namespace. WIP

	gaiag: code: java: namespace. WIP

	gaiag: code: javascript: namespace. WIP

	gaiag: code: python: namespace. WIP

	gaiag: code: c: namespace.

	gaiag: refactor scope-join.

2015-08-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: c++: namespace update for handwritten code.

2015-08-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: c++03: use namespace from dzn for models (WAS: dezyne).

2015-07-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: c++: use namespace from dzn for models (WAS: dezyne).

2015-08-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: namespace: c++ compiles alarm.

	test: add namespace test.

	webapp: client: scan.jison/parse.jison: namespace.

	gaiag: resolve: bugfix: resolve expressions in action arguments.

2015-07-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: update baseline.

2015-08-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: namespace: handle examples/inner_space.dzn.

2015-07-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table-event: oops, update to dzn (WAS: pretty).

2015-07-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: dzn: rewrite pretty printer, refactor animate.

2015-07-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: backends: namespace.

	gaiag: resolve: namespace.

2015-07-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: parse: namespace.

2015-08-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Revert "csp: add additional compression on the queue."
	This reverts commit ec0b13f3545e6c72dd635c0050fc5d91e19d033c.

2015-07-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: add additional compression on the queue.

2015-07-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: goops: update handwritten class names.

	gaiag: code: goops: fix for handling data variable init with #unspecified/#t/#f.

	gaiag: run: make check.

2015-07-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: support running on GOOPS backend.

2015-07-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: (run-port-action): remove.

	gaiag: run: cleanup toplevel.

	gaiag: run: (run-trigger): refactor further.

2015-07-15  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: run: (run-trigger): refactor.

2015-07-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: refactor marking-trigger.

	gaiag: run: remove flushing?.

	gaiag: run: plumbing fix.

	gaiag: run: cleanup.

2015-07-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: run: interface first.

2015-07-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	webapp/gaiag: run: refactor matched trace reporting.

	gaiag: run: (run-trigger): refactor.

	gaiag: run: (sort-infos): remove.

	gaiag: run: cleanups.

2015-07-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: oops, do not re-run first Q-d action.

	gaiag: run: (run-trigger): move action-if to next-trigger.

2015-07-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: refactor handle-return.

	gaiag: run: decruft.

	gaiag: run: weird Q > 1 check fixes TauEmitMultiple.

	test: run: complete more traces.

2015-07-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: refactor action.

	gaiag: run: refactor on.

2015-07-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: ignore a trigger's parameters.

2015-07-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: unit test.

	comment-out misguided TauEmitMultiple hack

	indent region

	gaiag: run: handle multiple out/q events on single modeling.

2015-07-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: TauEmitMultiple: snip into 3 traces.

	gaiag: run: illegal is an error, even if it matches.

	test: run: thinko, remove -c.
	1df844f1 (Jan Nieuwenhuizen 2015-06-28 12:55:22 +0200 31) 	$(DZN) --verbose run -c -m $(LOCAL_SUT) -t $(1) $(LOCAL_DZN_TOP) | grep '^trace:' | sed s,trace:,, | tr ',' '\n' | (grep -Ev '^ *$$$$'||:) > $(CDIR)baseline/$(LOCAL_NAME)/$(LOCAL_LANGUAGE)/$(notdir $(1))

2015-07-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: fix deadlock in tauemitsingle by changing optional to inevitable.

2015-07-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: QTriggerModeling: snip traces into parts.

	test: Simpleint2: not performed by component.

2015-07-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: add state updates to [json]trace.

	webapp/gaiag: run: cleanup json format / dzn run representation.

	gaiag: run: prune also modeling actions, fixes eligible events.

	gaiag: run: prune modeling events without progress. Fixes NonDetHiddenTransition.

	gaiag: run: remove bit-rotted model-checker for now.

	gaiag/RUN: update status report

	gaiag: run: consider action by modeling from Component. Fixes RequiredOut/DataVariables.

	test: run: RequiredOut.dzn: isolate feature from DataVariables.

	add reply_reorder to run.sh

	test: run: complete reply_reorder's trace.

2015-07-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: only allow interleaving of modeling events at top level.

	test: move OutEventSetReply to bugs: not well-formed.

	gaiag: run: prune run-interfaces. Better performance on Handle triangle.

	gaiag: evaluate: (eval-expression): remove inadvertedly added catch-all, complete arithmetic.

	test: QTriggerModeling: more traces.

	test: regression: simple test for multiple Q'd events.

	gaiag: run: handle multiple Q'ed events.

2015-07-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: run: (eligible): disable too naive livelocking implementation.

2015-07-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: fixes for List.

2015-07-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	test: add simplified List example.

2015-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: (var!): bugfix, helps SynchronousLivelock.

	gaiag: run: handle unspecified. Helps SynchronousLivelock.dzn.

	gaiag: run: bugfix: do not [re-]trace provided out actions.

	gaiag: run: Handle illegal.

2015-07-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: disable debugging.

	gaiag: run: fix next-action condition for interfaces.

	gaiag: run: (transfer-interface-info): factor out.

2015-07-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: Q: recover from impact of clue-bat.

2015-07-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: disable debugging.

	gaiag: run: allow 200,000 iterations [WAS: 100,000]. Fixes triangle/Handle.1

	gaiag: run: communicate interface action reply values to component.

	gaiag: run: oops, do not junk non-det interface infos.

	gaiag: run: weird fix/workaround for ctrl.return in robot.

	gaiag: run: resurrect eligible, add error trail to json.

2015-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: resurrect interface-only non-determisism.

2015-07-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: refactor some (map (lambda (info)) infos).

	gaiag: run: refactor reply/return.

	gaiag: run: cleanups: remove comments, <info>.

	gaiag: run: do not add return to error trace.

	gaiag: run: complete interface error traces with component trace.

2015-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: valued returns through interface.

2015-06-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: Q.

	gaiag: run: refactor action.

2015-06-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: refactor on.

	gaiag: run: trace interface upon deq

	gaiag: run: only consider inevitable/optional if present in model.

	gaiag: run: use instance name for interface state [WAS: model type].

2015-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: further work. test/run.sh succeeds again.

2015-06-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: retain error state from interface runs. Fixes 2nd Alarm trace.

	gaiag: run: also retain component's port in interface actions. Fixes modeling.dzn.

	gaiag: run: json: avoid plain returns in component trace.

	gaiag: run: allow more iterations. We need > 10,000 for Handle?

	gaiag: run: set port for modelling event. Fixes alarm.

	gaiag: run: do not consider optional/inevitable upon deq.

	gaiag: run: first stab at eligible.

	webapp/gaiag: run: robustify against null input.

	gaiag: run: prepend actual trigger for required out to trace too.

	gaiag: run: info/state refactor fix.

	gaiag: run: plain function call fix.

	gaiag: run: on event/trigger hack.

	gaiag: evaluate: handle data expressions, handle unspecified.

	gaiag: run: pessimist+fix on a,b,c ==> B.

	revert to optimist< for now.

	gaiag: run: adopt pessimist strategy for result trace. OOPS this helps NonDet2 but breaks alarm again

	gaiag: run: (symbol->literal): robustify against wrong input.

	gaiag: run: fix for function call.

	gaiag: run: annotate modelling returns for easier removal.

	gaiag: synthesize modelling events.

2015-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: depth1st me harder.

2015-06-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: thinko: do not remove matched ON from error trace.

	gaiag: run: include non-executed trail as trace points.

	gaiag: run: do not concatenate separate result traces.

	gaiag: run: reject trace if reply value does not match.

2015-06-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag/RUN: add my emacs gaiag -l run compilation development commands

2015-06-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: rename from simulate, toplevel and trail-eating cleanups.

	gaiag: simulate: refactor trace accumulation.

	gaiag: simulate: <info>: add :error slot.

	gaiag: simulate: refactor next-*; do not modify info.

	gaiag: simulate: add q.

2015-06-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	test/sim.sh: both alarm traces...with extra SENSOR.RETURN?

	gaiag: simulate: evaluate: resurrect handling of [otherwise].

	gaiag: simulate: avoid tracing interface for provided-out, required in-events.

	gaiag: simulate: less port hax0r.

	gaiag: simulate: interface skip non-matching actions?...

	gaiag: simulate: paul's deep recursion.

	gaiag: simulate: interface tracing for action.

2015-07-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run: json-trace.

2015-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: simulate: support running on goops.

2015-07-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: simulate: eval-function-expression: handle non-determinism.

2015-06-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: simulate: non-determinism and interface tracing.

	gaiag: simulate: make interface states local.

	gaiag: simulate: make trail local.

2015-06-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: simulate: first step to introduce non-determinism.

	gaiag: json-trace: copy state in all messages.

	gaiag: simulate: valued return.

	gaiag: simulate: re-implement return.

2015-06-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: simulate: avoid non-executed declarative statements from trace.

2015-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: delete Alarm.trace.4: not performed by component.

	test: run: import most success tests and traces from seqdiag.

2015-06-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: run: baseline update: complete all traces.

2015-07-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops/list: (om:declarative?): list of declaratives is also declarative.

	gaiag: om: (is-a?): <compound> is an ast.

2015-07-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: GOOPS backend updates.

2015-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: misc: (eq??, equal??): add.

	gaiag: misc: (pair??): add.

2015-07-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: fix duplicate defined reply slots.

2015-07-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: fix duplicate defined reply slots.

2015-07-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: use dezyne: prefix for dezyne classes.

	gaiag: goops: export <accessor>.

	gaiag: code: goops: main: grok event with data parameters.

2015-07-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: parse: grok negative integers.

2015-07-23  Ladislau Posta  <ladislau.posta@verum.com>

	extend the GarageDoorControl example with a system specification which leads to taking it out from the code generation part of testing

2015-07-22  Rob Wieringa  <Rob.Wieringa@verum.com>

	Wellformedness: fix tail recursion check

2015-07-21  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	system view: fix issue with text labels for safari; clean-up

	state diagram: fix issue with multiple actions on trigger

2015-07-14  Rob Wieringa  <Rob.Wieringa@verum.com>

	rename 'asdgenerator' to 'generate'

2015-07-13  Ladislau Posta  <ladislau.posta@verum.com>

	add the garage door example with errors to the test set and to published examples

2015-07-13  Rob Wieringa  <Rob.Wieringa@verum.com>

	WF check test: add check for cyclic bindings

2015-07-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "test: run: baseline update: complete all traces."
	This reverts commit 1df844f118d49ceb5e1328b52d0f07f48c4fd078.

	Revert "test: run: import most success tests and traces from seqdiag."
	This reverts commit 92bb1b634bbfd5363bc08ed706534284a044016e.

	Revert "test: delete Alarm.trace.4: not performed by component."
	This reverts commit c86706c7714db7c0ed9a023df3c2883057faf8cb.

2015-06-26  Rob Wieringa  <Rob.Wieringa@verum.com>

	Parser test: in messages add single quotes around user names

2015-07-08  Ladislau Posta  <ladislau.posta@verum.com>

	add the GarageDoor example to the test set and change description for the StartDevices example

2015-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: delete Alarm.trace.4: not performed by component.

	test: run: import most success tests and traces from seqdiag.

2015-06-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: run: baseline update: complete all traces.

2015-07-03  Henk Katerberg  <henk.katerberg@yahoo.com>

	interpreter: simplify backintrace

2015-07-02  Ladislau Posta  <ladislau.posta@verum.com>

	change to version 1.0.1

2015-06-30  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	bumped version to 1.0.0

	test: limit triangle test to 30

2015-06-30  Henk Katerberg  <henk.katerberg@yahoo.com>

	unlimited triangle testing, ignoring triangle errors in simulator

2015-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: update baseline.

2015-06-24  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	verify: change wording of verification failures

	change version to 0.9.0 and supported versions to 0.9.* and 0.3.*

2015-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: add two scriptable zoho bugs.

2015-06-23  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	lego: fix verification error of Conveyor

	examples: change purpose of SensorMultiplexer

	fix issue with combined on statements

2015-06-23  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	server: verify: show the sequence diagram pertaining to the model with the verification problem.

2015-06-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	webapp: examples: update names and descriptions.

2015-06-22  Maarten van de Waarsenburg  <maarten.van.de.waarsenburg@verum.com>

	Replaced tabs by spaces, indented by 2

2015-06-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	webapp: add descriptions to examples.

	webapp: server: list-examples: add description.

2015-06-22  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: fix (unit) tests by updating reference output for interface livelock and type restricted replies in the component.

	gaiag: csp: limit reply values to their declared type, fixes 6834.

2015-06-19  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	traces: make generated traces consistent with traces of code

2015-06-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: csp: success if no models given, unless -m MODEL is used.

2015-06-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: lego: disable for java7.

2015-06-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: main: add relaxed? option. lego: use almost-generated mains.

	test: java/cs: run lego.project. Cleanups.

	test: goops: run lego.project.

	test: lego.project: preparations for java, cs and goops.

	test: javascript: run lego.project.

	test: python: run lego.project.

2015-06-18  Ladislau Posta  <ladislau.posta@verum.com>

	remove additional components and system from StartControl.dzn

	remove additional components and system from IllegalBehaviour.dzn

	change the component names in the IllegalBehaviour Dezyne example to not conflict with the other names in teh project

	replace the start devices example with a non failing set of models and add additional clarifications and system components to increase expressivity of the example

2015-06-17  Ladislau Posta  <ladislau.posta@verum.com>

	fix trace problem caused by a rename in ReturnValues

	fix another trace file for ReturnValues

	fix baseline for ReturnValues

	fix some typos in one of the examples

2015-06-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: remove modeling event based interface livelock.

2015-06-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: runtime fixes, generated-main fixes; closes triangle.

	gaiag: table: retain location on empty compounds.

2015-06-17  Rob Wieringa  <Rob.Wieringa@verum.com>

	examples: update comments and some style issues

	examples: update comments and some style issues

2015-06-16  Ladislau Posta  <ladislau.posta@verum.com>

	add guidelines and main to the Camera project, change init-fs to take .txt and .cc files in the DB and remove superfluous camera.pdf file

2015-06-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: include from standalone test project.

	gaiag: csp: move nep*ref.csp to baseline.

	gaiag: json-table: remove callbacks from component data.

	VERSION: the one version.

	gaiag: code: fix for local-enum of global type field sugar.

2015-06-12  Henk Katerberg  <henk.katerberg@yahoo.com>

	interpreter: mark synchronization messages in JSON execution trace

2015-06-11  Henk Katerberg  <henk.katerberg@yahoo.com>

	triangle test c++ main generator: enable synchronous out events

2015-06-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: csp: remove <context>, <csp-*> and ast-transform-.

2015-06-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: csp: update tests and baseline.

2015-06-12  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	disable range check on initializers for members (now done in csp)

	add range check to all processes

2015-06-11  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add range check on integers improve indentation

	goodbye combinators; so long and thanx for all the fish

	fix issues with optional (choas dropped out)

2015-06-09  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	change normal call to shortcutted call if last statement of function

2015-06-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: update locals in compound. Fixes sugar.

2015-06-08  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	fix tail rescursion

	outline continuations definitions

2015-06-05  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add first version of def/undef

2015-06-04  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add parameters on proc's

2015-06-05  Jan Nieuwenhuizen  <jan@avatar.nl>

	csp: prepare for 'def: ->string: eat ('def ...), add def?, undef.

2015-06-04  Jan Nieuwenhuizen  <jan@avatar.nl>

	om:member-names call fix

2015-06-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: fixes after complicated rebase.

	fixup parameters.

2015-06-01  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	split state tuple in separate channels

2015-05-29  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	fix many issues

2015-05-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: use aliased on-parameter name as new local variable. Fixes asdgenerator mangled data parameter assignment purging.

	csp: fix for purge data and modeling events.

	csp: purge data parameters harder. Fixes Dataparam.

2015-05-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: arguments thinko.

2015-05-27  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	try adding locals inspection

	fix some extern issues

2015-05-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: ignore <extern> on functions.

	csp: generate nexpextref.csp

2015-05-27  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	update nepext ref for csp

	add what I did yesterday

2015-05-26  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	added many staments and fixed some

2015-05-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: add return type for function return.

2015-05-26  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add some ()'s change some let's order

2015-05-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: less naive prefixing of model name. Fixes Alarm.

2015-05-25  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add csp-on IG' place get global state at correct place

2015-05-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: add some enum scoping.

2015-05-25  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add illegal fix issue missing () add "bool" as type

2015-05-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	generate nepext.csp -- similar to nepextref.csp but reordered, factored template code out into both.csp.scm.

2015-05-22  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add ref for nepext.dzn moved call_return and glob back to interface and component template

2015-05-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	interface-enum me harder.

2015-05-22  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add initial support component add example nepext.dzn

2015-05-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: also interfaces' enums

	csp: enum fixors

2015-05-22  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add examples/nep.dzn

	add reply

2015-05-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: add within function list stuffx0r

	use actual members/parameters in statements.

	gaiag: csp: add global.

2015-05-22  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add glob.set/get

	n.dzn example

	add globals

2015-05-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: csp: multiple functions pipe fix.

	csp: functions: whitespace/newline.

	rec: add functions, parameter[s/less].

	gaiag: csp: generate some plumbing for functions.

2015-05-21  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	improve calls add tail recursives call

2015-05-20  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add wait for return to csp-call

	add manual translation of rec.dzn

2015-05-19  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add first version of new csp

2015-06-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table: simplify top level statement too.

	gaiag: table: int as state variable.

2015-06-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table: bool as state variable.

2015-06-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table: make compounds clickable.

2015-06-01  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: add c++03.

2015-06-10  Henk Katerberg  <henk.katerberg@yahoo.com>

	triangle test generator: fix valued returns for cs test infrastructure

2015-06-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table-state: do not aggregate ons. Fixes event-clickability.

	gaiag: table-state: retain trigger locations.

	gaiag: table-state: retain source properties.

2015-06-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	webapp: move /examples, /runtime into /share. Fixes webapp/test.sh, tarball.

2015-05-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	remove redundant const causing warning.

2015-06-05  Jan Nieuwenhuizen  <jan@avatar.nl>

	remove debug printing.

	gaiag: new subint syntax.

	gaiag: remove = from extern.

2015-06-01  Rob Wieringa  <Rob.Wieringa@verum.com>

	language: change syntax of extern and subint

	language: change syntax of extern

2015-06-05  Jan Nieuwenhuizen  <jan@avatar.nl>

	gaiag: break <ast> loop in ->symbol. Fixes json for camera.

2015-06-04  Jan Nieuwenhuizen  <jan@avatar.nl>

	gaiag: on-events are different when argument aliases differ.

2015-06-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table: fix click on single statement.

	gaiag: fixes for event table json.

2015-06-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: pretty: parentheses on events; except in interface behaviour.

2015-05-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: run with goops or plain lists.

	gaiag: c: remove define-method.

	gaiag: c++: remove define-method.

	gaiag: code: remove define-method.

2015-05-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: junk records; run same code on goops and list.

	gaiag: script fixes.

	gaiag: norm: preserve location on compound.

2015-05-29  Rob Wieringa  <Rob.Wieringa@verum.com>

	language: make parentheses requires in event declaration

2015-05-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	guile: build location.go first. Fixes deployment.

	Oops: undo g/gr filtering. Fixes deployment.

2015-05-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: location cleanups.

	gaiag: read input from /dev/stdin [-].

	gaiag: norm-event: avoid contstructing duplicate or clauses.

	gaiag: table-state: generic expression simplify.

2015-05-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	table-state/event: use normalize and simplify.

	gaiag: norm-state: remove define-method.

	gaiag: resolve: fixes for plain guile.

	gaiag: check: do not autocompile, use build cache.

	gaiag: run goops (./gaiag), record (./gr) and list (./g) alongside eachother.

2015-05-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Undo (list ()) experiment.

	g: use (list (elements)).

2015-05-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: animate: remove define-method.

2015-05-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table-event: remove define-method.

2015-05-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: norm-event: remove define-method.

	gaiag: pretty: remove define-method.

	gaiag: norm: remove define-method.

	gaiag: table-state: remove define-method.

2015-05-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: json-table: remove define-method.

2015-05-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	gowig (goops without goops): goops resolver +sed runs without goops.

2015-05-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve: remove define-method.

	g: enum, imported, model reorder for gaiag.

	g: norm: combining guard fixes.

	g: table/pretty: handle imported? retain toplevel types and system.

2015-05-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	g: non-goops table-state, table-event.

2015-05-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag/asdgenerator: use (event, (port, (enum name scope, (fields.

2015-05-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: norm-event: thinko.

	gaiag: table: handle components without behaviour.

	gaiag: norm: combining guard fixes.

	gaiag: pretty: handle *global*.

	gaiag: table: remove initial harder.

	gaiag: table: retain toplevel types and system.

2015-05-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table-state: use <state>.<Initial>. Fixes clashing `state' variable substitution.

	gaiag: pretty: handle injected, expressions.

	gaiag: pretty: whitespace nits.

	gaiag: table-state, table-event: fix for systems.

	gaiag: table-event: retain model content.

	gaiag: pretty: do not add extra braces.

	gaiag: table: stable ordering of models.

	json-table: !expression fix.

2015-05-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: remove config hax0r.

2015-05-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table-event: handle inner guards in compound.

	gaiag: table-event: handle inner guards, retain otherwise.

	gaiag: table-event, table-state: output transformed dezyne code.

	gaiag: table-event: use table-state result.

	gaiag: table-event: new table; table-state: rename from table.

	gaiag: norm-event: new normal form.

	gaiag: pretty: remove gratituous parens on or.

	gaiag: display: fix display of scope in types and fields in enum.

2015-05-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: cs: injection fix.

	gaiag: javascript: add locator, support injection.

	gaiag: cs: add locator, support injection.

	gaiag: java: Locator fix.

	gaiag: java: add locator, support injection.

2015-05-05  Rob Wieringa  <Rob.Wieringa@verum.com>

	add 'guild' to configuation

2015-05-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: cleanup injection.

	gaiag: goops: add locator, support injection.

	gaiag: python: add locator, support injection.

	configure: add check for boost/algorithm/string.hpp. Do we need this?!

2015-05-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	README: document make promote.

	configure: add check for mono.

2015-05-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: cs: updates for *global*.

	gaiag: cs: grok extern variable without default value.

	gaiag: cs: add illegal handler.

	gaiag: cs: main: valued replies.

2015-05-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: cs: update for global, new generic main.

	gaiag: cs: rename from mono.

2015-04-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: mono: return value and dataparams.

	gaiag: mono: generate.

	gaiag: runtime: mono: Initial.

2015-05-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: remove comments.

	gaiag: util: use gom:types, remove enum, int, extern duplication.

	gaiag: update baseline.

	gaiag: resurrect c-alarm.

	gaiag: table: use first enum variable.

2015-04-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: introduce *global* scope.

	global enum cleanup: c++: use global_, global::.

	gaiag: resolve type/events cleanup.

	webapp: client: parse.jison: up to par with gaiag parser.

	gaiag: parser cleanup.

2015-04-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: update parser and backends for global types.

2015-04-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	configure: add check-pkg-config.

	configure: add pkg-config.

2015-04-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	goops: runtime: bugfix.

	runtime: main: use log_in/log_out (was log_void). Removes out.return from trace.

	runtime: add config prototype.

	python: runtime: add illegal handler.

	javascript: runtime: add illegal handler.

	java: runtime: add illegal handler.

	goops: runtime: add illegal handler.

	c: runtime: add illegal handler.

	c++: runtime: add illegal handler.

	gaiag: c++: locator: use struct throughout. Silences clang.

2015-04-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: java: main: implement valued returns.

2015-04-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: main: implement valued replies.

	gaiag: goops: main: implement valued replies.

	gaiag: c++: main: refactor.

	gaiag: javascript: main: refactor.

2015-04-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: python: main: log returns, read reply values.

	gaiag: javascript: main: log returns, read reply values.

	gaiag: c++: main: log returns, read reply values.

2015-04-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add ./configure, update README.

2015-04-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: main: only return reply if matches enum.

2015-04-16  Jan Nieuwenhuizen  <jan@avatar.nl>

	gaiag: c++: main: read cin for valued replies.

	gaiag: python: use value class V.

	gaiag: python: move runtime info into runtime.Info ().

2015-04-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: main: all languages: return first value of enum for valued returns.

2015-04-15  Jan Nieuwenhuizen  <jan@avatar.nl>

	makefile: fixes for targets regression, test-suite.

2015-04-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	make check: only unit tests, make regression: use test suite.

	Add README, new target: make help, test and dezyne-server cleanups.

2015-04-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: update baseline.

	gaiag: code: init-value fixes.

	gaiag: java: main: fix for Reply.dzn.

2015-04-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	webapp: client: parse.jison: parser.

2015-04-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: resolve: (resolve-mixed): remove.

2015-04-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: language/dezyne/parse.scm: cleanup.

2015-04-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: java: update baseline.

2015-04-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: javascript: tracing corner case. Fixes dataparam.

2015-04-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: java: handle valued calls and parameters in main.

	Revert "gaiag: java: use getters/setters for ports."
	This reverts commit ec101c9d1f8a2b82620475f9fee11de5a2144f00.

	gaiag: java: use getters/setters for ports.

	gaiag: java: suppress warning.

	gaiag: java: return values and dataparams.

	gaiag: java: have illegal throw; WAS: assert, disabled by default.

2015-04-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: java: implement runtime.

	gaiag: java: add runtime data to components.

	gaiag: java: start fire-event main.

2015-04-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: declare ports in binding order, fixes c++ member initializer list warnings.

2015-04-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: update baseline.

	gaiag: code: fix for FIELD of local enum.

2015-04-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: main: javascript, python fill-event cleanup.

	gaiag: goops: update baseline.

	gaiag: goops: support data parameters.

	gaiag: goops: update baseline.

	gaiag: goops: fixes for goops-alarm.

	gaiag: goops: fully functional runtime.

	gaiag: goops: implement c++-like tracing.

2015-04-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: goops: add initial tracing.

	gaiag: goops: use class for interface's ports.

	gaiag: goops: start runtime.

	gaiag: javascript: cleanup fill_event_map. Fixes code trace equivalence.

	gaiag: python: cleanup fill_event_map. Fixes code trace equivalence.

	gaiag: c: cleanup fill_event_map.

	gaiag: c++: cleanup fill_event_map.

	gaiag: code: match c++ trace output in c, javascript, python.

2015-04-09  Buildmaster  <buildmaster@build3.oban.verum.local>

	webapp: use dzn client from source tree.

2015-04-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c, c++, javascript, python: non-strict fire-event in main.

2015-04-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	java: updates for new test framework.

	goops: updates for new test framework.

	gaiag: remove obsolete snippets.

	gaiag: c++: fix code, choice and glue targets.

	gaiag: code: update baseline.

	gaiag: python: fill event map in generated main.

	gaiag: javascript: fill event map in generated main.

	webapp: update to c,c++ generated main.

	gaiag: c: fill event map in generated main.

2015-04-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: fill event map in generated main.

2015-04-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	runtime: makefile: update for generic events. Fixes webapp/test.sh.

	gaiag: c++: TEST_EVENT: do not overwrite earlier events. Fixes lego ctrl.calibrate.

	gaiag: python: fire events to components.

	gaiag: javascript: fire events to components.

	webapp: client: support javascript.

	gaiag: c++: TEST_EVENTS: support out-parameters.

2015-04-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: runtime: c++: merge old and new generic main.

	gaiag: c++: fire events to components.

2015-04-02  Maarten van de Waarsenburg  <maarten.van.de.waarsenburg@verum.com>

	Update c++alarm baseline

2015-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: update baseline.

	gaiag: c++: update glue for new runtime.

	gaiag-check: fix target.

	gaiag: runtime: move everyting from webapp.

	gaiag: runtime: move bits from webapp.

	gaiag: c++: runtime: add dump_tree().

	gaiag: python: add runtime instance to components.

	gaiag: python: add flushes to runtime.

	gaiag: javascript: add flushes to runtime.

	gaiag: runtime: c: fix locator_clone. Allows lego to run.

2015-03-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: set performs_flush = true for dezyne components.

2015-04-01  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	runtime c++: added dzn_ to meta and rt to avoid nameclashes

2015-03-31  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	runtime c: rename fields meta and sub to avoid nameclashes

2015-03-30  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	runtime c: add performs_flush status bit

	runtime c++: add performs_flush status bit

2015-03-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: initialize all ports.

2015-03-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	rename makeutils to make.

2015-03-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "gaiag: code: rename parameters in-line, remove alias."
	This reverts commit 6b275932da222b109c059de3626fe30b2ea0ada4.

	Revert "gaiag: code: alias: parameter alias thinko. Fixes lego."
	This reverts commit d443ed340e45f6ac38194daabc3196de188acfd5.

	gaiag: code: alias: parameter alias thinko. Fixes lego.

	gaiag: update baseline.

	gaiag: makefile update.

	gaiag: code: rename parameters in-line, remove alias.

2015-03-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: python: add dataparam to baseline.

	python: dataparam: implement.

	gaiag: python: add runtime.

	gaiag: javascript: place events in recipient queue iso sender.

	gaiag: c++: runtime: throw iso assert.

	gaiag: c: remove map.

	gaiag: c: place events in recipient queue iso sender.

2015-03-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: add tracing.

2015-03-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: move tracing to bindings.

	gaiag: c: move runtime_defer into binding.

2015-03-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: dataparam.c: go through system.

2015-03-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: runtime: add handle_event inside defer. Fixes semantics of Alarm with Adaptor.

	Revert "c: add runtime_comp struct"

	Revert "c: allow for static queues"

	Revert "runtime c: clean up + fix queue issue if length 1"

	gaiag: javascript: update baseline.

	gaiag: javascript: further data parameter cleanup.

2015-03-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: remove runtime from baseline.

	gaiag: c++: fix alarm by adding flush.

2015-03-24  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	runtime c++: move handle inside flush iso argument of defer

	runtime c++: place events in recipient queue iso sender

2015-03-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: javascript: update baseline.

	gaiag: javascript: cleanup data parameters.

	gaiag: code: update baseline.

2015-03-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: javascript: add tracing.

	gaiag: javascript: add runtime.

2015-03-12  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: update baseline.

2015-03-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: remove redundant name.

2015-03-12  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: runtime: fix flush issue in valued_helper.

	gaiag: c++: add component type to meta.

	gaiag: c++: runtime: always handle deferred events. Fixes lego/Adaptor-Alarm.

	gaiag: c++: runtime: log component path.

2015-03-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: update baseline.

	gaiag: c++: check bindings.

	gaiag: c++: update baseline.

	gaiag: c++: use std::string. Renders initializations in main optional.

2015-03-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: update baseline.

	gaiag: c++: remove gratituous std::function and this->.

	gaiag: code: introduce string-if.

	gaiag: c++: update baseline.

	gaiag: c++: cleanup tracing.

2015-03-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: cleanup port meta.

	gaiag: c++: update baseline.

2015-03-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c++: cleanup bindings. Depends on c++11.

2015-03-09  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	system view: disallow editing diagram

	runtime c: clean up + fix queue issue if length 1

2015-02-23  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	c: allow for static queues

2015-02-18  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	c: add runtime_comp struct

2015-03-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: javascript: fix dataparam.

	gaiag: c++: check: add c++-choice.

	gaiag: update baseline.

	gaiag: c++: fix connect/defer for dataparam.

2015-02-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: proper meta object initialisation.

2015-02-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: move runtime_defer to binding.

	gaiag: c++: add tracing for returns.

2015-03-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: update traces.

	gaiag: c: fix out parameter for function call.

2015-02-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c/c++: update baseline.

	gaiag: dataparam fix signatures of out events.

2015-02-26  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	runtime c++: fix flush issue

	runtime c: fix flush issue

	runtime c++: allow for mixing with runtime c

2015-02-18  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	c: add runtime_comp struct

2015-02-10  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add own malloc and calloc implementation

2015-02-24  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: move tracing into binding, add annotation.

2015-02-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: replace bind with c++-11 lambda. Fixes Dataparam.dzn proxy.

	gaiag: resolve: pass parameter direction. Fixes out parameters on functions.

2015-02-24  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: replace generic connect with specific asserting connect.

2015-02-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: baseline update.

	gaiag: code: fix guard filter bug. Fixes alarm trace with normstate.

	baseline update.

	gaiag: code: robustification; work without normstate in most cases.

	gaiag: update baseline.

	gaiag: code: use compound for top level guards. Fixes goops.

	gaiag: code: filter guards by event.

2015-02-19  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	example generating broken c++.

2015-02-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: add regression tests.

	gaiag: code: generate either top level guards or ons.

	gaiag: code: separate toplevel guards and ons.

	gaiag: code: on: respect compound flag.

	gaiag: code: apply normstate. Fixes/works around multiple top ons.

	gom: map: (clone): retain-source-properties. Fixes imported? after normstate.

2015-02-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: preparations for two-top-ons.

	gaiag: code: support [guard][guard].

	gaiag: grok missing top level guard.

2015-01-30  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: allow a modeling event to invisibly change state.

2015-01-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: static type me harder. Thanks Paul!

	gaiag: javascript: implement data parameters.

	gaiag: table: add regression tests.

2015-01-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: table: only dissolve guards from declarative sequence. Fixes z#6793.

	gaiag: table: ignore not-state-enum field sugar. Fixes z#6784.

	gaiag: table: handle otherwise as expression. Fixes z#6783.

	gaiag: table: let declarative compounds dissolve. Fixes z#6781.

	gaiag: table: handle recursive functions properly. Removes STATE.<unkown>s.

	gaiag: table: next state fix for if/then. Fixes z#6791.

	gaiag: table: fix negate then.

	gaiag: table: do not sort on clauses. Fixes z#6777.

	gaiag: table: retain-source-properties harder. Fixes click on if.

	gaiag: fix annotate tests.

	gaiag: fix annotate-locations; bring under test.

	move webdemo/examples to webapp/server/commands/examples.

2015-01-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: move malloc to runtime.

	gaiag: ast: cleanup imported?

	gaiag: parse: set source location for systems.

2015-01-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: handle imported? models, remove --file flag.

	gaiag: c/c++: refactor.

	gaiag: c++: add glue-Component.cc test.

	webapp: make runtime available through ls /runtime.

2015-01-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: update baseline.

2015-01-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	c runtime: rm callback.h.

	csp: remove false positive livelock case.

	c runtime: rm callback.h.

2015-01-23  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c: rename internal, helper.

2015-01-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: remove gratituous semicolons for extern declarations.

	gaiag: regression: add Choice.dzn.

2015-01-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: functions: handle in-event out parameters and out events.

2015-01-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: update baseline.

	c runtime: make ISO conformant (fixes pedantic warnings).

	gaiag: goops: field-expression: update fetching member variable.

	examples: add camera (C & C++).

	c runtime: fix map_iterate.

2015-01-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: compile full regression suite.

	gaiag: c: binary operators.

	gaiag: c: support functions. Fixes compiling camera.

2015-01-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: use port forwarding.

2015-01-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: implement injection.

2015-01-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: data parameters.

2015-01-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	Dataparam.dzn: avoid warnings in generated code.

	Update Dataparam.dzn: rewrite unfixable $$.

2015-01-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: code: identify parameter assignment. Fixes C out-parameter assign.

2015-01-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: csp: fix local sugar. add test, regression, enable in OK_NOK.dzn.

2015-01-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: updates for enum, reply, valued action, members.

	gaiag: c++: make all member functions private.

	gaiag: c: replace libffcall1 closures by named _PORT_EVENT wrappers.

2015-01-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	gaiag: c: runtime: implement.

2015-01-09  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	examples: rename lopw.

	OK_NOK: remove sugar until fixed.

2015-01-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	webapp: resurrect codegen.

	gaiag: c: done, for alarm.

	checkpoint: interface, component done

	gaiag: c: initial generator, copy of c++.

	gaiag: make: add c-alarm, c-regression.

	c update

	gaiag: add c baseline and runtime.

	gaiag: resurrect make check. FIXME: webdemo/examples/OK_NOK.dzn disabled.

2014-12-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	make/csp: produce lts.

	make: fix check.

	semantics: add lts target for webdemo examples.

2014-12-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	webdemo: cloud: enable if authenticated.

2014-12-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: table: if no models found, return (#,(hash)). Fixes `state tables' for systems.

2014-12-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: table: -f, --file: new option.

2014-12-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	webapp: add database.

2014-12-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: javascript-alarm: resurrect.

2014-12-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	webapp: add cancel.

2014-11-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: table: handle nested compounds.

2014-11-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: table: retain literal otherwise if guard is not collapsed.

2014-11-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: table: annotate otherwise before pushing down on.

	Gaiag: json-table: (->symbol): handle operators. Fixes guard expressions.

2014-11-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: code: remove gratituous compounds, cleanup javascript runtime.

2014-11-19  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	webdemo: running camera example.

	gaiag: update js baseline.

2014-11-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: code: only defer out events. Fixes javascript Alarm.

2014-11-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: java, goops, python: include only once. Fixes check java.

2014-11-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: range check for assignments and variables (no function calls).

	Gaiag: resolve: add range check for int members.

2014-11-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: oops: resurrect make pretty/make check.

	Gaiag: json-table: also add callbacks from non-recursive functions.

	Gaiag: json-table: for interface: provide callbacks for triggers.

2014-11-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: code: javascript and c++ runtime and member assign fix.

	Gaiag: c++: use .hh on runtime.hh, locator.hh.

2014-11-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: pretty: add newline to typedef.

	Gaiag: c++: handle //-comments in map file. Fixes `make cpp' in lopw.

	webdemo: codegen: runnable c++ code download; showcase: AlarmSystem.dzn.

	Gaiag: csp: remove debug printing.

	Gaiag: c++: move dezyne models into namespace dezyne.

	Gaiag: table: bugfix/typo finding first enum variable.

2014-11-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: json-table: analyse functions for next.

	Gaiag: c++: remove component, interpreter namespaces; use dezyne for glue.

	Gaiag: c++: remove {interface,component}-*-c3 naming.

	Gaiag: c++: update glue for I<interface> convention.

2014-11-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	baseline: code: add double_out_on_modeling.

	Gaiag: resolve: add parameter/argument count check.

2014-11-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: tail-call: mark tail calls.

	Gaiag: csp: rewrite ifthenelse_.

	Gaiag: examples/nested.asd: new file.

2014-11-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: webdemo: queue multiple out events before taking the first out.

2014-11-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: synchronize on the end.

2014-11-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: combine all guards in normstate.

2014-11-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: webdemo: merge -l csp and -l asserts to avoid invoking gaiag a second time.

	csp: webdemo: make verification queue size user defined.

2014-11-12  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: update baseline for: csp: rename events ...

2014-11-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	asd-to-dzn: more Gaiag bits.

2014-11-12  Rob Wieringa  <Rob.Wieringa@verum.com>

	asd-to-dzn: include gaiag stuff

2014-11-12  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: rename reply events from port type to port name in deterministic check trace.

2014-11-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	locations fix for ancient guile on 12.04.

	Gaiag: json-table: upon illegal: empty next.

2014-11-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: table: hack for location of guards.

	Gaiag: table: sorted ons.

	Gaiag: (gom compare): collect all (equal?).

	Gaiag: (gom compare): new module.

	Gaiag: csp: add parentheses for if. Fixes examples/regression/ifreply.asd.

2014-11-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: json-table: handle numerics. Fixes LoadUnloadProtocolComp.

	Gaiag: parse/pretty: handle void return.

	Gaiag: pretty: handle extern variable declaration without initial value.

	Gaiag: pretty: handle event parameters.

	Gaiag: pretty: add missing = to extern declaration.

	webdemo: make triggers clickable.

2014-11-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: pretty: if/else: always print compound.

	Gaiag: table: revert adding if/else compounds.

	Gaiag: table: if/else: always compound. Fixes indentation.

	Gaiag: thinko: nonzero exit upon failure.

	Gaiag: pretty: if: remove gratituous newlines.

	Gaiag: table: handle choice. Fixes pauls.asd:IComp.

	Gaiag: json-table: next typo.

	Gaiag: table: collapse adjoining guards.

	Gaiag: json-table: separate-out single guards too.

2014-11-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: table: handle ISiren.

	Gaiag: table: unknown state.

	Gaiag: table: self-transitions and if-branching for next column.

	Gaiag: table: artificial table for behaviour without enum.

	Gaiag: table: bugfix: do not remove empty compounds.

2014-11-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	webdemo: state-table: experimental NEXT.

	Gaiag: table: retain source location of compounds.

	Gaiag: table: evaluate if.

	Gaiag: table: evaluate otherwise.

	Gaiag: table: locations.

2014-11-06  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add choice showcasing example

2014-11-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	webdemo: state-table: new view.

2014-11-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: table: new module. Adds state table output.

2014-11-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: resolve: do not prune imports. Fixes make pretty/make check.

2014-11-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: skip c++ generation for components without a provides port.

	gaiag: c++: support empty argument list (in case of illegal).

	Gaiag: resolve: register interfaces, components, systems. Allows use before define.

	make: remove default.asd from make check.

	make: temporarily disable bareSiliconAlarm.asd.

2014-11-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: remove wellformedness check on empty behaviours.

	csp: empty guarded compound or behaviour compound => STOP

2014-11-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: ast: add and print locations.

	Gaiag: parse: (syntax-error-handler): rename [WAS: syntax-handler]. Fixes warning.

2014-11-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: parse: disallow extern int.

	Gaiag: parse: bool is keyword. Disallows extern bool.

	Gaiag: parse: remove dead code.

2014-11-04  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	fix broken csp-test

2014-11-03  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	CSP: add braces around generated function

2014-10-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: c++: read map from cwd too.

2014-10-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: resolve: strip expression from assign, variable with action.

	Gaiag: parse: allow extern int.

	Gaiag: parse: allow direction on function parameters.

	Gaiag: parse: allow gratituous () on action in component.

2014-10-30  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: c++: handle unspecified value for data variables.

	Gaiag: parse/gom/resolve: handle unspecified value for data variables.

	Gaiag: csp: split modeling events for nondeterministic choice.

	Gaiag: code: handle implied empty statement of nondeterministic choice.

	Gaiag:csp: silence warnings.

2014-10-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: (purge-data): new function.

2014-10-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: examples/regression/dataparam: add function call.

2014-10-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: resolve: (resolve-error): rename [WAS: undefined-error].

	Gaiag: resolve: handle variable hiding event.

2014-10-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: valued function without parameters.

	Gaiag: do not add return for modeling events.

2014-10-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: c++: data parameters.

	Gaiag: c++: data parameters.

2014-10-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: pretty: handle $data$ in argument.

2014-10-28  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: resolve: handle symbols as data values.

2014-10-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: parse: cleanup.

	asdgenerator: include extern definitions and data types.

	Gaiag: parse: add root. Helps OM-parser integration.

	Gaiag: resolve: <data>.

	Gaiag: gom: <data>: new class.

	Gaiag: examples/dataparam.asd: make well-formed.

	Gaiag: examples/Extern.asd: make well-formed.

	Gaiag: parse: handle $data$ properly. Allow as expression. Fixes $0$ etc.

2014-10-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: pretty: <trigger> with <arguments>.

	Gaiag: csp: update for <event> with <signature>.

	Gaiag: code: update for <event> with <signature>.

	Gaiag: pretty: <event> with <signature>.

	Gaiag: resolve: trigger with arguments.

	Gaiag: gom: add <arguments> to <trigger>.

	Gaiag: gom: <event>: replace <type> with <signature>.

	Gaiag: code: <extern>.

	Gaiag: pretty: <extern>.

	Gaiag: resolve: <extern>.

	Gaiag: gom: <extern>: new class.

	Gaiag: examples/arguments.asd: make well-formed.

	Gaiag: parse: allow empty parameter list on event.

	Gaiag: parse: trigger with arguments.

	Gaiag: parse: event parameters.

	Gaiag: parse: extern declaration.

	Gaiag: remove stray cc, hh.

	Gaiag: examples/dataparam.asd: new file.

2014-10-28  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	refactor csp-combinators

2014-10-24  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	Add first rewrite combinators

2014-10-15  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: implement injection.

2014-10-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: add an example to capture completeness and modeling event interaction.

	gaiag: make: remove -update from csp target.

	gaiag: csp: update baseline for completeness.

	gaiag: csp: fix completeness in combination with modeling events.

	gaiag: csp/webdemo: integrate completeness.

	gaiag: make: update baseline and pass make check.

	gaiag: csp: add completeness assert for interface.

	gaiag: csp: add completeness assert for component.

2014-10-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: c++: remove stray blank lines.

	Gaiag: goops: fix !=.

	Gaiag: java: new language.

	Gaiag: javascript: update.

	Gaiag: java: updated baseline by Guillermo.

	Gaiag: baseline/alarm.java: Initial baseline.

	Gaiag: code: prepare for java.

	Gaiag: examples/regression/Reply7.asd: make well-formed.

	Gaiag: javascript: use in, out (WAS: ins, outs).

2014-10-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: add Paul's fail tests to regression.

	Gaiag: parse: handle *, injected.

2014-10-15  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	help Ard-Jan.

2014-09-24  Henk Katerberg  <henk.katerberg@yahoo.com>

	Test asdinterpreter queue handling and add asdinterpreter test to make check

2014-10-14  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: use process-based Q. Fixes WaferStageOutput.

	gaiag: csp: put in and out events on different channels.

2014-10-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: delete duplicate events in component channel declaration.

2014-10-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: remove stray empty map file. Fixes make check on 12.04.

2014-10-13  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: update baseline for new naming convention.

	Gaiag: set PYTHONPATH.

2014-10-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	webdemo: also distribute header.

2014-10-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: make: check: add goops.

2014-10-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: guile-goops: running baseline.

	Gaiag: guile-goops: initial baseline.

	Gaiag: c++: glue mapping.

	Gaiag: c++: document po_ mangling.

	Revert "glue mapping wip"
	This reverts commit 072d54dc9c332745441ee7765b5ea7e25b54b6f2.

	Gaiag: move json base, fixes scm2json.

2014-10-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: coverage: add javascript, python.

	Gaiag: javascript: use === throughout.

	Gaiag: javascript: whitespace nits.

2014-10-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	glue mapping wip

2014-10-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: c++: whitespace fixes.

	Gaiag: make: check: add python.

	Gaiag: make: python-update: speedup.

	Gaiag: make: c++-update: speedup.

	Gaiag: make: check: add javascript.

	Gaiag: code: move ! to template. Fixes Javascript.

	Gaiag: code: move == to template. Fixes Javascript.

	Gaiag: javascript: add missing semicolon.

	Gaiag: make: javascript-update: new target.

	Gaiag: javascript: add missing semicolon.

	Gaiag: javascript: make hacking.

2014-10-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: c++: template cleanup: use (connect-ports).

	Gaiag: c++: template cleanup: use (init-bind).

	Gaiag: c++: template cleanup: use (init-port).

	Gaiag: c++: template cleanup: use (init-instance).

	Gaiag: code: (include-component): new function.

	Gaiag: c++/python: template cleanup: use (define-on) for declarations.

	Gaiag: c++: template cleanup: use (define-function).

	Gaiag: c++: template cleanup: use (define-on).

	Gaiag: c++: template cleanup: use (init-port).

	Gaiag: c++: template cleanup: use (init-member).

	Gaiag: c++: move templates.

	Gaiag: javascript: add missing snippets.

	Gaiag: code: (expression->string): parameterize and, or. Fixes javascript.

	Gaiag: code: (define-function): new function.

	Gaiag: code: (connect-ports): new function.

	Gaiag: code: (init-bind): new function.

	Gaiag: code: (init-instance): new function.

	Gaiag: code: (define-on): new function.

	Gaiag: code: (init-port): new function.

	Gaiag: code: (init-member): new function.

	Gaiag: javascript: declare-enum.

	Gaiag: code: (include-interface): new function.

	Gaiag: javascript: add baselines.

	Gaiag: code: remove dump-output duplication.

	Gaiag: code: remove *:import, *:gom duplication.

	Gaiag: code: remove *-module duplication.

	Gaiag: javascript: interfaces.

	Gaiag: code: (declare-io): new function.

	Gaiag: c++: (statements->string, expression->string, ...): remove.

2014-10-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: fix reply reordering.

	gaiag: csp: capture reply reordering in test.

2014-10-06  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	gaiag: csp: split channels between events and returns.

2014-10-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: remove example with undefined semantics.

	gaiag: make: speedup update.

2014-10-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: python: runnable baseline: cd baseline && python alarm.py.

	Gaiag: c++: (statements->string, expression->string, ...): remove.

2014-10-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: code: remove all pythonisms.

	Gaiag: code: (expression->string): move pythonims to python/snippets.

	Gaiag: code: (bool-expression->string): move pythonims to python/snippets.

	Gaiag: c++/python: (enum->identifier): remove.

	Gaiag: c++/python: (bind-port binding-name): remove.

	Gaiag: code: (->code): move all pythonisms to templates/python/snippets.

	Gaiag: c++: update.

	Gaiag: python: (statements->string): remove.

	Gaiag: code.scm: new module.

	Gaiag: templates/: split to directory per language.

2014-10-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: remove unused combinator.

2014-10-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: python: update baseline.

2014-10-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: test-suite: nitpick for upstream.

2014-10-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	make: fix -C for gaiag.

	asdgenerator: add -M option for mangling.

2014-10-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: resolve: do not cache unresolved goms. Fixes mixing type errors.

2014-10-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: python: cleanup Enum, fix reply.

	Gaiag: python: fixes for member variables, LOPW, and nitpicks.

	Gaiag: python: add functions, integers, run regression test.

	Gaiag: python: running AlarmSystem.

2014-10-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: python: Alarm component.

	Gaiag: python: generate interface/Console.py.

	Gaiag: python: manual baseline for Alarm.

	Initial python spec.

2014-10-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: coverage: resurrect.

	Gaiag: wfc: remove debug printing.

	Gaiag: csp: only use csp-return for non-void returns.

	Gaiag: parse/gom: drop name/type reversal for parameter and variable.

	Gaiag: csp: remove <context-active> and <context-open>.

	Gaiag: csp: gom/goops: <csp-assign>.

	Gaiag: csp: gom/goops <cont>, <context-active>, <context-open>, <skip>.

	Gaiag: -m,--model: new option.

	asdgenerator: scm: only filter on model_name if set. Fixes make check.

2014-10-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	webdemo: add alarm system.

	gaiag: c++: formatting of inherited classes.

2014-10-01  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: add 1st version of queue.

	gaiag: normstate: split single on across multiple ports.

2014-10-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: (csp-tranform): refactor <csp-on>.

	Gaiag: csp: gom/goops: <the-end>.

2014-10-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: gom/goops: <context-vector>.

	Gaiag: csp: gom/goops: <voidreply>.

2014-10-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: wfc: (interface): new function. Interface must have behaviour.

	Gaiag: wfc: add component test.

	Gaiag: parse/gom: retain empty-behaviour/no-behaviour property.

2014-10-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: (ast-transform-return): collapse into one function.

	Gaiag: csp: <csp>: use <context>; refactor <csp-*>.

	Gaiag: csp: gom/goops <context>.

	Gaiag: csp: throw if interface has no behaviour.

	Gaiag: reader: support .asdi extension. Fixes LOPW from new converter.

	Gaiag: resolve: re-enable type checking for signatures and variables.

	Revert "Gaiag: resolve: resolve PORT.enum.field to INTERFACE.enum.field. LOPW hack."
	This reverts commit af4513caef851e138491e31169fe745c4d5eb410.

	Revert "Gaiag: resolve: resolve type PORT.enum to type INTERFACE.enum. LOPW hack."
	This reverts commit 98f921ac43e6bb63121e2d3ca9cecdd3d53e6e06.

	Gaiag: resolve: map predicate thinko. Fixes ChuckAssignment.

	Gaiag: csp: (csp-transform): collapse to one function.

	Gaiag: csp: (ast-transform-): collapse to one function.

	Gaiag: csp: (ast-transform-): toplevel match: <compound>.

2014-09-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: support standalone variable init in if and if-compound.

	Gaiag: c++: support members of interface enum type.

	Gaiag: resolve: handle valued actions disguised as call, var.

2014-09-30  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: AlarmSystem glue.

	Gaiag: csp: handle missing reply in interface.

	Gaiag: wfc: bugfix.

	Gaiag: csp: reply event renaming.

2014-09-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	Undo test throw.

	Remove CH_

2014-09-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: remove prefix-reply?

2014-09-29  Ladislau Posta  <ladislau.posta@verum.com>

	rename another file

2014-09-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	webdemo/gaiag: speedup verify all.

2014-09-26  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	fix issue with deep illegals in if

	fix issue with (de)mangling of enum values

2014-09-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: resolve: resolve type PORT.enum to type INTERFACE.enum. LOPW hack.

	Gaiag: resolve: resolve PORT.enum.field to INTERFACE.enum.field. LOPW hack.

2014-09-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: c++: (c++:import): cut all but public part.

	Gaiag: csp: (csp:import): cut all components.

	Gaiag: resolve: (resolve:import): cut all but public part.

2014-09-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: parse: preserve component and interface location.

	Gaiag: resolve: add simple enum type checks.

	Gaiag: lalr.upstream.scm: Sync with latest upstream patch offering.

2014-09-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: resolve: add simple type checking.

	Gaiag: wfc: enable for all backends.

	Gaiag: wfc: use gom:collect. Eases adding of tests.

	Gaiag: factor-out retain-source-location.

	Gaiag: resolve: report undefined types.

	Gaiag: gom: (gom:interface-enum, gom:interface-integer): add type overloads.

	Gaiag: parse: retain source location of simple type.

	Gaiag: parse: retain location of type.

	Gaiag: examples/regression/Reply5.asd: promote to regression.

	Gaiag: resolve: notice undefined enum fields.

2014-09-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: parse: location for var.

	Gaiag: parse: accept compound function type.

	Gaiag: parse: support compound types in initial variable declaration.

2014-09-23  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: top glue component.

2014-09-22  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: glue for bottom gen1 components.

	gaiag: c++: resurrect alarm_legacy.

2014-09-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: c++: update baseline.

	Gaiag: c++: nits.

	Gaiag: c++: eradicate map-binds.

	Gaiag: c++: eradicate map-instances.

	Gaiag: c++: eradicate map-functions.

	Gaiag: c++: eradicate map-events.

	Gaiag: c++: eradicate map-ports.

	Gaiag: c++: eradicate map-port-events.

	Gaiag: c++: update legacy Alarm for port prefix.

	Gaiag: c++: eradicate map-variables part 2.

	Gaiag: c++: eradicate map-variables part 1.

	Gaiag: c++: add baselines.

	Gaiag: c++: refactoring.

	Gaiag: resolve: refactor using gom:utils.

2014-09-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: c++: prefix event callbacks/calls with `port_'. Fixes LOPW.

	Gaiag: c++: fix provides_twice type mismatch.

	Gaiag: examples/regression/provides_twice.asd: new file.

	Gaiag: examples/regression/requires_twice.asd: new file.

2014-09-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: use gom:find-triggers (WAS: gom:find-events).

	Gaiag: wfc: add checks for component.

	Gaiag: resolve: undefined identifier also for stray symbol.

	Gaiag: parse: type variables and bindings.

	Gaiag: resolve: check for existence of action's event and function.

	Gaiag: resolve/wfc: initial resolve/wfc error framework.

	Gaiag: parse: get start location of assignment just right.

	Gaiag: wfc: add mixing examples.

2014-09-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: wfc: gom/goops.

	Gaiag: remove /mutual_recursion_with_members.csp oopsed in: bde3cb4c.

	Gaiag: simulate: remove global module, retain interface states.

2014-09-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: fix duplicate reply members.

2014-09-19  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: add include guards to system template.

2014-09-18  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: add convenience makefiles.

	Gaiag: pretty: do not drop scope.

	Gaiag: pretty: fix for function return type and expressions.

	Gaiag: c++: enum function return type.

	Gaiag: c++: do not generate cc file for component without behaviour.

	Gaiag: resolve: resolve mixed statements and functions. Bugfix.

	Gaiag: resolve: resolve function call without parameters as expression.

	Gaiag: c++: handle colliding instance type name.

	Gaiag: alarm-legacy: use mangled port identifiers.

	Gaiag: c++: scope enum values.

	Gaiag: c++: eradicate *ast*.

2014-09-17  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: coverage: refactor make.

	Gaiag: c++: resolve enum types. Fixes replies.

	Gaiag: resolve: import interfaces early. Fixes unresolved enum/type problem.

	Gaiag: c++: grok LOPW.

	Gaiag: examples/AlarmComponentSystem.asd: asdgenerator-friendly imports.

	Gaiag: mangle: parameterize and also mangle var.

2014-09-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: resolve: pass locals harder. Fixes var resolving.

2014-09-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: simulate: also simulate into a component's intefaces. WIP.

2014-09-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: mutual recursion with members.

	gaiag: c++: handle reply.

	Gaiag: csp/c++: resolve interfaces harder.

	Gaiag: c++: (dump): type-safe dispatch.

	Gaiag: csp: mutual recursion with members.

2014-09-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: add failing test for recursion with member modifications.

2014-09-16  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: interface component overload.

	Gaiag: csp: interface port overload.

	Gaiag: resolve: de-mix types/events/statements/functions early.

2014-09-15  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: support for standalone interfaces.

	Gaiag: csp: halfway handle pick model with behaviour.

	Gaiag: parse/resolve: allow mixing of functions and statements.

	gaiag: parse/resolve: allow mixing types and events.

2014-09-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: pretty: fix for action assignments.

2014-09-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: eradicate ast:.

	Gaiag: do not export else. Fixes R6RS compliance.

	Gaiag: normstate: add-skip: use gom:map.

	Gaiag: normstate: remove-otherwise: use gom:map.

	Gaiag: normstate: passdown-on: use gom:map.

	Gaiag: normstate: combine-guards: use gom:map.

	Gaiag: normstate: flatten-compound: use gom:map.

	Gaiag: normstate: aggregate-guards: use gom:map.

	Gaiag: normstate: expand-on: use gom:map.

	Gaiag: normstate: aggregate-on: use gom:map.

	Gaiag: resolve: grok '*'.

2014-09-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: resolve: retain location information.

2014-09-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: resolve: gom/goops.

	Gaiag: csp: use interface-enums.

	Gaiag: gom/util: function, interface-enums, gom:register.

	Gaiag: gom: add value class.

	Gaiag: normstate: update use to gom:map*.

	Gaiag: map: introduce simple gom:map.

2014-09-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: gom: grok new style system as component.

2014-09-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: mangle: use gom:clone.

2014-09-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: map: (gom:clone): new function.

2014-09-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: mangle: gom/goops.

	Gaiag: animate: dead code.

	Gaiag: use <gom:port>.

2014-09-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: make: mangle fix.

	Gaiag: map: (gom:map): refactor using dynamic dispatch.

	Gaiag: map: (gom:foreach): new function.

2014-09-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: normstate: fix test.

2014-09-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: util: prototype getters using gom:map.

2014-09-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: normstate: update use to gom:map 2.

	Gaiag: normstate: update use to gom:map.

2014-09-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: gom:map: collapse statements-map into generic full-tree map.

	Gaiag: gom:map: refactor map-statements.

	Gaiag: normstate: add test.

2014-09-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Revert "fix issue with deep illegals in if"
	This reverts commit 72b486ab50a7e2a1abe2c6ad177b8c5f6e0051fc.

	Revert "gaiag: csp: update tests for fix of deep illegals, update refs for enum value fix."
	This reverts commit a55fd314628c73aaca4f29d49537db321e6ea024.

	Revert "webdemo/gaiag: speedup verify all."
	This reverts commit c5eb218d65bee4ae0b72b9acaa7903f5b97bdbd1.

	Revert "gaiag: csp: fix reply channel, replace type of port by name."
	This reverts commit 84c333fd4eea66fb8090bfb96d73239effc731ef.

2014-09-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: fix reply channel, replace type of port by name.

	webdemo/gaiag: speedup verify all.

	gaiag: csp: update tests for fix of deep illegals, update refs for enum value fix.

2014-09-26  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	fix issue with deep illegals in if

2014-09-12  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	webdemo: csp: add behaviour to example to avoid corner case in csp.

2014-09-11  Ladislau Posta  <ladislau.posta@verum.com>

	comments added in the Alarm examples

2014-09-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: add tests for reply bugs.

	Gaiag: csp: add reply combinator. Fixes reply in function, reply using variable.

	Gaiag: reader: error fix.

2014-09-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: comma separate functional call arguments.

	gaiag: resolve: if then else too.

2014-09-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: test-suite: show backtrace upon ERROR.

2014-09-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: resolve: set recursive flag for functions.

	Gaiag: csp: use PF',VF' for tail-recursion with arguments (WAS: PF',VF').

2014-09-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: throw rather than exit. Helps debugging.

	Gaiag: csp: throw if component has no behaviour.

	Gaiag: asserts: no behaviour, no asserts. Aids web: asdConcepts_Behaviour.asd

	Gaiag: pretty: system as component.

	Gaiag: pretty: support systems.

	Gaiag: use <binding> (WAS: <plug>).

2014-09-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: normstate: gom/goops.

	Gaiag: remove usage of ast: in all but csp, mangle, normstate, resolve.

2014-09-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: remove ast: usage from gom.

2014-09-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: fix empty channel in functions.

2014-09-09  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: simplify recursion example; implement/fix empty members and empty locals case.

	gaiag: csp: remove path prefix for fdr and replace fdr3 by fdr2 for refinement.

	gaiag: csp: use P' and PF' consistently in recursion; use skip_; introduce and use illegal_

2014-09-09  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	Gaiag: update baseline for updates of webdemo

2014-09-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: make installation of diffstat optional.

	Gaiag: another guile-2.0.5/Ubuntu 12.05 backwards compatibility. Fixes make check.

2014-09-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: guile-2.0.5/Ubuntu 12.05 backwards compatibility. Fixes webdemo.

	Gaiag: .hudson deployment hack.

	Gaiag: add baseline csp for InterfaceLivelock.asd.

	Gaiag: add baseline csp for ComponentLivelock_TV.asd.

2014-09-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: gom/goops pretty.

	Gaiag: gom/goops <imports>, <import>.

	Gaiag: fix source location of illegal.

	Gaiag: parse: set source locations on return.

	Gaiag: gom: retain source locations.

	Gaiag: resolve: retain source locations.

2014-09-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: simulate: gom/goops. Source locations broken.

2014-09-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: goops/gom <otherwise>.

	Gaiag: use typed otherwise.

2014-09-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: simulate: add state vector tests.

2014-09-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: remove temporary files.

2014-09-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: non-recursion.

2014-09-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: simulate: fixes.

	Gaiag: Add full load path. Fixes local gaiag autocompile.

2014-09-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: update webdemo csp baselines.

	Gaiag: make check: resurrect c++ and pretty.

2014-09-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: recursion: apply combinators in csp.

2014-09-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: recursion: transform combinators from lambdas into curried functions.

2014-09-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: refactor top level make check.

	Gaiag: decruft examples.

	Gaiag: eradicate 'examples/, handle implicit include path.

2014-09-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: restructure directory layout.

2014-09-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: transform expression of local variable assignment.

	Gaiag: use om parser for examples.

	Gaiag: add void function.

	Gaiag: add recursive attribute to function.

	Gaiag: update oided names.

	Gaiag: asserts: cache models. Fixes -l asserts.

	Gaiag: remove dead code.

2014-09-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: pretty: resurrect.

	asdgenerator: scm: remove (action and (trigger for illegal.

	Gaiag: resolve: avoid gratituous root and var.

	Gaiag: c++: handle root and system. c++ om2guile: all test pass.

	Gaiag: rename binding <port> to <plug>. Avoids <port> name conflict.

2014-09-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: om2guile: all tests pass.

2014-09-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: asserts.test: resurrect.

2014-09-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: resolve: handle old style system.

	Gaiag: pretty: update for typed expressions.

	Gaiag: normstate: update for typed expressions.

	Gaiag: resolve: bindings, instances.

	Gaiag: parse: fix precedence of and and or.

	Gaiag: resolve: add root.

	Gaiag: examples/trip.asd: remove group.

	Gaiag: resolve: field for interface enum.

	Gaiag: parse: arguments are expressions.

	Gaiag: resolve: expression and parameter var.

	Gaiag: parse: type top level expression.

	Gaiag: resolve: var for assign.

	Gaiag: examples/trip.asd: add (field.

2014-09-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: gom/goops <binding>.

	Gaiag: parse: allow dot in imports. Enables parsing by OM or Gaiag.

2014-09-01  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: also parse, resolve new style system components.

	Gaiag: parse: fix precedence of comparators.

	Gaiag: asserts: new make target.

	Gaiag: csp: resurrect -l asserts.

	Gaiag: refactor top-level result printing.

	Gaiag: make compare: new target.

2014-08-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: gom/goops <root>.

2014-08-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: c++: gom/goops-ified.

	Gaiag: c++: gom/goops. TODO: binds/instances.

2014-08-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: c++: gom/goops skeleton. TODO statements, expressions.

	Gaiag: gom/goops <literal>.

	Gaiag: resolve: value -> literal for enum constants [scope.]enum.field.

	Gaiag: csp: gom/goops <field>.

	Gaiag: resolve: value -> field for boolean enum field sugar variable.FIELD.

	Gaiag: (gom gom), (gom display): split off gom and display.

	Gaiag: resolve: new module (extracted from csp).

	Gaiag: csp: (ast-transform-): use top level dispatch (WAS: match).

2014-08-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: nits.

2014-08-28  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: gom: fruitless <parameter>, <port> renamer.

	Gaiag: junk <csp-expression>.

	Gaiag: csp: junk 'expression.

	Gaiag: junk value.

	Gaiag: make check passes.

	Gaiag: (gom:import): new function.

	Gaiag: (gom util), (gom ast): new module; split from gom.

	Gaiag: csp: gom/goops <enum>.

2014-08-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: remove ast:event-name, ast:port-name hack.

2014-08-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: gom/goops <interface>, <types>, <events>, <component>, <ports>, <behaviour>

	Gaiag: gom/goops <illegal>.

	Gaiag: gom/goops <reply>.

	Gaiag: gom/goops <variable>.

	Gaiag: gom/goops <function>.

	Gaiag: gom/goops <return>.

	Gaiag: gom/goops <call>.

2014-09-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: fix baselines FD/F.

2014-08-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: csp: replace FD by F.

2014-08-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: make check: add webdemo examples.

	Gaiag: fix for normstate illegal.

	Gaiag: 12.04 (guile-2.0.5) compatibility.

	Gaiag: fix asserts test.

	Gaiag: livelock corner cases.

2014-08-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: (ast-transform-): move <if> to method.

	Gaiag: csp: remove dead code.

2014-08-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: gom: remove csp sugar.

	Gaiag: gom/goops <if>.

	Gaiag: csp: goops/gom <guard>.

	Gaiag: csp: behaviour->csp: also handle interface behaviour.

	Gaiag: gom.test: new module.

	Gaiag: csp: support behaviour without guards.

2014-08-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: handle empty behaviour.

	Gaiag: animate: disable file-line error handling.

	Gaiag: csp: support empty member list.

	Gaiag: gom:find-events rename from gom:find-triggers.

	Gaiag: csp: interface-events: refactor and gommify from interface-triggers.

2014-08-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: goops/gom <on>.

	Gaiag: gom: <triggers> part 2.

2014-08-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	.init.el: add hook for delete-trailing-whitespace.

	Gaiag: csp: resurrect all baselines.

	Gaiag: csp: overlooked sexp trigger. Fixes examples/Reply.asd.

	Revert "gaiag: c++: change Alarm component to turnoff siren on sensor disabled."
	This reverts commit 60fdd35841050e89247aa3a5c4a376223bba41ca.

	Gaiag: normstate: don't reverse guards. Makes second normstate identity.

	Gaiag: csp: resurrect Alarm csp TODO: ordering of guards changed?

	Gaiag: csp: goops/gom <triggers>.

	Gaiag: silence animate stderr output. Helps jump to first error.

2014-08-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: use typed trigger-list everywhere. WIP

	Gaiag: csp: goops/gom compound.

	Gaiag: delete-trailing-whitespace.

	Gaiag: csp: remove getter.

2014-08-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: use ($ <class> slot0 slot1 ...) pattern matching.

	Gaiag: csp: goops/gom assign experiment...partly.

	Gaiag: csp: goops/gom action experiment.

	Gaiag: csp: goops/gom trigger experiment.

2014-08-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: gom: goops classes for Alarm.

	Gaiag: gom.scm: new module.

	Gaiag: use typed signatures and parameters.

	Gaiag: use typed triggers everywhere (WAS: plain symbols in interfaces).

	Gaiag: make c++: resurrect; add new c++03 baseline.

2014-08-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: fetch interface lazily. Allows asd without embedded interface.

2014-08-22  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: removed timer component.

	gaiag: c++: change Alarm component to turnoff siren on sensor disabled.

2014-08-21  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: connected processCBs for sensor to demonstrate callbacks for legacy Alarm

	gaiag: c++: Alarm with behaviour including functions in c++-03.

2014-08-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: legacy glue blueprint.

	gaiag: c++: c3 AlarmSystem compiles, links and runs (no behaviour).

2014-08-19  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: compileable and runnable output for Alarm.asd

2014-08-18  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: c++: wip

2014-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: animate.test: new file.

	argument2: update mangle

2014-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: misc: refactor gulp-file/dump-file.

	Gaiag: mangle experiment for argument2 too.

2014-08-01  Jan Nieuwenhuizen  <jan@avatar.nl>

	Gaiag: coverage: add System, argument2 and wfc.

2014-08-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: remove dead code.

	Gaiag: csp: examples/testBoolean.asd: rename component, add to make check.

	Gaiag: csp: (csp-expression->string): undo special casing for or.

	Gaiag: csp: update tests for ()-change in cb3a26c.

	Gaiag: csp: examples/co_mangle.csp: update for ()-change in cb3a26c.

	Gaiag: c++: examples/expressions.asd: compiles with g++.

	Gaiag: c++: examples/argument2.asd: compiles with g++. Functions!

	Gaiag: c++: function declarations.

	Gaiag: c++: AlarmComponent, AlarmSystem diff with OM reduced to zero.

	Gaiag: csp: examples/mangle.asd: pass fdr.

	Gaiag: mangle: on events and triggers.

	Gaiag: cps: examples/mangle.asd: new test.

2014-08-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	gaiag: asserts: append interface name to compliance cmdline query.

2014-08-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: reorder asserts to gen1 order

2014-08-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: fix tests

	csp: add livelock assert, remove redundant hiding

2014-08-05  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	fix issue with valued vz void event for generating 'return' events

2014-08-04  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add workaround for missing channel for reply in function

	change csp interface generation allowing for multiple ports of same type

2014-08-01  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	update golden references csp

	move external js files to extjs add brackets for csp expressions add interface <> component to webclient model selection

2014-07-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: indent: zero-offset for #; use for c++ output too.

	Gaiag: pretty: use indent. Drop external indent/astyle usage.

	Gaiag: indent: refactor with loop instead of while and set!.

	Gaiag: indent: new module.

	Gaiag: pretty: support expressions.

	Gaiag: csp: make: add automated refinement checks for all examples.

	Gaiag: examples/sugar.asd: avoid event / enum name clash. Fixes refine check.

	Gaiag: csp: Add refinement to make check.

	Gaiag: csp: examples/expressions.csp: pass fdr refinement.

	Gaiag: csp: examples/expressions.asd: resolve name clash, pass fdr.

	Gaiag: csp: run FDR before diff test.

	Gaiag: csp: produce somewhat sensible csp. Ord/int type/alphabet missing.

	Gaiag: parse: fix parenthesised expression, retain parentheses (WAS: #f).

	Gaiag: csp: add [true] guards. Fixes empty csp statement blocks.

	Gaiag: examples/expressions.asd: add component.

	Gaiag: pretty: assignment whitespace.

	Gaiag: parse: support integer expressions.

	Gaiag: parse: support integer as expression.

	Gaiag: mangle.scm: new module.

	Gaiag: c++: disable debug printing and fake TODO erros. Helps make check.

	prettty oops

	Gaiag: pretty: whitepace fixes, use astyle throughout.

	Gaiag: pretty: bugfix for examples/Typedef.asd.

2014-07-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: coverage: include coverage from ./gaiag script runs.

	Gaiag: pretty: support functions.

	Gaiag: csp: (context-assign): new function. Eradicate members, locals.

	Gaiag: csp: local function variable hiding.

	Gaiag: csp: examples/hide.asd: parameter hiding.

	Gaiag: csp: examples/hide.asd: new test.

	Gaiag: csp: add csp to make check.

	Gaiag: csp: examples/argument2.asd: pass fdr, add test.

	Gaiag: csp: variable hiding for vector extend on vector.

	Gaiag: csp: variable hiding for vector extend.

	Gaiag: csp: simple variable hiding.

2014-07-30  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	add asd test for global and multiple-arguments

2014-07-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: coverage: fix coverage for gaiag example runs.

2014-07-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: scm: oops.

	Gaiag: csp: add sugar and pauls baseline.

	Gaiag: simulate: add arguments and pauls to test.

	Gaiag: c++: add AlarmComponent and AlarmSystem to test.

	Gaiag: coverage: new script.

	Gaiag: animate: reinstate file:line:column errors.

	Gaiag: GNUmakefile: coverage: new target.

	Gaiag: spec: remove depedencies in tokenize, parse. Cleans compile.

	Gaiag: pretty: un-parenthesise toplevel expressions. All tests pass!

	Gaiag: normstate: aggregate-on: add. Avoids splitting same-port on-statements.

2014-07-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: refactor arguments.

	Gaiag: csp: csp-transform: refactor expressions like context.

	Gaiag: csp: refactor explicit (context->csp) calls.

	Gaiag: csp: annotate context with 'ctx in ast.

	Gaiag: csp: csp-transform: use let throughout.

	Gaiag: csp: examples/argument.csp: new baseline.

	Gaiag: csp: resurrect tests.

2014-07-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: GNUmakefile: include .local.make.
	In .local.make, I have

	    FDR3_PREFIX=/usr/local/fdr3

2014-07-25  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	CSP: fix several issues with context generation

	Add option -o to gaiag

	Add multiple arguments

2014-07-24  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	Improve csp generation

2014-07-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: simulate: use variable name resolution; junk Alarm/pauls hacks.

	Gaiag: simulate: add examples/paul.asd to: make simulate.

	Gaiag: simulate: expect and read valued action values from trail.

	Gaiag: simulate: examples/pauls.asd with faked valued action values.

2014-07-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: make demo: support bison parser.

	Gaiag: add tests for bison parser, some csp cleanups.

	Gaiag: csp: support examples/Reply2.asd.

	Gaiag: csp: prefix component enums with their type.

	Gaiag: disable SED hack.

	Gaiag: examples/Reply2.asd: fdr check.

	Gaiag: examples/Reply2.asd, examples/Reply2.csp: new spec.

	Gaiag: examples/Reply.asd using Bison parser checks with fdr.

	Gaiag: examples/pauls.asd: make gaiag-wellformed.

	Gaiag: examples/pauls.asd: rewrite bool sugar expressions.

	Gaiag: examples/pauls.asd: make gaiag-wellformed.

	Gaiag: examples/pauls.asd: import.

2014-07-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: update tests for delayed context extend.

2014-07-16  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	Gaiag: csp: extend context after transform. Fixes examples/argument.asd.

2014-07-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: context overhaul, pass all tests.

2014-07-15  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	Gaiag: csp: support member access. New baseline (Alarm, imperative, argument).

2014-07-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: examples/argument2.asd,csp: add. Tests context unfolding.

	Gaiag: csp: generate context for function parameters.

	Gaiag: examples/argument.asd,csp: move from arguments.

2014-07-15  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	Gaiag: csp: function body with context_

2014-07-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: remove debug printing.

	Gaiag: csp: eradicate frame.

	Gaiag: csp: factor-out usage of frame.

	Gaiag: csp: rename variables and members-locals to context.

	Gaiag: csp: rename vars to members-locals, fix tests.

2014-07-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: read-ast: also register models read from .SCM files. Fixes: examples/IComp.asd not found.

2014-07-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: test: experimental: change intermediate ASTs.

	Gaiag: csp: experimental: compound: shift frame into locals.

2014-07-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp: add deep compound test.

2014-07-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: parse: allow compound-identifier as function arguments.

	Gaiag: parse: allow compound-type for function parameters.

	Gaiag: parse: function-call-statement: add. Fixes parsing void function calls.

	Gaiag: examples/CommSystem.asd: update. Fixes parsing.

	Gaiag: catch syntax-errors and print nice message.

	Gaiag: reader: install syntax-error handler.

2014-07-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: reader: support reading .SCM files: short-circuit the parser.

	Gaiag: ast: add accessors and documentation for int and range.

	Gaiag: examples/Alarm.scm: update with (functions).

	Gaiag: pretty: oops, add missing 'int' to int typedef template.

	Gaiag: csp: examples/arguments.asd: pass fdr.

	Gaiag: csp: csp-transform-callvalued: add missing assign.

	Gaiag: csp: csp-transform-callvalued: pass test.

	Gaiag: csp: resolve match error WIP: the wrong way.

2014-07-11  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: WIP: add test for callvalued_context_
	       TODO: fix ast-transform by passing frame through variable pattern
	       when transforming into callvalued_context.

	Gaiag: csp: extend constructors/combinators for argument-less functions, add sendrecv combinator.

	Gaiag: csp: reduce arguments.csp diff.

	Gaiag: csp: FIXME: add true guard to workaround map-guards limitation in component.csp.scm.

	Gaiag: csp: unify valued and void declarations and add returnvalue_.

	Gaiag: csp: extend template with constructors for calling valued functions and extending the scope with additional variables.

2014-07-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: update arguments reference.

2014-07-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: pretty: resurrect.

	Gaiag: simulate: handle frame pop for compound statement.

	Gaiag: simulate: evaluate parameter upon function entry.

	Gaiag: parse: add explicit source location for function, return.

	Gaiag: simulate: eval-function-expression for assign and variable init only.

	Gaiag: simulate: grok and/or. Fixes state-space exploration of examples/arguments.asd.

	Gaiag: simulate: handle function call without arguments.

2014-07-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: examples/Typedef.asd: pretty print.

	Gaiag: examples/Typedef.asd: parse.

2014-07-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: parse: add precedence and associativity. Fixes shift/reduce warnings.

	Gaiag: csp: eradicate last?.

2014-07-10  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: add context() to template.

	Gaiag: normstate: grok guard-less asts. Fixes processing of examples/arguments.asd.

	Gaiag: csp: valued function return.

2014-07-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: simulate: examples/arguments.asd.

	Gaiag: next blonde expression.

	Gaiag: simulate: add peroxide-blonde implementation of valued function calls.

2014-07-09  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: updated Reply.csp with context use.

	Gaiag: csp: arguments: gen2 features in csp.

2014-07-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: asserts: Component/Interface cannot have same name.

	Gaiag: parse: examples/arguments.asd.

	Gaiag: parse examples/parameters.asd.

	Gaiag: parse: support return.

2014-07-08  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: add functions.

	Gaiag: ast: extend statement for function.

	Gaiag: csp: add function call.

	Gaiag: test: fix order of expected and actual output.

	Gaiag: normstate: do not recurse into functions. Fixes match error.

	Gaiag: parse examples/function.asd.

	Gaiag: add missing on to normstate-101

2014-07-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: c++: generate SensorComponent, SirenComponent and AlarmSystemComponent.

	Gaiag: parse: add missing syntax-error.

	Gaiag: c++: some binding work still to do.

	Gaiag: c++: map-instances: minimal diff.

	Gaiag: ast: read and cache all model types (WAS: only interfaces).

	Gaiag: c++: no proxy classes for system. Decreases diff.

	Gaiag: c++: type typing nit. Fixes AapComponent.cpp.

	Gaiag: c++: refactor component/system invocation.

	Gaiag: c++: merge system templates with component.

2014-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: c++: hello world for AlarmSystem, broken output.

	parse: bind, instance.

	parse:compound

	Gaiag: parse system.

	Gaiag: json-trace: new module. Also dump init and initial update messages.

	Revert "Gaiag: simulate: use '#,(chash notation."
	This reverts commit 683d3547e742491dbda062b41b4dbf9d51e280ab.

	Gaiag: simulate: use '#,(chash notation.

	Gaiag: simultate: communicate with scm2json using ascii again.

	Gaiag: simulate: produce near-current json trace output.

	json: builder: grok symbols as key for hash map.

2014-07-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: comment-out dumping of parser rules.

2014-07-07  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: variable, even for if/assign when last in compound.

	Gaiag: csp: add stack frames.

	Gaiag: test-suite/lib.scm: print file-name:line: error messages.

	Gaiag: csp: variables naive single stack frame.

	Gaiag: csp: rename Reply.

2014-07-06  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: do not add a return at the-end when a reply already occurred.

2014-07-05  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: reduce C.csp diff

	Gaiag: csp: csp.scm fix for reply.asd (tnx Jan)

	Gaiag: csp: collect return values, csp.scp:return-values breaks on reply.asd.

	Gaiag: csp: update C.csp with passing local variables

	Gaiag: csp: remove unused action

2014-07-04  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: introduce local variables to capture return values.

	Gaiag: csp mangle P and V in csp to avoid naming conflicts

	Gaiag: csp: correctly enable/disable illegal behaviour depending on the assert.

	Gaiag: csp: add variable test.

2014-07-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: add reply.asd and workaround limitation in normstate.

2014-07-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: simulate: add from, to, state as fields to (json) trace.

	Gaiag: simulator: commit expected test result. Silences simulator test.

2014-07-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: simulate: add initial state to ouput trace.

2014-07-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: remove stderr logging

2014-07-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: update for field/variable changes.

	Gaiag: simulate: add missing compound to test. Garbage in, garbage out.

	Gaiag: c++: oops: remove debugging.

	Gaiag: resurrect c++.

2014-07-03  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: Alarm.csp/imperative.csp update: append return using semi and separate the-end from the return.

	Gaiag: csp: Alarm.csp,imperative.csp: new reference, assert no diff in make csp.

	Gaiag: noisy-equal? newline around !=.

	Gaiag: variable statement, explicitly typed types. [C++ TODO].

	Gaiag: parse: examples/reply.asd.

	Gaiag: promote event's type to signature; implement return-type.

	Gaiag: csp-transform: nitpick.

2014-07-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp-transform: refactor expressions.

	Gaiag: csp-transform: refactor on.

	Gaiag: csp-transform: refactor return.

2014-07-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: misc: ->string: accept list.

	Gaiag: csp: trim dead code.

	Gaiag: split/rename (field x y) into (trigger port event) (value type field).

	Gaiag: statements-on: recurse deep, events: grok component, compound.

	Gaiag: gaiag: implicit compile spec.scm. Removes need for make compile.

	Gaiag: make log: log simulate traces preparing for (field/event/value).

2014-07-07  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	Fix pretty print of "or"

2014-07-02  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: fdr passes Alarm.asd and imperative.asd with csp-transform for interface.

	Gaiag: use ast:name throughout (WAS: identifier).

2014-07-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: document ast accessors, use variable, expression (WAS: declare, initial-value).

	Gaiag: drop -list for ast list accessors.

	Gaiag: use ast:event-list, ast:port-list, ast:variable-list, drop most ast:body.

	Gaiag: use model/model? throughout for interface/component abstraction.

	csp: explicitly register new normstate. Fixes usage cached non-norm Console.

2014-07-01  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: transform-on pass all tests

	passing csp-transform tests

	oops: add csp.test

	csp: csp.test: csp-transform-on-return: new test.

	Gaiag: ast: noisy match failures.

2014-07-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: cache all interfaces from ast. Fixes examples/<interface>.asd lookup.

	Gaiag: guile-2.0.5, aka Ubuntu 12.04 compatibility.

2014-07-01  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: csp: fix reference formatting

	Gaiag: csp: fix provides? predicate

2014-06-30  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: gaiag: new -l csp --assert option.

	Gaiag: json2scm: new script.

	Gaiag: gaiag -l assert: new language option.

	Gaiag: reader: update interface-cache. Fixes request for examples/I.asd.

2014-06-29  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: update reference

2014-06-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: add imperative.csp new style

2014-06-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: csp, c++: use compose to refactor (ast: (ast: (ast: ... ast)))).

	Gaiag: refactor animate-file, enables bringing c++/csp under test.

	Gaiag: csp: refactor map-statements-on.

	Gaiag: csp: refactor map-guards.

	Gaiag: csp: refactor map-ports.

	c++.scm: use animate-module-populate to refactor module-define!s.

	animate.scm: animate-module-populate: new proceduce.

	Gaiag: implement diff-noisy-equal? and use it for some tests.

	Gaiag: GNUmakefile: generate all output in out/; ignore out/.

	Gaiag: pretty.test: add some failing tests, implement some fixes.

	Gaiag: test-suite/tests/pretty.test: new module.

	Gaiag: test-suite/tests/wfc.test: new module.

	Gaiag: gaiag -l simulate: new -t,--trail option.

	Gaiag: scm2json: new script.

	Gaiag: misc refactoring.

2014-06-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: add normstate, simulate, wfc to --help. for now.

	Gaiag: simulate: produce json on stdout.

	Gaiag: json builder: grok symbols.

	Gaiag: import guile-json ebeabd3.

	Gaiag: rename asd-> to ast->, asd.scm to parse.scm.

	Gaiag: start tests for normstate.

	Gaiag: simulator: ((event0 . (loc0 .. locn)) (eventn (loc0 .. locn))) for Alarm.

	Gaiag: asd: use transparent source-property-based location information.

2014-06-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: simulate: produce ((event0 . (ast0 ... astn)) ... (eventn . (ast0 ... astn))) trace.

	Gaiag: open up simulator.

	Gaiag: test-suite/tests/asd.test: new file.

	Gaiag: import test suite.

	Gaiag: reader: parse-asd: new function, reads special #{ #} forms.

2014-06-27  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: fix various comma separations in template

	csp: remove redundant call to display from map-ports, fix *-join for empty strings

	csp: add ifthenelse example & mangle identifiers

2014-06-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: factor-out action->string.

	Gaiag: csp: factor-out '(inevitable optional) test.

	Gaiag: refactor *join, part 2.

	Gaiag: refactor *-join and *<, *=, part 1.

	Gaigag: csp: drop event-names.

	Gaiag: factor find-events out of simulate; drop csp-variants.

	Gaiag: simulate: find-events: use curried interface.

	Gaiag: merge simulator from standalone Gaiag repo.

2014-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: simulate: add trail explorer.

2014-06-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: naively simulate alarm component.

	Gaiag: simulate: re-introduce event loop.

	Gaiag: first (partial) simulation of Alarm component.

2014-06-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: simulate interface of examples/if.asd.

	Gaiag: first simulator attempt.

	Gaiag: simulate.scm: new module.

2014-06-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: interface.hh nitpick. Fixes make all.

	Gaiag: misc: (for): new function.

2014-06-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: remove crufty c++-module dependency.

	csp: refactor interface like component, remove code dup.

	csp: Grand refactor of component prefix.

	Gaiag: normstate: use ast:make constructors.

	Gaiag: use statement, compound throughout (WAS: statements, statements).

2014-06-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: 0 diff for Alarm.csp

2014-06-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	csp: alarm diff: two combined sounding guards.

	csp: wip: interface no diffs.

2014-06-26  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	WIP

	normstate: aggregate-on-stats.

2014-06-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	on-statements hack

	csp refactor hack

2014-06-25  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: add normstate

	Naive unnomalized guard thingy.

	Guards to go

	csp: more wip

	Gaiag: add diffstat to csp target

2014-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	wip: component-transition

	csp: Optional CHAOS.

2014-06-24  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	xx

	wip

	csp: wip:
	     fix ordering of guards and on events,
	     generalize on event using ?x:{},
	     put bracket in the right places,
	     fix newline formatting,
	     reduce diff by adding process composition to template

2014-06-23  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: wip

	csp: handcrufted reference file

2014-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: normstate: remove dropped modules, include reader.

2014-06-24  Paul Hoogendijk  <paul.hoogendijk@verum.com>

	Add normstate.scm

	Add first version of normalize state

2014-06-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: (ast:parent): bugfix.

2014-06-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: initial ast-constructors.

	Gaiag: reader.scm: new module.

	Gaiag: ast:.scm: new module.

	Gaiag: --debug: new flag.

2014-06-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: grand ast rename.

	Gaiag: csp: makefile nit.

2014-06-20  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	csp: first snippet new style

2014-06-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: template-based C++ on par with pattern matcher.

	Gaiag: C++ nitpicks.

	Gaiag: drop unique, use delete-duplicates.

	Gaiag: use animate/template and #-escapes (WAS: format-keys/snippets and %).

2014-06-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: use #{ ... #} escaping for animations.

	Gaiag: robustify behaviour-types, behaviour-variables.

	Gaiag: add examples/if.asd.

	Gaiag: c++ if-then-else work.

	Gaiag: pretty print if-then-else.

	Gaiag: parse if-then-else.

	Gaiag: csp: ports, guards skeleton.

	Gaiag: csp: (interface-triggers): new function.

	Gaiag: csp: add enumeration_alphabet.

2014-06-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: initial mixing with error location.

	Gaiag: lalr.upstream.scm: implement @ for locations.

	Gaiag: remove comment.

2014-06-18  Rutger van Beusekom  <rutger.van.beusekom@verum.com>

	Gaiag: complete asserts

2014-06-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: port/event/interface resolving for csp.

	Gaiag: clean-out examples into templates/ and baseline/.

	Gaiag: ast.scm (port-behaviour): implement.

	Gaiag: examples/interface.hh.scm: update for inlined Console.

	Gaiag: extensions for csp.

	Gaiag: ast: (import-ast): new function.

2014-06-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: Add initial work on well-formedness mixing.

	Gaiag: resurrect GNUmakefile.

	Gaiag: Oops revert typo from 04dd5b6 Gaiag: C++ proxy methods.

	Gaiag: Add well-formedness error on-error-location.

	Gaiag: lalr.scm: (current-location): new function.

	Gaiag: system/base/lalr.upstream.scm, lalr.upstream: import.

2014-06-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: commented-out location printing in lexer.

2014-06-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: pointer-based ast-parent.

2014-06-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	Oops from: 54ef76e0 wfc.scm: new module; fixes pretty.scm.

2014-06-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: GNUmakefile: add wfc target.

	Gaiag: add examples/mixing.asd.

	Gaiag: misc fixes.

	Gaiag: wfc.scm: new module.

	Gaiag: wfc.scm: new module.

2014-06-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: Cleanup statement->string.

	Gaiag: Use animated rather than format-key'd snippets for c++.

	Gaiag: Add snippets to c++ output.

	Gaiag: Add path matching experiment.

2014-06-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: resurrect csp.

	Gaiag: animate.scm: factor out, generate C++ for AlarmComponent.

2014-06-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: initial c2 generation.

	Gaiag: csp: initial attempt.

	Gaiag: promote test C++ to c++, junk old format-keys implementation.

	Gaiag: C++ instance getters.

	Gaiag: C++ state methods.

	Gaiag: C++ context methods.

	Gaiag: C++ proxy methods.

	Gaiag: ugly *port-def* workaround.

	Gaiag: C++ component class.

	Gaiag: C++ context class.

	Gaiag: C++ state class.

	Gaiag: C++ implement proxy classes.

2014-06-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: further work.

	Gaiag: some animated c++ with map-ports, map-events.

	Gaiag: ports loop in animated c++.

	Gaiag: C++ interface.

	Gaiag: parse, print examples/Console.asd.

	Gaiag: update examples.

	Gaiag: initial read-eval-print-loop for interface.hh.scm.

	Gaiag: format-at-keys attempt.

	Gaiag: update to first full c++ snippets.

2014-05-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: more c++ baselining.

	Gaiag: alarm baseline and fixes in c++ output for component.

2014-05-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: whitespace nitpicks.

	Gaiag: use or as || (WAS: logic-or).

	Gaiag: use field as selector (WAS: dot).

	Gaiag: add scheme output, make it default.

	Gaiag: cpp: generate-context-class: new function.

	Gaiag: snippets: new module.

	Gaiag: cpp2scm: new script.

	Gaiag: generate-component-implementation: new function.

	Gaiag: add snippets symlink.

	Gaiag: Move snippets to ../../generator/.

	Gaiag: Move examples to examples/, remove cruft.

2014-05-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: cpp: new module.

	Gaiag: logic-or: typo

	Gaiag: set lr driver.

2014-05-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: pretty: use match and snippets, junk eval.

	Gaiag: pretty: handle . x functions through match rather than eval.

	Gaiag: pretty: refactor . x functions.

	Gaiag: pretty: separate . x functions.

	Gaiag: pretty: format-snippet: new function.

	Gaiag: pretty: use format-keys.

	Gaiag: format-keys.scm: new library.

	Gaiag: run indent on alarm-component-pretty.asd

	Gaiag: pretty print all examples.

	Gaiag: pretty print alarm-component.asd.

	Gaiag: pretty: new module.

2014-05-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: parse alarm-component.asd

	Gaiag: complete parser.

	Gaiag: add asdgen.

2014-05-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: populate parser.

	Gaiag: grammer renames.

	Gaiag: tokenize: reuse ecmascript.

	Gaiag: start with toplevel asd.

2014-05-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: reuse ecmascript tokenizer.

	Gaiag: parse interface foobar { in int click; in void boo; out int bar; }

	Gaiag: parse: interface foobar { in int click; }

	Gaiag: parse interface Identifier.

	Gaiag: further decrufting.

	Gaiag: make @ and x + y work.

	Gaiag: Plug-in ecmascript tokenize.

	Gaiag: o 3 returns (on 3)

	Gaiag: list on.

	Gaiag: list

	Gaiag: New language: asd.

2014-05-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	Gaiag: Guile in Asd In Asd in Guile: first commit.

	Initial.

Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>

  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.

Normally a ChangeLog is generated at "make dist" time and available in
source tarballs.
