CAmkES 3.0.0 Release Notes
This adds all the features from our development branch “next”. Changes include several syntactic and functional changes. The development of new features will now continue on the “master” branch, and the “next” branch will remain as is for compatibility reasons.
Migrating
How you migrate will depend on your situation:
I was using the “next” branch and want to switch to this release
Hopefully most people will be in this category. Now that we’ve (finally!) done an official release of CAmkES 3, you can switch to a stable tag with all the features of “CAmkES Next”, without the risk of api breaking changes. If you use repo, your manifest probably has a line resembling:
<project name="camkes-tool.git" path="tools/camkes" revision="next">
Change it to:
<project name="camkes-tool.git" path="tools/camkes" revision="refs/tags/camkes-3.0.0">
Watch the mailing list for new releases, and update your version of CAmkES when you want to.
I was using the “next” branch, and want to stay on the bleeding edge
You need to switch to the “master” branch. The “next” branch will continue to exist for a time for compatibility, but will no longer receive updates. If you use repo, your manifest probably has a line resembling:
<project name="camkes-tool.git" path="tools/camkes" revision="next">
Change it to:
<project name="camkes-tool.git" path="tools/camkes">
Note that tracking the tip of the “master” branch is risky. There’s no guarantee that it won’t change in breaking ways in the future.
I was using the “master” branch, and want to migrate
There’s a guide on the changes introduces by this version here: CAmkESDifferences
I was using the “master” branch, and don’t want to migrate
That’s fine! All the old versions of CAmkES will continue to be available. The latest release of this branch is camkes-2.3.1. If you use repo, your manifest probably had a line resembling:
<project name="camkes-tool.git" path="tools/camkes">
Change it to:
<project name="camkes-tool.git" path="tools/camkes"
revision="refs/tags/camkes-2.3.1">
I was using a released version of CAmkES
You don’t have to do anything. Your project will continue to work.
New Dependencies
CAmkES dependencies have changed. For a definitive (maintained) list, see: CAmkES#build-dependencies
New Features
Visualization Tool
CAmkES comes with a graphical tool for visualising the components and connections in a CAmkES application. For installation and usage instructions, see its README.
Typed Settings
Previously, the values of settings (in “configuration” blocks) were strings under the hood. Now they are stored as a value of the appropriate (python) type, determined during parsing. Read more.
Parametrised Buf Type
The “Buf” type for dataports can now be optionally parametrised with the dataport’s size in bytes. Read more.
The seL4Asynch connector has been renamed to seL4Notification
This was to maintain consistency with the rest of our APIs.
Non Volatile Dataports
Previously, the standard dataport connector, seL4SharedData, use volatile pointers for accessing shared memory. This is no longer the case, and components with dataport interfaces connected with seL4SharedData must explicitly insert barriers around dataport access to ensure the desired memory access ordering. Read more in the manual.
Custom Attribute Types
You can now define custom types for attributes in CAmkES ADL. Custom types resemble structs and arrays in C. Read more in the manual.
Hierarchical Component Syntax Change
The syntax for declaring that a component exports an interface from one of it sub-components has changed. See an example.
Binary Semaphores
Binary Semaphores have been added as a new synchronization primitive. This is in addition to the existing primitives: semaphores and mutexes. Read more in the manual.
Cache Accelerator
CAmkES now comes with a small tool for caching compilation results based
on source files. This should greatly reduce compilation times by not
unnecessarily recompiling code. It is enabled by default. Control it
with the CONFIG_CAMKES_ACCELERATOR
config variable.
Read more in the manual.
Python 3 Support
Previously, CAmkES only worked with python2. It’s now compatible with python2 and python3.
Refactored Parser
The internals of the CAmkES parser have been rewritten to be easier to read and maintain. The parser is structured as a pipeline of transformations. Read more in the manual.