Skip to content

Commit

Permalink
CHG: Update project description.
Browse files Browse the repository at this point in the history
  • Loading branch information
krisvanrens committed Aug 4, 2023
1 parent d594efb commit 7c20ae9
Showing 1 changed file with 29 additions and 5 deletions.
34 changes: 29 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,30 @@

The Nexus programming language.

Nexus is a language for supporting software component network descriptions.
Nexus is a language for describing component network descriptions.
Aside a simple base of common general-purpose primitives/control flow/etc. it offers native integration for building a network of components, connecting in-/outputs and setting component properties.
The syntax and most semantics of Nexus are loosely modeled after that of the excellent [Rust programming language](https://github.com/rust-lang/rust).
The syntax and most semantics of Nexus are loosely modeled after that of the [Rust programming language](https://github.com/rust-lang/rust).

Nexus is meant to drive a software component network system through its API, using the Nexus network description as input.
Nexus is meant to drive another component-network-oriented network system through its API, using the Nexus network description as input.

**NOTE**: This project is still very much under construction -- anything might change!

## Native integration with component networks

Nexus is designed to interface component-network-oriented systems:
Nexus is designed to interface component-network-oriented systems.

Consider this example network:

```mermaid
graph TD
subgraph system
C1 --> process
process["`**process**
velocity=3.14`"] --> C2
end
```

This network can be implemented using the following code:

```rust
// Instantiate components:
Expand All @@ -30,13 +43,24 @@ let system.processor = node "TypeC"; // Ad-hoc definitions.

// References to (sub-)systems:
let proc = &system.processor;
proc.velocity = 3.14;
let proc.velocity = 3.14; // Create a property.

// Operators for defining edge connections:
c1.Output -> system.processor.Input;
system.processor.Output -> c2.Input;
```

### Nodes, properties, connections and groups

A component network is described in terms of four elementary parts:

- **Nodes** (i.e. component instantiations),
- **Node properties**,
- **Connections** (between node in-/outputs),
- **Groups** (i.e. collections of nodes).

Each

## Simplicity

Nexus is geared towards simplicity, in the sense that it tries to support a minimal viable set of features required for flexible use as a component network description language.
Expand Down

0 comments on commit 7c20ae9

Please sign in to comment.