Skip to content

Releases: bonsai-rx/bonsai

2.9.0-preview1

03 Sep 21:57
Compare
Choose a tag to compare
2.9.0-preview1 Pre-release
Pre-release

Warning

THIS RELEASE IS UNDER ACTIVE DEVELOPMENT. We are actively looking for feedback on your experience with the new features. All preview features are subject to breaking changes as we incorporate feedback and so we do not recommend you to use this release for any production applications.

This is the first preview release in the 2.9 series, which introduces significant changes to the language editor experience. Please give us any feedback either in the comments below or by opening a new discussion. If you create a new discussion, please indicate clearly that your question is about the 2.9.0-preview1 release.

In this preview, we are introducing a new workflow navigation model coupling a single-page browser-like view of the current workflow level, with a nested hierarchy tree view and breadcrumbs to allow quickly jumping between the different sections and modules of a complex project.

We also introduce a new workflow state watch mode, active by default, which provides an unprecedented level of runtime feedback about the inner workings of a reactive workflow, including when sequences are subscribed to, when they produce values, terminate, or are cancelled. We expect this mode to provide an invaluable tool for learning visual reactive programming and understanding the behavior of programs written in Bonsai.

In anticipation of new editor features, we are introducing a reorganization of the .layout files, which were previously used to store debugger visualizer settings over multiple runs. These files previously cluttered folders containing multiple workflow files and are hard to extend to the more complex project-based settings we now need to evolve the editor experience. With this reorganization we expect to facilitate a cleaner project folder structure and introduce more clarity on the version control of workflows.

Finally, we modernized the package manager dialog to support our migration from MyGet to NuGet. As discussed during the last MyGet outage, we urgently need to broaden our community package deployment options. The new package manager introduces support for two new package types: BonsaiLibrary and BonsaiGallery for packages providing libraries of Bonsai operators and example workflows, respectively.

These package types will be used to curate the nuget.org feed to keep our package manager focused on libraries providing reactive operators. Currently package type filtering is only supported for the nuget.org feed, but it is turned on by default there. New packages deployed to nuget.org are expected to declare both Dependency and BonsaiLibrary as their package types for maximum discoverability.

Important

In the near future, we will move entirely out of MyGet and will archive the community feed.

What's Changed

🔮 Feature Preview

🎉 New Features

  • Allow propagation of Defer nested sequence visualizer by @glopesdev in #1931
  • Rename CombineTimestamp to CreateTimestamped by @glopesdev in #1941
  • Make period a nullable property of reactive timer and clarify documentation by @glopesdev in #1957

🐞 Bug Fixes

  • Exclude build dependencies when counting inputs to new nested node by @glopesdev in #1946

🚀 Performance Improvements

🔧 Engineering

Full Changelog: 2.8.5...2.9.0-preview1

Bonsai 2.8.5

16 Jul 05:39
9089b6e
Compare
Choose a tag to compare

What's Changed

🎉 New Features

🐞 Bug Fixes

🔧 Engineering

📄 Documentation

Full Changelog: 2.8.4...2.8.5

Bonsai 2.8.4

10 Jul 23:28
2bab127
Compare
Choose a tag to compare

What's Changed

🎉 New Features

🐞 Bug Fixes

🚀 Performance Improvements

  • Preload all extension types from include workflows by @glopesdev in #1890

🔧 Engineering

📄 Documentation

Full Changelog: 2.8.3...2.8.4

Bonsai 2.8.3

23 May 14:02
Compare
Choose a tag to compare

What's Changed

🎉 New Features

🐞 Bug Fixes

🚀 Performance Improvements

🔧 Engineering

📄 Documentation

New Contributors

Full Changelog: 2.8.2...2.8.3

Bonsai 2.8.2

01 Mar 03:41
Compare
Choose a tag to compare

Second service release for the 2.8 series, including patches for installer, editor and bootstrapper packages.

What's Changed

Full Changelog: 2.8.1...2.8.2

Bonsai 2.8.1

20 Sep 14:19
Compare
Choose a tag to compare

First service release for the 2.8 series, including patches for bootstrapper and core packages.

What's Changed

  • Avoid permissive exclusion of method overloads declared in base type by @glopesdev in #1512
  • Ensure base path is not modified on resubscription by @glopesdev in #1554
  • Add library folders to DLL search path on windows by @glopesdev in #1555
  • Ensure arguments with spaces are surrounded by quotation marks by @glopesdev in #1563

Full Changelog: 2.8.0...2.8.1

Bonsai 2.8

30 Jul 22:14
Compare
Choose a tag to compare

This is the first release in the 2.8 series and one of the most significant in the last couple of years.

Critical parts of the compiler, IDE and bootstrapper have been rewritten to allow evolving the infrastructure into the new cross-platform .NET core. We have made the editor and language learning experience more accessible by providing support for rich rendering of Markdown annotations and embedded documentation for all operators. Finally, we have established the Bonsai Foundation, an independent organization to support our commitment to a free and open-source future, and to the benefit of our growing community.

