What's new in Orleans
v1.2.3 July 11th 2016
Release notes
- Ability to force creation of Orleans serializers for types not marked with [Serializable] by using GenerateSerializer, KnownType or KnownAssembly.TreatTypesAsSerializable #1888 #1864 #1855
- Troubleshooting improvements:
- Fixed stacktrace preservation in exceptions from grain calls (bug introduced in 1.2.0) #1879 #1808
- Better messaging when silo fails to join due to initial connectivity problems #1866 #1933
- Throw meaningful exception if grain timer is created outside grain context #1858
- Bug fixes:
- Do not deactivate Stateless Workers upon grain directory partition shutdown #1838
- interception works with Streams and grain extensions #1874
- Memory Storage provider properly enforces etags for any state that has been added or removed, but does not enforce etags for newly added state. #1885
- Other minor bug fixes #1884 #1823
v1.2.2 June 15th 2016
Release notes
- Bugfix: Remote stacktrace is once again being included in the exception that bubbles up to the caller (bug introduced in 1.2.0). #1808
- Bugfix: Memory Storage provider no longer throws NullReferenceException after the grain state is cleared. #1804
- Microsoft.Orleans.OrleansCodeGenerator.Build package updated to not add the empty orleans.codegen.cs content file at install time, and instead create it at build time (should be more compatible with NuGet Transitive Restore). #1720
- Added GrainCreator abstraction to enable some unit testing scenarios. #1802 & #1792
- ServiceBus package dependency upgraded to 3.2.2 #1758
v1.2.1 May 19th 2016
Release notes
- SupressDuplicateDeads: Use SiloAddress.Endpoint instead of InstanceName. 1728
- Added support for complex generic grain parameters. #1732
- Fix race condition bugs in LocalReminderService. #1757
v1.2.0 May 4th 2016
Release notes
In addition to all the changes in 1.2.0-beta.
Release notes
- Major improvements
- Codegen & serialization
- Programmatic config
- Other
- Many other fixes and improvements.
v1.1.3 March 9th 2016
Release notes
A patch release with a set of bug fixes.
Nehme Bilal and Reuben Bond talk about deploying Orleans with YAMS and Service Fabric
Fabruary 26st 2016
Networking discussion hosted by Jason Bragg
February 11th 2016
Orleans core team present the roadmap
January 21st 2016
v1.1.2 January 20th 2016
Release notes
A patch release with bug fixes, primarily for codegen and serializer corner cases.
v1.1.1 January 11th 2016
Release notes
A patch release for two bug fixes
Christmas Special - Yevhen Bobrov on Orleankka
December 17th 2015
v1.1.0 December 14nd 2015
Release notes
- New Roslyn-based codegen, compile time and run time
- Public APIs:
- Core API for Event Sourcing
- Most methods of
Grain class are now virtual
- ASP.NET vNext style Dependency Injection for grains
- New telemetry API
- Portability:
- Support for C# 6.0
- Improved support for F# and VB
- Code adjustments towards CoreCLR compliance
- Orleans assemblies are not strong-named anymore
- SQL:
OrleansSQLUtils.dll for SQL-related functionality
- MySQL is now supported as a cluster membership store
- Storage provider for SQL Server
- Serialization:
- Support for pluggable external serializers
- Bond serializer plugin
- Support for Json.Net as a fallback serializer
- Added
[KnownType] attribute for generating serializers for arbitrary types
- Upgraded to Azure Storage 5.0
- Upgraded to .NET 4.5.1
- Other fixes and improvements
MSR PhDs on Geo Distributed Orleansp
October 23rd 2015
v1.0.10 September 22nd 2015
Release notes
General:
- No SDK msi anymore, only NuGets from now on
- Removed support for grain state interfaces and code generation of state classes
- Removed code generated MyGrainFactory.GetGrain() factory methods
- StorageProvider attribute is now optional
- Membership and reminder table implementations were made pluggable
- Improvements to ObserverSubscriptionManager
- Strong guarantee for specified max number of StatelessWorker activations per silo
- General purpose interface for sending run time control commands to providers
- Named event to trigger silo shutdown
Streaming:
- Support for multiple ImplicitSubscription attributes for streams
- Support for rewinding of implicit stream subscriptions
- Propagate request context via persistent streams
- More options for stream Queue Balancers
- Delayed repartitioning of stream queues
- Improved cleanup of client stream producers/consumers when client shuts down
- Config option and management grain API for controlling start/stop state of stream pulling agents
- Azure Queue stream provider fixed to guarantees at least once delivery
- Numerous bug fixes and improvements, mostly to streaming
v1.0.9 July 15th 2015
This release includes several significant API changes that require adjustments in existing code created with v1.0.8 or earlier versions of Orleans
1. GrainFactory is not a static class anymore, so that the default implementation can be substituted for testing and other reasons.
Within grain code one can still use code like GrainFactory.GetGrain<IFoo>(grainKey) because Grain class now has a GrainFactory property, which makes the above code translate to base.GrainFactory.GetGrain<IFoo>(grainKey). So no change is necessary for such code.
Within the client (frontend) context the default GrainFactory is available as a property on the GrainClient class. So, the code that used to be GrainFactory.GetGrain<IFoo>(grainKey) needs to be changed to GrainClient.GrainFactory.GetGrain<IFoo>(grainKey)
2. Read/Write/ClearStateAsync methods methods that on grain state were moved from state objects to Grain class
Wherever you have grain code like this.State.WriteStateAsync(), it needs to change to this.WriteStateAsync(). Similar adjustments need to be made to usage of ReadeStateAsync() and CleareStateAsync().
3. Binaries have been removed from the Orleans SDK
If your projects still reference those binaries directly from the SDK folder, you need to switch to using NuGet packages instead. If you are already consuming Orleans via NuGet, you are good.
4. Local Silo test environment has been removed from the Orleans SDK
If you were using the Local Silo environment from the SDK folder for testing your grains, you need to add a silo host project to your solution using the “Orleans Dev/Test Host” Visual Studio project template. Before you do that, make sure you install the v1.0.9 version of the SDK. Refer to samples for examples of how that is done.
Release notes
- Graceful shutdown of a silo with deactivation of all grains hosted in it.
- Support for Dependency Injection and better testability of grains:
- Direct instantiation of grains with passing
IGrainIdentity and IGrainRuntime to constructor.
IGrainRuntime is a mockable interface that includes a set of system service interfaces, also mockable.
GrainFactory is a non-static class that is accessed via base.GrainFactory from within a grain and via GrainClient.GrainFactory on the client.
- Deprecated generated per-interface
GetGrain() static factory methods.
- Added support for concrete grain state classes, deprecated grain state interfaces and code generation of grain classes.
- Removed
Read/Write/ClearStateAsync methods from IGrainState and moved them to Grain<T>.
- Performance optimizations of messaging with up to 40% improvements in throughput.
- Added ZooKeeper based cluster membership storage option.
- Removed compile time dependency on Microsoft.WindowsAzure.ServiceRuntime.dll.
- Consolidated dependencies on Azure in OrleansAzureUtils.dll, which is now optional.
- Refactored SQL system store to be more robust and vendor agnostic.
- Added streaming event deliver policy and failure reporting.
- Changed VS project templates to use only NuGet packages and not the SDK.
- Removed binaries and local silo environment from the SDK.
- Numerous bug fixes and other improvements.
v1.0.8 May 26th 2015
Release notes
- Fixed versions of references Orleans NuGet packages to match the current one.
- Switched message header keys from strings to enums for performance.
- Fixed a deadlock issue in deactivation process.
- Added a NuGet package to simplify testing of grain projects - Microsoft.Orleans.TestingHost.
- Fixed regression of reporting codegen error to Visual Studio Errors window.
- Added version to SDK msi product and folder name.
- Other fixes and improvements.
Gabriel Kliot on the new Orleans Streaming API
May 22nd 2015
v1.0.7 May 15th 2015
Release notes
- Major refactoring of the stream adapter API.
- Improvements to the streaming API to support subscription multiplicity.
- Made IAddressable.AsReference strongly-typed.
- Added a Chocolatey package.
- Added support for private storage keys for testing.
- Replaced ExtendedPrimaryKeyAttribute with IGrainWithGuidCompoundKey and IGrainWithIntegerCompoundKey.
- Added support for grain classes that are implementations of generic grain interfaces with concrete type arguments.
- Numerous other fixes and improvements.
Reuben Bond on using Orleans at FreeBay
April 15th 2015
v1.0.5 March 30th 2015
Release notes
- Major reorganization of NuGet packages and project templates.
- Fixes to reflection-only assembly inspection and loading for side-by-side versioning.
- Improved scalability of observers.
- Programmatic configuration of providers.
- Numerous other fixes and improvements.
Yevhen Bobrov on a Uniform API for Orleans
March 6th 2015
Orleans team live Q&A and roadmap
January 12th 2015
Orleans Open Source v1.0 Update (January 2015)
###Initial stable production-quality release.
Since the September 2014 Preview Update we have made a small number of public API changes, mainly related to clean up and more consistent naming. Those changes are summarized below:
Public Type Names Changes
| Old API |
New API |
| OrleansLogger |
Logger |
| OrleansClient |
GrainClient |
| Grain.ActivateAsync |
Grain.OnActivateAsync |
| Grain.DeactivateAsync |
Grain.OnDeactivateAsync |
| Orleans.Host.OrleansSiloHost |
Orleans.Runtime.Host.SiloHost |
| Orleans.Host.OrleansAzureSilo |
Orleans.Runtime.Host.AzureSilo |
| Orleans.Host.OrleansAzureClient |
Orleans.Runtime.Host.zureClient |
| Orleans.Providers.IOrleansProvider |
Orleans.Providers.IProvider |
| Orleans.Runtime.ActorRuntimeException |
Orleans.Runtime.OrleansException |
| OrleansConfiguration |
ClusterConfiguration |
| LoadAwarePlacementAttribute |
ActivationCountBasedPlacementAttribute |
Other Changes
- All grain placement attribute (including [
StatelessWorker]) now need to be defined on grain implementation class, rather than on grain interface.
LocalPlacementAttribute was removed. There are now only StatelessWorker and PreferLocalPlacement.
- Support for Reactive programming with Async RX.
- Orleans NuGet packages are now published on NuGet.org.
See this wiki page for advice on how to convert legacy Orleans grain interface / class projects over to using NuGet packages.
Jakub Konecki on Event Sourced Grains
December 18th 2014