19-07-2023
ledjon-behluli
released this
19 Jul 09:17
·
101 commits
to master
since this release
OrleanSpaces.Analyzers
NuGet v0.2.0
Features
- OSA001 - Interface is intended for internal use only.
- OSA002 - Avoid constructor instantiation having only
null
type, or no arguments. - OSA003 - One or more of the supplied argument types for
SpaceTuple
orSpaceTemplate
is not supported.
OrleanSpaces
NuGet v0.3.0
This release a MAJOR release with many braking changes, but necessary to improve the quality, versatility and performance of this library.
Features
- Specialized Tuples - In addition to the
SpaceTuple
&SpaceTemplate
which are the generic type tuples that can be used when you want to store different kind of field types together. Now we have introduced specialized (thereby strongly-typed) tuples, templates and agents. The library comes with a plethora of tuples and corresponding templates for the most used .NET types:bool
,byte
,char
,DateTime
,DateTimeOffset
,decimal
,double
,float
,Guid
,Int128
,int
,long
,sbyte
,short
,TimeSpan
,UInt128
,uint
,ulong
,ushort
. - Strongly-typed Agents - Due to the introduction of the specialized tuples.
- Improved Matching Process - Tuple search is performed via matching of templates to corresponding tuples in the space. This process has been highly parallelized for specialized tuples by leveraging hardware acceleration, specifically vectorization techniques.
- Space Replication - For every tuple space type and related changes to it, replication of its state is being performed constantly to all of the agent(s) that are responsible to interact with the corresponding tuple space type.
- Tuple Locality - Due to space replication, each of the agents has access to a copy of the tuple space in-memory, therefor search like operations are much faster, and also due to the much improved matching process of specialized tuples, searching through the space is blazingly fast.
- Host Agent Access - Previously the host of the tuple space did not have access to the space agent, therefor could not perform operations on the space. It was always the client that was performing these actions. Now both the host/server & client can perform actions on the tuple space(s).
- Tuple Streaming - Via the agent(s), any tuple writes in the space can be streamed directly to the client code via a new API that exposes an
IAsyncEnumerable<T>
whereT
is anyISpaceTuple
. With this, we now implement all major communication models:- Synchronous Request-Reply model.
- Asynchronous Request-Reply model.
- Streaming model.
- Publish-Subscribe model.
- Performance Improvements - Due to the introduction of the specialized model, space replication, a plethora of improvements has come, both in the form of faster code execution and significantly lower amount of heap allocations.
- Upgrade to .NET 7 - The project now targets
.NET 7
and alsoOrleans 7
. - Documentation - Update all documentation to reflect the changes.
Breaking Changes
- A LOT 🙇