Embedded code annotations and documentation

Code comments are an essential part of any programming language, and Bonsai is no exception. As the complexity of projects increases, and knowledge needs to be transferred across generations of scientists, it becomes more important to have effective ways of sharing information about how the internals of specific workflows work.

image

This release introduces a new Annotation operator, which can be placed on its own or attached to any node, and where you can write your own development notes or operating instructions in Markdown to be saved with the workflow. Being a visual language, we think that having the ability to write-down rich HTML annotations, potentially with images or schematics, will be an important feature of Bonsai code comments. Markdown provides a great compromise between ease-of-use, flexibility and rich HTML support, which is leveraged by the new built-in browser panel which has also been co-opted to display embedded documentation.

Fully-featured Linux editor

We've been progressively cleaning up the kinks in cross-platform support of the current Bonsai editor (Mono .NET framework) and we now can run the editor with full-functionality (i.e. cameras, OpenGL, sound, serial ports) in latest Ubuntu, Arch Linux and Raspberry Pi. By taking advantage of VS Code on Linux it even becomes possible to use C# scripting directly.

We have documented the installation steps in detail and removed most crippling crashes and painful limitations around Bonsai on Mono. All the functionality required to run our tutorials and learning materials should now be available to any Linux system.

Announcing the Bonsai Foundation

We are welcoming our first new code contributors (@bruno-f-cruz), and announcing the Bonsai Foundation as part of our commitment to make Bonsai a free, open-source, and sustainable community-driven project. The primary role of the Foundation is to organize the development of the Bonsai ecosystem, and facilitate the sharing of contributions between individuals and organizations who want to volunteer their work for community projects. We hope that by establishing clear contribution guidelines, and improving access to freely available teaching materials, documentation, conferences and summer courses, we can empower current and future generations of scientists anywhere in the world to use this free and open-source programming language.

We hope you will join us in our journey!

What's Changed

  • Add dotnet template for creating a new bonsai environment by @glopesdev in #1251
  • Increase default max number of significant digits for floating-point values in CsvWriter by @glopesdev in #1261
  • Reuse top-level prefix for all extension base types with explicit XML type declarations by @glopesdev in #1072
  • Allow generic type resolution of TypeMapping values outside the core namespace by @glopesdev in #1279
  • Allow overload inference for polymorphic operators by @glopesdev in #1291
  • Ensure unique XML namespace prefix declarations by @glopesdev in #1292
  • Avoid throwing on ResourceSubject dispose if source sequence terminated exceptionally by @glopesdev in #1293
  • Ensure priority of base non-polymorphic properties by @glopesdev in #1306
  • Add support for adding rich annotations to the workflow by @glopesdev in #1311
  • Add support for dynamic keyword and dynamic object binding in C# scripts by @glopesdev in #1258
  • Ensure single subscription to Gate opening events by @glopesdev in #1315
  • Optimized workflow reordering and insert at cursor by @glopesdev in #1324
  • Add support for in-editor docs browser by @glopesdev in #1359
  • Improved support for editing annotations by @glopesdev in #1361
  • Add support for the HasFlag operator by @glopesdev in #1364
  • Add support for polymorphic operator docs by @glopesdev in #1369
  • Ensure replaced nodes keep the same index by @glopesdev in #1371
  • Add support for using System.Numerics namespace in local scripts by @glopesdev in #1373
  • Limit group context menu to core nested operators by @glopesdev in #1376
  • Allow derived IO writer classes to specify base path by @glopesdev in #1377
  • Add tags to project templates by @glopesdev in #1382
  • Regression testing for sorting and editor changes by @glopesdev in #1393
  • Rewrite bootstrapper logic to avoid relying on AppDomain by @glopesdev in #1392
  • Mono compatibility improvements by @glopesdev in #1407
  • Redirect headless exceptions to stderr by @glopesdev in #1411
  • Add assembly reference for data serialization by @glopesdev in #1413
  • Fixes and improvements to workflow sort order by @glopesdev in #1414
  • Cache configuration parameters for each async call in LoadImage operator by @glopesdev in #1421
  • Bump NuGet.Protocol from 6.3.1 to 6.6.1 by @glopesdev in #1422
  • Add keyboard shortcut for changing history length by @glopesdev in #1423
  • Early error checking and file name generation for FileSink by @glopesdev in #1430
  • Improve support for high-frequency visualizers by @glopesdev in #1415
  • Allow lazy initialization of webview panel by @glopesdev in #1432
  • Simplify qualified name for workflow element icons by @glopesdev in #1433
  • Avoid returning resources declared inside disabled nodes by @glopesdev in #1439
  • Update package template debug settings for new bootstrapper by @glopesdev in #1442
  • Avoid deadlock when disposing serial connection by @glopesdev in #1443
  • Refactor default serial port implementation to avoid event callbacks by @glopesdev in #1444
  • Refactor arduino interface to avoid event callback by @glopesdev in #1445
  • Refactor text visualizer to use buffered updates by @glopesdev in #1446
  • Add net6.0 build target to player project by @glopesdev in #1447
  • Update package dependencies by @glopesdev in #1448
  • Add item templates for dotnet new by @glopesdev in #1449
  • Add community code of conduct by @glopesdev in #1450
  • Remove XML serialization properties from public API by @glopesdev in #1451
  • Add tie-break for method overloads in derived classes by @glopesdev in #1452
  • Add operators for reading and writing binary data from a serial port by @glopesdev in #959
  • Improve information contrast for obsolete operators by @glopesdev in #1455
  • Add support for streaming binary serial read buffers by @glopesdev in #1456
  • Ensure output of Normalize is bounded between zero and one by @bruno-f-cruz in #1400
  • Add operator to query an environment variable by @bruno-f-cruz in #1232
  • Require user defined conversion when multicasting to subject with non-matching type by @glopesdev in #1459
  • Refactor matrix and spike visualizers to use buffered updates by @glopesdev in #1460
  • Allow starting editor session on a specified folder by @glopesdev in #1464
  • Add citation file by @glopesdev in #1466
  • Ensure Vid...
