Skip to content

About

Facsimile Simulation Library

Resources

Stars

3 stars

Watchers

1 watching

Forks

 
 

Repository files navigation

Facsimile Project

The Facsimile project's goal is to develop and maintain a high-quality set of libraries supporting the development of industrial discrete-event, physics-based emulation, and live-streamed process digital twin simulations in an engineering, logistics and/or manufacturing environment.

All libraries are developed using a hybrid functional programming (FP)/object-oriented programming (OOP) paradigm, and are developed in the Scala programming language. The resulting libraries run on the Java Virtual Machine (JVM) under Microsoft Windows, Linux, macOS, BSD, and Unix.

Facsimile is open-source/free software and is distributed under version 3 of the GNU General Public License (GPLv3).

Current status of official master Facsimile branch:

Note: The test coverage badge, which is provided by Coveralls, is not currently being updated because the sbt-coveralls SBT plugin has been temporarily disabled; this is due to the plugin not supporting SBT 2. We will re-enable it when SBT 2 support is available.

Maven Central Coverage Status Codacy Badge Scala Steward badge

Using Facsimile

Status

Note: Facsimile is not currently usable as a simulation library; it is currently anticipated that this will be addressed by a future release.

In the meantime, please feel free to use the library (and its sub-components), and provide feedback in the form of bug reports and enhancement requests.

The library API should be regarded as experimental until the 1.0 release is achieved; please be aware that significant API changes may be made before this release, which may break code that relies up on it. Do not use Facsimile for your day-today projects just yet.

Pre-requisites

Note: Installers for Facsimile that allow it to be utilized for simulation modeling are currently unavailable; check back for developments.

Facsimile utilizes the most recent Java LTS (long-term support) release that is supported by its dependencies. The current Facsimile version depends upon Java 25 LTS, and it is recommended that you utilize only this version of Java for Facsimile for the time being.

Once a stable Facsimile release has been announced, we'll support the oldest freely and widely supported Java LTS release, or Java 25 LTS, whichever is newer.

Any Java 25 LTS release, including those by Oracle, OpenJDK, Azul Systems, Eclipse, etc. should work just fine. It is strongly recommended that your organization reviews the licensing of your chosen Java supplier to ensure that you are in compliance with its terms.

Once Java has been installed, it is trivial to build models using SBT; this will download all necessary resources, including the Scala compiler, Facsimile libraries themselves, and their dependencies.

A template SBT project (for use with the sbt new command) will be released shortly. In the meantime, the following example should suffice:

// Human-readable name of your project.
name := "Your project's name"

// Repository artifact name of your project.
normalizedName := "yourproject"

// Repository organization name of your project.
organization := "your.organization"

// Human-readable name of your organization.
organizationName := "Name of your organization"

// Version number for this release of your project.
version := "1.0.0-SNAPSHOT"

// Version of the Scala compiler and libraries to be used to build your project.
//
// This should match the supported version of _Scala_ for the specified release.
scalaVersion := "3.3.4"

// Version of Facsimile required to build your project.
libraryDependencies += "org.facsim" %% "facsimile-simulation" % "0.3.0"

Use of JetBrains' IntelliJ IDEA is highly recommended for developing both Facsimile itself, and code using it; the Scala and HOCON IntelliJ plugins are essential.

About

Facsimile Simulation Library

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages