Skip to content

Releases: microsoft/AMBROSIA

Node.js Support for Ambrosia (in TypeScript) - NuGet update - Dependency update

25 Aug 21:36
Compare
Choose a tag to compare

Difference from v2.0.0.0 to v2.0.0.1

  • Update NuGet dependency Azure.Storage.Blob - 12.4.4 -> 12.13
  • Update NuGet dependency NewtonSoft.Json - 12.0.2 -> 13.0.1
  • Minor changes to Tests and JS documentation

Info from v2.0.0.0 release
Node.js Support (in TypeScript)

  • This release includes a language binding for Node.js. This enables developing Ambrosia apps for Node.js using TypeScript. To learn more about this new language binding, please start here.
    Adding support for a language other than C# has been a longstanding project goal because it helps demonstrates the universality of Ambrosia’s “global process abstraction model”.
  • It is strongly recommended to always use the ambrosia-node npm package (for example, ambrosia-node-2.0.1.tgz) with the Ambrosia binaries (for example, Ambrosia-win-x64.zip) from the same release (v2.0.0.0 in this example).
  • While we have run extensive testing (using Node.js 14.17.5), because this is the first release of the Node.js language binding it should be considered to be beta quality.

IC Hash Bug Fix (FORWARD COMPATABILITY BREAK)

  • In order to make a necessary improvement to the log record hash algorithm, logs generated by this and subsequent releases will NOT BE READABLE by older immortal coordinators. Backward compatibility is provided, however, and this release will recover and time-travel logs generated by all previous releases. This improvement fixes a bug where, in rare cases, broken log records would incorrectly be labeled as valid, and recovery would fail with an exception. Note that this could only happen when the immortal coordinator was run in Windows, storing logs in files, with administrator privileges, for maximum performance. This bug will not surface in previous versions if the immortal coordinator is run in a standard user process, or is run in another operating system, or is storing logs in Azure blobs.
  • We are bumping the major revision number with this release to call attention to the lack of forward compatibility for previous versions brought about by this bug fix.

Node.js Support for Ambrosia (in TypeScript) - NuGet update

11 Jan 16:56
Compare
Choose a tag to compare

Node.js Support (in TypeScript)

  • This release includes a language binding for Node.js. This enables developing Ambrosia apps for Node.js using TypeScript. To learn more about this new language binding, please start here.
    Adding support for a language other than C# has been a longstanding project goal because it helps demonstrates the universality of Ambrosia’s “global process abstraction model”.
  • It is strongly recommended to always use the ambrosia-node npm package (for example, ambrosia-node-2.0.1.tgz) with the Ambrosia binaries (for example, Ambrosia-win-x64.zip) from the same release (v2.0.0.0 in this example).
  • While we have run extensive testing (using Node.js 14.17.5), because this is the first release of the Node.js language binding it should be considered to be beta quality.

IC Hash Bug Fix (FORWARD COMPATABILITY BREAK)

  • In order to make a necessary improvement to the log record hash algorithm, logs generated by this and subsequent releases will NOT BE READABLE by older immortal coordinators. Backward compatibility is provided, however, and this release will recover and time-travel logs generated by all previous releases. This improvement fixes a bug where, in rare cases, broken log records would incorrectly be labeled as valid, and recovery would fail with an exception. Note that this could only happen when the immortal coordinator was run in Windows, storing logs in files, with administrator privileges, for maximum performance. This bug will not surface in previous versions if the immortal coordinator is run in a standard user process, or is run in another operating system, or is storing logs in Azure blobs.
  • We are bumping the major revision number with this release to call attention to the lack of forward compatibility for previous versions brought about by this bug fix.

More client oriented Ambrosia features and bug fixes - NuGet Update

27 Apr 23:01
Compare
Choose a tag to compare
  1. We now support time travel debugging with in-proc deployments.
  2. Please note the update to the HelloWorld sample. A new walkthrough of in-proc time travel debugging in HelloWorld will be available shortly, in addition to modifications of existing documentation to accommodate the HelloWorld changes which enable in-proc time travel debugging.
  3. We now support a log trigger size override in ImmortalCoordinator.exe
  4. Fixed a rarely occurring concurrency bug in the Immortal Coordinator. In rare situations, the IC would deadlock

