Awesome
Mbeddr core
Mbeddr
To install: please, visit http://mbeddr.com for instructions!
mbeddr aims at creating a different way of developing embedded software systems. Instead of using archaic modeling tools and manually written C code, we use the open source JetBrains MPS language workbench to create an integrated approach to embedded development, where C programming, DSLs, domain specific extensions to C, product line variability, requirements traceability and model checking are supported directly.
At this point we are well ahead in developing an implementation of C in MPS which can then be used as a basis for domain-specific extensions. The development progress can be see from our blog page.
For more details please visit the mbeddr landing page.
<details open> <summary>Old demos</summary> <a href="http://mbeddr.com/#!prettyPhoto/1/"><img src="http://mbeddr.com/images/feature_plainC.png" name="Cleaned Up C99"></a> <a href="http://mbeddr.com/#!prettyPhoto/2/"><img src="http://mbeddr.com/images/feature_logging.png" name="Reporting and Logging"></a> <a href="http://mbeddr.com/#!prettyPhoto/3/"><img src="http://mbeddr.com/images/feature_testing.png" name="Testing"></a> <a href="http://mbeddr.com/#!prettyPhoto/4/"><img src="http://mbeddr.com/images/feature_units.png" name="Physical Units"></a> <a href="http://mbeddr.com/#!prettyPhoto/5/"><img src="http://mbeddr.com/images/feature_statemachine.png" name="State Machines"></a> <a href="http://mbeddr.com/#!prettyPhoto/6/"><img src="http://mbeddr.com/images/feature_components.png" name="Interfaces and Components"></a> <a href="http://mbeddr.com/#!prettyPhoto/7/"><img src="http://mbeddr.com/images/feature_req.png" name="Requirements, Tracing and Docs"></a> <a href="http://mbeddr.com/#!prettyPhoto/8/"><img src="http://mbeddr.com/images/feature_ple.png" name="Product Line Variability"></a> <a href="http://mbeddr.com/#!prettyPhoto/9/"><img src="http://mbeddr.com/images/feature_verification.png" name="Formal Verification"></a> <a href="http://mbeddr.com/#!prettyPhoto/10/"><img src="http://mbeddr.com/images/feature_debugging.png" name="Execution and Debugging"></a> <a href="http://mbeddr.com/#!prettyPhoto/11/"><img src="http://mbeddr.com/images/feature_ideSupport.png" name="IDE Support"></a> <a href="http://mbeddr.com/#!prettyPhoto/12/"><img src="http://mbeddr.com/images/feature_versionControl.png" name="Version Control"></a> </details>Maven Dependencies
To use mbeddr or the mbeddr platform in your own project, you one of the following dependencies in your maven or gradle build script. The latest support MPS version is 2024.1:
Mbeddr
MPS version | nexus status |
---|---|
2024.1 | |
2023.2 | |
2022.3 | |
2022.2 | |
2021.3 | |
2021.2 | |
2021.1 | |
2020.3 | |
2020.2 | |
2020.1 | |
2019.3 |
Mbeddr platform
MPS version | nexus status |
---|---|
2024.1 | |
2023.2 | |
2022.3 | |
2022.2 | |
2021.3 | |
2021.2 | |
2021.1 | |
2020.3 | |
2020.2 | |
2020.1 | |
2019.3 |
Contributing to the mbeddr.platform
To contribute your module to the mbeddr platform for reuse, you probably want to add it to the mps utils (com.mbeddr.mpsutils
). After some incubation time, it may be considered to move it to the MPS-extensions, if the motivation, and implementation have grown mature.
- name your language "com.mbeddr.mpsutil.$yourLanguageName"
- add it to the MPS project in
code/languages/com.mbeddr.mpsutil
inside a virtual folder "$yourLanguageName" - all dedicated modules (like the ones you create below) should go into this virtual folder "$yourLanguageName"
- add a test solution with automated tests, named "test.com.mbeddr.mpsutil.$yourLanguageName" and make sure they pass
- if your module is an extension to an MPS language
- add a language named "com.mbeddr.mpsutil.$yourLanguageName.sandbox" that demos how to use your language
- add a "com.mbeddr.mpsutil.$yourLanguageName.sandbox.sandbox" solution that demonstrates the effect of what the sandbox language implemented
- open the MPS project "code/languages/com.mbeddr.build"
- open the build script at "com.mbeddr.platform" named "com.mbeddr.platform"
- add a group named "group.$yourLanguageName"
- add a plugin that bundles your extension based on this group with the needed dependencies
- add your plugin to the default layout
- open the test build script at "platform/com.mbeddr.platform/com.mbeddr.platform.mpsutils.ts.tests.build" and add your tests
- add your test solution and its dependencies to the group "com.mbeddr.platform.tests"
- add it to the default layout
- add it to the test modules configuration
- run the build locally with
./gradlew publishMbeddrPlatformPublicationToMavenLocal
and check if your project functions with it