Skip to content

Releases: cpsusie/DotNetVault

Beta Release 0.2.1.22- Beta

07 Apr 16:05
Compare
Choose a tag to compare
Pre-release

RELEASE NOTES VERSION 0.2.1.22-beta

 This release adds a ReadWriteStringBuffer vault that provides thread-safe readonly, upgradable readonly and writable access to a StringBuilder object.  It also (when binaries or source retrieved from GitHub) includes the "Clorton Game" which demonstrates usage of the readwrite vault and provides a stress test to validate its functionality.

 "DotNetVault.Description.pdf" updated to reflect changes.

Version 0.2.1.9-alpha -- MAJOR NEW FEATURES INTRODUCED

15 Mar 01:14
Compare
Choose a tag to compare

RELEASE NOTES VERSION 0.2.1.9-alpha

This release contains MAJOR feature updates but is still considered unstable alpha.

Major new feature: vaults with varying underlying synchronization mechanisms.  You may now chose lock=free atomics (only mechanism before), the .NET standard Monitor.Enter (used by C# lock statement) or ReaderWriterLockSlim.  Because these vaults have a compatible (at compile-time) API, you can easily switch between synchronization mechanisms without any extensive refactoring required.  Also, the new vault based on ReaderWriterLockSlim allows for shared readonly locks, upgradable readonly locks and exclusive read-write locks.  If you are coming from an old version of this project, you may need to refactor in some places as their are a significant number of small breaking changes.  It should, however, be a quick and painless process.

Fixed Bug 76.  Illegal references to non-vault-safe types inside mutable vault's locked resource objects delegates where not being detected in the case of local functions or using anonymous function syntax. 

More unit tests.  There are now two unit test projects included.  The older one (DotNetVault.Test) tests the functionality of the built-in static analyzer.  The newer unit test project (VaultUnitTests) tests the functionality and synchronization mechanisms provided for the vaults.  It may also serve, in addition to the pre-existing sample code projects, as an introduction to this library.

Documentation (including "DotNetVault Description.pdf") updated to reflect changes.

v. 0.1.5.4 -- Stable Release

17 Feb 15:59
Compare
Choose a tag to compare

BUG 76 FIXED. The release addressed a bug where illegal shared mutable state capture was not being detected in cases where the capture happened in a local function or anonymous method syntax (as opposed to lambda or regular method syntax -- which detected it correctly). Now illegal reference to shared mutable state is detected in local functions, anonymous methods, and delegate expressions in addition to lambda statements/expressions and regular methods. Six unit tests were added to verify the fix and prevent regressions. Documentation was updated.

Unstable alpha release v0.2.0.2

13 Feb 20:18
Compare
Choose a tag to compare
Pre-release

This unstable alpha release (v0.1.5.2 is current stable release) enables efficient use of large mutable structs as protected resource objects in the BasicVault. It changes the Value property of the BasicVault's locked resource object to return by reference rather than values, allowing mutating calls to update the protected resource without unnecessary copying. Because it is possible now to predeclare a ref local to return to variable x, then, in inner scope after obtaining locked resource, reseat the ref local to refer to the protected resource and use that ref local, now referring to the protected resource, after the end of the locked resource object's scope, a new rule was added to the static analyzer to prevent such aliasing into a ref local. You may still, of course, obtain copy-free mutating access to the protected resource so long as you limit your access to use of the Value property and do not try to make a ref-local alias. Documentation, including examples, updated accordingly.

0.1.5.2 Release

08 Feb 17:20
Compare
Choose a tag to compare

This release fixed Bug 64 where an otherwise VaultSafe struct contained a vault-safe, non-readonly field referring to a VaultSafe immutable reference type: the fact that the field was not readonly (even though the reference type was immutable) wrongly caused the analyzer to conclude that the struct was not VaultSafe. This bug was corrected, unit tests were added to confirm the fix and prevent regressions, documentation updated to reflect changes and new version number.

v.0.1.5.0 Release

02 Feb 19:27
Compare
Choose a tag to compare

RELEASE NOTES VERSION 0.1.5.0:

This is the first release not explicitly marked beta or alpha. This is currently a one-person project produced outside of work hours. It is almost certainly not bug-free or without flaws, but it has been used extensively enough in the test projects to prove itself useful in managing shared mutable state in complex concurrent state machine scenarios. I am confident that it will prove useful, despite any residual bugs and flaws. You should not expect bug free or flawless conformance to specifications. It will prove, however, far more useful than problematic and -- practically speaking, especially from a standpoint of error avoidance, superior to other mechanisms for sharing mutable state in the presence of concurrency. Please report bugs or feature requests.

Updated Project Description PDF. Updated README.md.

v0.1.4.2 beta release

01 Feb 18:18
Compare
Choose a tag to compare
v0.1.4.2 beta release Pre-release
Pre-release

This release adds a linux quick start guide as well as a few changes to the windows version. Also, this release includes binaries of the example applications, including the stress tests.

0.1.4.1 Beta Release

26 Jan 19:22
Compare
Choose a tag to compare
0.1.4.1 Beta Release Pre-release
Pre-release

RELEASE NOTES VERSION 0.1.4.1:

Added quick start guide pdf and project (project available on GitHub).

Updated readme.md

Beta Release

21 Jan 14:09
Compare
Choose a tag to compare
Beta Release Pre-release
Pre-release

RELEASE NOTES VERSION 0.1.4.0:

Bug# 61 FIXED.  Double dispose is now practically impossible.  Analyzer now forbids out of line, pre-declaration of a variable that will be the subject of a using statement or declaration.  Analysis rules now prevent manual calls to Dispose method and additional method and analysis rules were added to account for the two use-cases where manual release of protected resource is necessary.  These rules make it difficult to accidentally use the new manual release method accidentally.

Bug# 62 FIXED.  Analysis now considers call of extension method using extension method syntax to be equivalent to a call thereto using static syntax.

Bug# 48 Fields in base classes were not being considered in vault safety analysis.  An otherwise fine sealed class could be considered vault safe despite fields in a base clase violating vault-safety rules.

Bug# 48 FIXED.  Analyzer now considers all fields from base classes when performing vault-safety analysis.  If a base class has field that, if present in sealed derived class being analyzed for vault-safety, would prevent the sealed derived class from being considered vault-safe, the sealed derived class will not be considered vault-safe.  A derived class, however, will not be considered not vault-safe MERELY because it inherits from a base class.  This change to the analyzer, does not, however, permit the base classes themselves to be used in a vault-safe context.

Laundry machine simulation can go significantly more quickly now.  With parameters of 1, 2, and 3 milliseconds and 200 laundry articles, the test completes on my pc in less than two minutes.  It no longer sleeps during task simulation if the timespan parameters entered are small enough that the sleeping will cause the tasks to take much longer than the parameters specified.  

A few convenience-based changes were made to the LaundryMachine simulation and the ConsoleStressTest.  Code in the ExampleCodePlayground, ConsoleStressTest and LaundryStessTest projects was updated to comply with new analysis rules as needed.

The console stress test now outputs whether the time stamps it gathers are based on a high precision timer or not.

Unit tests were added to the unit test project that validate the new analyis rules.

The pdf documentation was edited and updated based on the foregoing changes.

Xml Doc Comments for DotNetVault analyzer/library are now included in the NuGet package.

RELEASE NOTES VERSION 0.1.3.13:

Fixed two flaws in the ConsoleStressTest.  
The default ordering comparer for stress test logic now considers ThreadId, then Action Number, then TimeStamp, then Text. 

It now takes linearithmic rather than quadratic time to process and validate the results of the Console Stress test.

Added a table of know flaws and issues to the pdf documentation.  Code examples shown for these flaws now appear in the ExampleCodePlayground as well.