This release is the first of a number of client oriented Ambrosia releases. Much more to come! In this release:

12 Nov 18:21
Compare
Choose a tag to compare
  1. Ambrosia now supports integrated ICs for C# immortals. Starting with this release, C# immortals can be run, together with their immortal coordinators in the same process. See the new HelloWorld for an example of how to do this. This is important for settings where processes cannot easily be separately started, like cell phones and iPads. Note that active/active and time travel debugging are still only available when run with separate IC. The ability to use these features with integrated IC will be added in a future release.
  2. Ambrosia now supports log storage in Azure Blobs. Again, mounting network file systems on phones and iPads was a problem, and is no longer necessary. Immortal authors may now choose, based on a new log storage driver model, with the potential of adding more log storage options down the road. This feature is available in both separate and integrated IC modes. For separate IC, it is a parameter to the IC executable. For integrated IC, the log storage type is specified with a programmatic gesture, which is demonstrated in HelloWorld.
  3. To support migration scenarios, running non-active/active immortal instances are automatically terminated when the instance is started again elsewhere, after the newly started instance recovers, creating a fluid migration experience from one device to another.
  4. Console output from integrated ICs is sent to the .NET Trace framework, which may be handled in the usual ways. HelloWorld shows an example of how these trace messages can be directed to a file. As a result, the console output for the IC now contains a trace header at the beginning of every message.

Other new features/changes/fixes:

  1. receivePort, sendPort, and log storage paths are now overridable from the IC command line
  2. Integrated a CRA bug fix which would sometimes result in the failure of one instance to connect to another through TCP.
  3. The Ambrosia Nuget package now only contains a .NET Standard 2.0 library. Binaries still come in .NET core, native Windows x86 ,and Linux x86 versions.
  4. Due to integrated IC features, the Nuget package now contains a significant number of new dlls.
  5. For language binding authors: when establishing connections between the language binding and the IC, the IC now acts as a server to establish both TCP connections, rather than one as a server, and one as a client. This will be helpful in settings where applications can request TCP connections, but can’t serve them, as is the case in some execution environments, for security reasons.

Breaking change:

  1. Due to changes in .NET, the library Ambrosia was using to serialize and restore async state no longer works. As a result, remote async call support has been removed, until .NET supports the needed functionality. There are workarounds for immortal authors, one of which is now showcased in Client3 of HelloWorld. Future support is planned to provide more help in handling expected responses to remote calls. One side benefit of this is that there are no longer cases which require debug builds to ensure correct behavior.

Upgrade to VS 2019 and .Net Core 3.1 - NuGet Update

01 Apr 18:26
Compare
Choose a tag to compare

This release updates Ambrosia to work with Visual Studio 2019 and .NET Core 3.1, and removes a number of build warnings.

High Perf Logging, CRA Update, .Net Core update and Bug fixes - Nuget Update

25 Oct 19:05
Compare
Choose a tag to compare

High performance logging is now enabled in .NET Core on Windows!
Bug fix associated with recovery and impulses.
Updated to latest CRA in preparation for the addition of new features.
Updated to .NET Core 2.2

Improved error message - Nuget update

27 Jun 17:55
Compare
Choose a tag to compare

Improved error messages.

Upgrade feature improvement - Nuget update

17 Jun 22:23
Compare
Choose a tag to compare

Minimizes downtime associated with upgrading. In particular, when an upgrading secondary is created and catches up to the primary, the primary dies and the old secondaries are suspended. If the upgrade is successful, all secondaries die and new ones using the new version of the code may be deployed. If the upgrade is unsuccessful, the suspended secondaries wake up, and one is promoted to become a primary, and the old version of the code continues to run. This change eliminates the recovery time from potential downtime while upgrading.

Bug fix for Active / Active scenario - Nuget Update

12 Jun 17:06
Compare
Choose a tag to compare

Fixes a bug that prevents BecomingPrimary from being called on promoted secondaries.

Repackaged Nuget package and better error messaging - Nuget update

14 May 21:49
Compare
Choose a tag to compare

Improved error messaging as well as repackaging the Nuget package.