Read more

Bonsai 2.7.2

01 Dec 12:13
Compare
Choose a tag to compare

Second service release for the 2.7 series, including patches for editor and core packages.

What's Changed

  • Ensure correct upgrade of inspectable workflows by @glopesdev in #1150
  • Ensure XmlInclude types are included in serializer by @glopesdev in #1157
  • Avoid locked file access when upgrading and re-saving extensions by @glopesdev in #1164
  • Ensure initial and current directories are equal by @glopesdev in #1158
  • Disable editing of design-only properties inside included workflows by @glopesdev in #1165

Full Changelog: 2.7.1...2.7.2

Bonsai 2.7.1

14 Nov 13:15
Compare
Choose a tag to compare

First service release for the 2.7 series, including patches for bootstrapper, editor and core packages.

What's Changed

  • Fix layout for gallery and package export dialogs by @glopesdev in #1128
  • Add support for COLLADA, FBX and STL formats by @glopesdev in #1136
  • Add extension folders to IronPython search path by @glopesdev in #1144
  • Fix drag and dropping of workflow files into the graph view by @glopesdev in #1133
  • Ensure embedded workflows also upgrade on ungroup by @glopesdev in #1134
  • Ensure upgrading does not re-enable disabled nodes by @glopesdev in #1132
  • Ensure extensions are searched in order from project to config by @glopesdev in #1137
  • Allow deprecation of embedded workflows using assembly metadata type by @glopesdev in #1138

Full Changelog: 2.7...2.7.1

Bonsai 2.7

16 Oct 20:06
Compare
Choose a tag to compare

This feature release adds support for built-in documentation of core and community packages and brings improvements to interoperability with hardware protocols. New UI functionality for replacing, renaming, and finding operators has been added, together with a new system for building custom visualizers directly in the workflow.

All reactive operators have been moved to a common namespace, and support for concurrency control has been added. Several namespaces and packages have been refactored in preparation for increased cross-platform targeting and support of .NET 6.0 in subsequent feature releases.

What's Changed

  • Merge 2.6 patches by @glopesdev in #880
  • Generalize multi-region editors and add support for editing circular regions by @glopesdev in #932
  • Allow specifying limits for rolling graph builder by @glopesdev in #927
  • Add support to bind parameters with white space by @glopesdev in #944
  • Refactor and standardize SVG export functions by @glopesdev in #940
  • Generalize layout settings and mashup API for arbitrary visualizer composition by @glopesdev in #917
  • Allow cropping fixed-size rectangular regions around specified image points by @glopesdev in #996
  • Add support for context-dependent renaming of subjects by @glopesdev in #921
  • Add built-in integration for community documentation by @glopesdev in #937
  • Add type descriptor support for property mapping by @glopesdev in #923
  • Allow closing editor tab with middle mouse click by @glopesdev in #1013
  • Add support for replacing selected nodes by @glopesdev in #1009
  • Split expression and python scripting packages by @glopesdev in #942
  • Load package manager dependencies without assembly lock by @glopesdev in #1049
  • Add netstandard build target for core assembly by @glopesdev in #1052
  • Refactor namespace organization for reactive operators by @glopesdev in #1046
  • Disable modifier keys for docs and rename actions by @glopesdev in #1061
  • Ensure nested mashup sources are always serialized by @glopesdev in #1065
  • Finalize reorganization of reactive namespace by @glopesdev in #1064
  • Align semantics of Slice operator with Take by @glopesdev in #1067
  • Add support for finding toolbox elements by @glopesdev in #1074
  • Require opt-in attribute to reset combinator by @glopesdev in #1083
  • Add scheduler and concurrency control operators by @glopesdev in #1082

Full Changelog: 2.6.3...2.7