Software

Overview

The following code crafting tools are (or will be) provided as Git repositories hosted on GitHub:

Chimps

Concurrent hierarchic message-based programming system. Chimps is a framework for building software by implementing and connecting message-passing software components. It provides a standardized run-time environment for inter-component communication, scheduling, timing, and logging functionality, as well as a set of generalized application executives. Component messaging interfaces and hierarchic structures are defined and generated using Smidgen and Finch, respectively.

Hildegard

Hierarchic layout and design environment for generating applications and rendering diagrams. This is a graphical application for drawing block diagrams that describe the hierarchic structure and flow of data between the subcomponents of a system. This tool can be used to graphically construct Chimps or Shasam applications.

Shasam

Standardized hierarchic architecture for simulation and modeling. This is a component-based 6-DOF simulation framework with Monte Carlo capability that is built on top of Chimps.

Finch

Format for specifying interconnections and component hierarchies. This project provides a language for making input/output connections between components and defining hierarchic component structures, along with a set of utilities to generate code and documentation from these definitions. Component input/output interfaces are defined using Smidgen.

Smidgen

Syntax for messaging interface definition and generation. This project provides a language for defining component input/output messaging interfaces and a set of utilities to generate code and documentation from these definitions. The structure of input and output data is defined using Tydl.

Tydl

Type definition language for specifying the structure, layout, and semantic attributes of data types. The syntax is based on Wumps. This project also provides a set of tools that can be used to generate documentation or high-level code from type specifications.

Bt

Build tool that manages the dependencies between software projects and automates the retrieval, configuration, and building of prerequisite software repositories.

Wumps

Widely useful macro programming syntax that serves as a foundation for building domain-specific languages such as Tydl, Smidgen, and Finch.

Flopi

Fine-grained logging and output Python interface for displaying and recording status, event, debugging, warning, and error information. Flopi can operate as a pure Python module, or in conjunction with Flout when extending or embedding the Python interpreter.

Turtal

The underlying run-time abstraction layer that isolates high-level code from the details related to a specific operating system, hardware, or message-passing framework implementation. This library provides a set of uniform programming interfaces for constructs like message queues, threads, file input/output, timers, and schedulers.

Ranger

Random number generation routines. This library provides routines for generating pseudo-random number streams and transforming the draws from these streams into random variables that exhibit specific probability distributions.

Todes

Time-stepping ordinary differential equation solver. This library provides an engine for the numerical solution of differential equations.

Caveman

Common API for vector and matrix numerical operations. This library provides standardized matrix and vector class interfaces to avoid explicit dependencies on lower-level matrix libraries.

Flout

Fine-grained logging and output library that provides a standardized programming interface for the display and recording of status, event, debugging, warning, and error information.

Cuddl

Cross-platform user-space device driver layer that provides a common API for writing user-space device drivers that works under Linux, Xenomai, and RTEMS.

Development Tools

Software Stack for Application Development (Simplified)

The following diagram illustrates how our code crafting tools work together with external open-source software to form a software stack for application development.

Clicking on the title of a particular block in the diagram will take you to a description of the associated software.

Software Stack for Application Development (Detailed)

An expanded, more detailed version of this diagram shows the dependencies between the various software projects more explicitly.

Run-Time Software

Run-Time Software Stack (Simplified)

The following diagram describes the structure and run-time software dependencies for a typical application developed using our code crafting tools. It shows how in-house (application developer) code interacts with 3rd-party code, the code generated by our tools, the libraries we provide, and external open-source software. It also illustrates how an alternative object-oriented main program can leverage component libraries outside of the Code Craftsmen run-time framework.

Clicking on the title of a particular block in the diagram will take you to a description of the associated software.

Run-Time Software Stack (Detailed)

An expanded, more detailed version of this diagram shows the dependencies between the various software projects more explicitly.