by Michał Antkiewicz
We usually first implement new language features in one backend (e.g., Alloy) and add support to the other backend later. The result is that different backends support different language features.
Therefore, we have created Backend Compatibility Matrix, which provides versions in which support for a given feature was added to Alloy-based and Choco-based backend.
Friday, November 20, 2015
Tuesday, November 3, 2015
Clafer Tools 0.4.2.1 Released
by Michał Antkiewicz, updated on Nov 03, 2015
This is a simultaneous release of all Clafer Tools.
Binary builds are available from Clafer Tools - Binary Distributions.
Clafer compiler, release pull request (0.4.2), hotfix (0.4.2.1).
This is a simultaneous release of all Clafer Tools.
Binary builds are available from Clafer Tools - Binary Distributions.
Clafer compiler, release pull request (0.4.2), hotfix (0.4.2.1).
- added CheatSheet and generated syntax documentation clafer.pdf.
- Added minimum and maximum of a set operators
minandmax. - Changed syntax of objectives to
<< minimize ... >>and<< maximize ... >>. The old syntax<< min ... >>and<< max ... >>still works but it is now deprecated. - Changed precedence of if/then/else so that nested expressions do not need to be in parens. See issue #73.
- Implemented ability for top-level abstract clafer to extend a nested abstract clafer #67. See test case.
- Added generation of assertions for Choco.
- Added validation with Choco and GraphVis to
-v. - Use Haskell stack.
- Use Haskell stack.
Choco-based instance generator and multi-objective optimizer, release pull request (0.4.2), release pull request (0.4.2.1).
0.4.2
ClaferToolsST, release diff (0.4.2), release commit 0.4.2.1.
0.4.2
- Integrated and extended the CLI from ClaferChocoIG project. ClaferChocoIG is now discontinued.
- Added setStrategy.
- Ported to the latest Choco3/develop.
- Added minimum/maximum of a set with a default value.
- Added range/domain restriction.
- Added common subexpression elimination.
- Fixed group cardinality inheritance to match ClaferIG and semantics since 0.3.9.
- Use a ternary constraint for if/then/else.
- Improved symmetry breaking.
- Improved inverse relations.
- Improved sum propagator.
- Added assertions.
- Added continuous integration Travis CI.
- Fixed modulo operator.
- Many optimizations
- Improved symmetry breaking
- Restore strategies "smaller" and "larger"
- New command line options: time, noprint, dataFile
- Ported to the latest Choco3/develop
- Use Haskell stack.
- Added excluding variants in the feature and quality matrix, issue #23.
- Added excluding variants in the feature and quality matrix, issue #23.
- Added excluding variants in the feature and quality matrix, issue #23.
ClaferToolsST, release diff (0.4.2), release commit 0.4.2.1.
Tuesday, October 27, 2015
Example: Directed Graph Reachability in Presence of Variability
by Michał Antkiewicz, updated on Oct 27, 2015
With the features recently introduced to Clafer 0.4.1 (nested abstract clafers and reference refinement, see Clafer 0.4.0 PowerPoint Slide Show, and Alloy and Choco escapes), we can now conveniently model directed graphs in Clafer and express constraints such as node reachability in a graph by escaping to Alloy.
On Oct 26, 2015, I gave a talk on the topic. Slides in PPSX. Slides in PDF.
The talk was based on the wiki page
Directed Graph Reachability in Presence of Variability
on Clafer Model Wiki shows an example.
With the features recently introduced to Clafer 0.4.1 (nested abstract clafers and reference refinement, see Clafer 0.4.0 PowerPoint Slide Show, and Alloy and Choco escapes), we can now conveniently model directed graphs in Clafer and express constraints such as node reachability in a graph by escaping to Alloy.
On Oct 26, 2015, I gave a talk on the topic. Slides in PPSX. Slides in PDF.
The talk was based on the wiki page
Directed Graph Reachability in Presence of Variability
on Clafer Model Wiki shows an example.
Friday, October 2, 2015
Clafer Cheat Sheet and Syntax Documentation
by Michał Antkiewicz
Clafer has a formal grammar from which the lexer and parser are generated. I published two new language reference resources:
- Syntax documentation (pdf), which is also automatically generated from the grammar
- Clafer cheat sheet, which is written manually based on the grammar to provide additional commentary and type information, while sacrificing the formality of the grammar.
All these resources, as of this posting, cover Clafer 0.4.1 and they will be updated with each release. They are also referenced from the page Documentation.
Monday, September 21, 2015
Clafer Web Tools 0.4.1 Released
by Michał Antkiewicz
The release 0.4.1 of the web tools is the first major release since 0.3.6.1!
This release wouldn't be possible without the hard work of Eldar Khalilov who took on a difficult task of switching the tools from the old XML format to the new JSON format of the compiler's intermediate representation.
The release includes compatibility with Clafer 0.4.1 and the new features of the language since 0.3.6.1 and many functional and performance improvements (by both Alexandr Murashkin and Eldar Khalilov).
The release 0.4.1 of the web tools is the first major release since 0.3.6.1!
This release wouldn't be possible without the hard work of Eldar Khalilov who took on a difficult task of switching the tools from the old XML format to the new JSON format of the compiler's intermediate representation.
The release includes compatibility with Clafer 0.4.1 and the new features of the language since 0.3.6.1 and many functional and performance improvements (by both Alexandr Murashkin and Eldar Khalilov).
- ClaferToolsUICommonPlatform, release pull request
- support for compiler's JSON output instead of XML
- improved matrix performance
- new filtering by value in matrix
- scaling of parallel coordinates chart
- ClaferMOOVisualizer, release pull request
- new matrix
- fully qualified names in variant comparer
- zooming in bubble graph
- updated examples
- ClaferConfigurator, release pull request
- new matrix
- updated examples
- ClaferIDE, release pull request
- updated examples
Tuesday, September 1, 2015
Clafer, ClaferIG, and ClaferWiki 0.4.1 Released
by Michał Antkiewicz
Clafer compiler, Alloy-based instance generator, and wiki 0.4.1 are released on Hackage (clafer, claferIG, claferwiki). The release also includes the Choco3-based instance generator and optimizer 0.4.0, which; however, does not yet support the new features of the language.
Binary builds are available from Clafer Tools - Binary Distributions.
See the corresponding release 0.4.1 of the web tools.
Major changes include:
Previous release Clafer, ClaferIG, ClaferWiki, ChocoSolver, and ClaferChocoIG 0.4.0 Released.
Clafer compiler, Alloy-based instance generator, and wiki 0.4.1 are released on Hackage (clafer, claferIG, claferwiki). The release also includes the Choco3-based instance generator and optimizer 0.4.0, which; however, does not yet support the new features of the language.
Binary builds are available from Clafer Tools - Binary Distributions.
See the corresponding release 0.4.1 of the web tools.
Major changes include:
- Fixed problems with automatic dereferencing, see leftAssocDeref.cfr, navAndDeref.cfr, and navAndDeref.als.reg.
- Fixed type system problems.
- Added Alloy and Choco escapes, see escapes.cfr. Code in Alloy escapes is included at the beginning of the Alloy output, whereas, Choco escapes are included at the end of Choco output.
- Changed ref to dref.
- Added handling and deprecation warnings for deprecated ref and &; instead dref and ** should be used, see deprecated.cfr.
- Fixed bugs with incorrect addition of .drefs in arithmetic, see arithmetic.cfr.
- Fixed missing links bugs in HTML output.
- Added continuous integration with TravisCI.
Previous release Clafer, ClaferIG, ClaferWiki, ChocoSolver, and ClaferChocoIG 0.4.0 Released.
Tuesday, August 25, 2015
Tutorial: Variability Domain Engineering in Three Layers. A Train Station Layout Case Study in Clafer
by Michał Antkiewicz
On Aug 24, 2015, as part of the Domain-Specific Modeling Theory and Practice 2015 Summer School, Andrzej Wąsowski presented a 4-hour hands-on tutorial on Variability Domain Engineering using Clafer.
The tutorial is in the form of the Clafer Wiki Variability Domain Engineering in Three Layers. A Train Station Layout Case Study in Clafer. The tutorial follows the architecture of OMG's Common Variability Language (CVL) standard and it contains five parts:
On Aug 24, 2015, as part of the Domain-Specific Modeling Theory and Practice 2015 Summer School, Andrzej Wąsowski presented a 4-hour hands-on tutorial on Variability Domain Engineering using Clafer.
The tutorial is in the form of the Clafer Wiki Variability Domain Engineering in Three Layers. A Train Station Layout Case Study in Clafer. The tutorial follows the architecture of OMG's Common Variability Language (CVL) standard and it contains five parts:
- Part 0: Introduction to Domain Engineering
- Part I: Feature Modeling in Clafer
- Part II: A DSL for Describing Track Layouts
- Part III: A Layered Variability Model
- Part IV: Domain Exploration using Synthesis
Wednesday, July 29, 2015
Clafer, ClaferIG, ClaferWiki, ClaferChocoIG 0.4.0 Released
by Michał Antkiewicz
Clafer compiler, Alloy-based instance generator, and wiki 0.4.0 are released on Hackage (clafer, claferIG, claferwiki). The release also includes the Choco3-based instance generator and optimizer, which; however, does not yet support the new features of the language.
Binary builds are available from Clafer Tools - Binary Distributions.
The Clafer 0.4.0 PowerPoint Slide Show summarizes the improvements included in this release.
Major changes include:
Previous release Clafer, ClaferIG, ClaferWiki, ChocoSolver, and ClaferChocoIG 0.3.10 Released.
Clafer compiler, Alloy-based instance generator, and wiki 0.4.0 are released on Hackage (clafer, claferIG, claferwiki). The release also includes the Choco3-based instance generator and optimizer, which; however, does not yet support the new features of the language.
Binary builds are available from Clafer Tools - Binary Distributions.
The Clafer 0.4.0 PowerPoint Slide Show summarizes the improvements included in this release.
Major changes include:
- Fixed the grammar and extended the type system to properly support super types, primitive value reference types, complex reference types, primitive type reference refinements. See the test case mergeExpAndSetExp.cfr and a subset of the test case supported by Alloy mergeExpAndSetExpAlloy.cfr.
- Added support for redefinition in Alloy-based IG. See redefinition.cfr test case.
- Removed Alloy4.1 support. The mode
-m=alloymeans Alloy4.2 by default. - Removed XML mode (
-m=xml). The JSON output (-m=json) is more comprehensive and it contains information about quality attributes and objectives. - Removed a redundant
--noalloyruncommandoption. - Added primitive type
doubleand implemented primitive type coersions. See primitiveTypesAndCoersions.cfr test case. - Updated Clafer Tools for Sublime Text 2/3.
Previous release Clafer, ClaferIG, ClaferWiki, ChocoSolver, and ClaferChocoIG 0.3.10 Released.
Tuesday, July 28, 2015
Accessing Clafer Models Programmatically
by Michał Antkiewicz, updated for Clafer 0.4.3
Since we ourselves translate Clafer into many output formats and use many different programming languages in the various tools (Haskell, Java, JavaScript), we developed ways of accessing the compiler's intermediate representation (IR), which represents fully-resolved information about Clafer models. This way, the compiler does all the hard work and the downstream tools can access the model conveniently.
Since we ourselves translate Clafer into many output formats and use many different programming languages in the various tools (Haskell, Java, JavaScript), we developed ways of accessing the compiler's intermediate representation (IR), which represents fully-resolved information about Clafer models. This way, the compiler does all the hard work and the downstream tools can access the model conveniently.
Wednesday, June 3, 2015
Inheritance of Group Cardinality
by Michał Antkiewicz
On April 06, 2015, I presented how inheritance of group cardinality was handled before 0.3.9, how it was fixed as of release 0.3.9, and what an alternative solution could be. The slides are available below. If you have a strong opinion about either solution, please drop me a line.
PowerPoint Slide Show
2015.04.06-Antkiewicz-Inheritance-of-group-cardinality.ppsx
On April 06, 2015, I presented how inheritance of group cardinality was handled before 0.3.9, how it was fixed as of release 0.3.9, and what an alternative solution could be. The slides are available below. If you have a strong opinion about either solution, please drop me a line.
PowerPoint Slide Show
2015.04.06-Antkiewicz-Inheritance-of-group-cardinality.ppsx
Subscribe to:
Posts (Atom)