Releases: nevalang/neva
v0.16.0
What's Changed
- New graphviz backend by @Catya3 in #540
- New chained connection syntax sugar and massive renaming in stdlib by @emil14 in #533
On new syntax sugar
You can now chain connections where inport and outport has the same name. E.g. instead of
a:b -> c:d
c:d -> e:f
You can now just write
a:b -> c:d -> e:f
It's also possible to chain as many as you want
a:b -> c:d -> e:f -> g:h ...
On renaming in standard library
Basically I decided to use shorter names and ditch "er" endings, use function-like (verbs) names instead:
- Emitter -> New
- Destructor -> Del
- Blocker -> Lock
- StructBuilder -> Struct
- StructSelector -> Field
- Adder -> Add
- Subtractor -> Sub
- Multiplier -> Mul
- Decrementor -> Decr
- Printer -> Println
- Fprinter -> Printf
- PortStreamer -> PortSequencer
- ISeqHandler -> ISeqReducer
- PortBridge -> PortReducer
- regexp.Submatcher -> regexp.Submatch
- x.NumParser -> x.ParseNum
- x.LineScanner -> x.Scanln
On Match and Mod
These two implement the same pattern, they had case
array-inport and then
array-outport. The outport is now also case
. The reason is new "chained" syntax. Now we have a reason to name outport like inport where it's convenient.
Stream vs Sequence
Some components emit sequences of messages separated by delimiters, maybe
type is used for that. The term used for that was "stream" and the thing is - it's a bad name for that. Classic FBP defines "stream" as messages that flows through connection. So streams are everywhere. The right word for that is "sequence". So stream
ports were renamed to seq
and word "sequence" must be used insted.
BTW the word for what is list
and map
is "collection". E.g. you can now find collections.neva
file in stdlib module.
Handlers vs Reducers
The word for "component that takes sequence of type T and produce one value of that type T" is now reducer, now handler. Also PortBridge
was renamed to PortReducer
because of that. Handler was too vague term. Reducer is what is exactly is.
Full Changelog: v0.15.0...v0.16.0
v0.15.0
What's Changed
- fix download script by @Mr-Ao-Dragon in #534
- add new arch support by @Mr-Ao-Dragon in #535
- fix(runtime): stringer for float by @emil14 in #538
- CLI: Add support for new "json" build target by @Catya3 in #539
- List Push & List Sort by @dorian3343 in #536
New Contributors
- @Mr-Ao-Dragon made their first contribution in #534
- @Catya3 made their first contribution in #539
Full Changelog: v0.14.0...v0.15.0
v0.14.0
What's Changed
This release adds new syntax sugar:
Multiple senders syntax
Instead of
$x -> foo:bar
$y -> foo:bar
You can now write
[$x, $y] -> foo:bar
Same goes for normal senders with outports.
Components without net
keyword
If component has network but doesn't have nodes, you can omit net
keyword.
Before:
component Main(start) (stop) {
net { :start -> :stop }
}
After:
component Main(start) (stop) {
:start -> :stop
}
One-liners are also supported: component Main(start) (stop) { :start -> :stop }
One-line nodes section
Now you can instead of defining each component's node on separate line, define them in one line separating them with comma. Old syntax is supported (e.g. for components with big amount nodes).
Before:
component Foo(a) (b) {
nodes {
Bar
Baz
Bax
}
net {
// ...
}
}
After:
component Foo(a) (b) {
nodes { Bar, Baz, Bax }
net {
// ...
}
}
Related:
Full Changelog: v0.13.0...v0.14.0
v0.13.0
What's Changed
- Basic array indexing by @dorian3343 in #523
- Fizzbuzz by @emil14 in #525
Full Changelog: v0.12.0...v0.13.0
v0.12.0
v0.11.1
v0.11.0
What's Changed
- fix(typesys): expr stringer + e2e by @emil14 in #519
- Added list length component by @dorian3343 in #515
Full Changelog: v0.10.5...v0.11.0
v0.10.5
v0.10.4
v0.10.3
What's Changed
- typo by @lachsdachs in #504
- Fix port addr struct selectors by @emil14 in #506
- E2E now works in CI
- WIP 99 bottles by @emil14 in #498
New Contributors
- @lachsdachs made their first contribution in #504
Full Changelog: v0.10.2...v0.10.3