mbeddr.core icon indicating copy to clipboard operation
mbeddr.core copied to clipboard

The mbeddr core. An extensible C

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.

Old demos

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 2021.2.5:

mbeddr mbeddr platform

Mbeddr

MPS version New nexus Old nexus
2021.2 artifacts.itemis.cloud projects.itemis.de
2021.1 artifacts.itemis.cloud projects.itemis.de
2020.3 artifacts.itemis.cloud projects.itemis.de
2020.2 artifacts.itemis.cloud projects.itemis.de
2020.1 artifacts.itemis.cloud projects.itemis.de
2019.3 artifacts.itemis.cloud projects.itemis.de

Mbeddr platform

MPS version New nexus Old nexus
2021.2 artifacts.itemis.cloud projects.itemis.de
2021.1 artifacts.itemis.cloud projects.itemis.de
2020.3 artifacts.itemis.cloud projects.itemis.de
2020.2 artifacts.itemis.cloud projects.itemis.de
2020.1 artifacts.itemis.cloud projects.itemis.de
2019.3 artifacts.itemis.cloud projects.itemis.de

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