Skip to content

Releases: reactiveui/Akavache

Akavache 3.1.2

20 Nov 23:43
Compare
Choose a tag to compare

What's New

Bug Fixes:

Akavache 3.1.1

12 Oct 08:58
Compare
Choose a tag to compare

What's New

Bulk Operations

BlobCache now supports overloads and new methods to add / get / invalidate multiple objects in the same API call. Previously if you wanted to insert many objects into the cache at the same time, it could be potentially very expensive / wasteful. Check out #79 for the details. For example:

var interestingKeys = await BlobCache.UserAccount.GetObjectsAsync<string>(new[] { "Foo", "Bar", "Baz", });

interestingKeys["Foo"]
>>> It worked!

Speed!

Akavache now correctly parallelizes connections to SQLite as well as fixes some threading errors that you might have been seeing (#66).

Hide our version of SQLite3

Our version of @praeclarum's SQLite3 bindings were exposed as public classes, which conflicted with the official versions, this release makes them internal (#72).

Modern Xamarin support

Akavache is now built against the official Xamarin Rx binaries. This means that on MonoMac, you need to be up-to-date on the latest Mono install.

Other Stuff

Akavache 3.0.2

09 Aug 13:26
Compare
Choose a tag to compare

What's New

Bug Fixes

  • Fix bugs around manual dependency registration
  • Correctly handle invalidation in GetAndFetchLatest
  • Handle unsynchronized access to variable in SQLite3 driver

Akavache 3.0.1

03 Jul 19:06
Compare
Choose a tag to compare

What's New

Akavache 3.0 is now released! A special thanks to @onovotny for his huge contribution to PLib support in this release.

Portable Library Support

Akavache 3.0 can now be used with Portable Libraries, including handling images and downloading URLs, via the Splat helper library. This means that with Akavache, nearly all of your serialization and network access layer can be cross-platform.

Cleaned up initialization support

Just like in ReactiveUI 5.0, Akavache now has a much cleaner initialization setup, which is also reliant on RxUI 5.0's RxApp.DependencyResolver. Many libraries now initialize themselves automatically if possible (on iOS / Cocoa), and other platforms now only require you to set BlobCache.ApplicationName.

Platforms Supported

Note that for this release, .NET 4.0-based platforms such as Silverlight and WP7 are no longer supported. Bug fixes will still be ported to the Akavache 2.x series when appropriate, you can use the NuGet Package Console to configure your app to only download 2.x updates. Here are the officially supported platforms:

  • Xamarin.iOS
  • Xamarin.Mac
  • Xamarin.Android
  • .NET 4.5 Desktop (WPF)
  • Windows Phone 8
  • Windows Store (WinRT)

Akavache 2.6.7

18 Jun 23:21
Compare
Choose a tag to compare

What's New

Notable changes since 2.6.5

  • Handle serializing simple types as values in SQLite3 backend
  • Correctly handle opening paths containing Unicode characters in SQLite3 backend
  • Fix race condition on dispose where disposing a single BlobCache could affect other blob caches.
  • Remove WP8 SQLite3-based backend, as WP8 disables P/Invoke on device at runtime.

Akavache 2.6.5

01 May 22:42
Compare
Choose a tag to compare

What's New

Bugfix release, fixes problem with using BlobCache.Secure

Akavache 2.6.4

02 Apr 22:21
Compare
Choose a tag to compare

What's New

  • Akavache.SQLite3 now configures itself AutoMagically™ if it's included in your project, no need to manually set BlobCache.LocalMachine et al.
  • Remove key operation serialization from old-school Akavache - you need to await all calls to BlobCache, no more sloppy coding!
  • Support for Xamarin.Mac, Xamarin.iOS, and Xamarin.Android - on Cocoa-based platforms, your ApplicationName is automatically configured to be your Bundle ID, no need to set it by-hand.
  • Fix a bug in SQLite3 engine where GetOrFetchObject with an expiration wouldn't work.

Akavache 2.6.2

13 Mar 23:31
Compare
Choose a tag to compare

What's New

Completion for Object Methods

Now all object invalidation methods (like InvalidateObject, InvalidateAllObjects, etc) return IObservable<Unit> so you can await them

Miscellaneous fixes

  • Fixes to PersistentBlobCache Dispose so that it properly flushes metadata on exit

2.6.1

06 Mar 02:04
Compare
Choose a tag to compare

What's New

Shut It All Down

Akavache now has an easy way to shut itself down. Make sure to run this on app shutdown:

BlobCache.Shutdown().Wait()

Or if you're on WinRT:

var deferral = e.SuspendingOperation.GetDeferral();
await BlobCache.Shutdown();
deferral.Complete()

Other Stuff

  • Fix a bug where in certain situations, Akavache would deadlock (2917a5e)

Akavache 2.6.0

05 Mar 01:15
Compare
Choose a tag to compare

What's New

Race Condition Changes

Consider the following piece of code:

BlobCache.UserAccount.Invalidate("TheKey");
BlobCache.UserAccount.InsertObject("TheKey", new MyAwesomeKey());

This code is technically incorrect, yet will often appear to work correctly depending on the backing BlobCache. The reason is, that the invalidate and Insert happen concurrently, meaning it is possible for the Insert to succeed, then the Invalidate to remove the new key (never mind that it isn't necessary to actually Invalidate before Insert). To fix this, in Akavache 2.6.0, operations done to the same key are guaranteed to happen in order.

Shutdown Changes

Disposing a BlobCache is asynchronous, yet the Dispose method call has no way to signal when it is complete. A new Shutdown Observable exists to facilitate this. So, to flush the blob cache properly, now run:

BlobCache.UserAccount.Dispose();
BlobCache.UserAccount.Shutdown.Wait();

Other Changes

  • Bug fixes around leaking file handles in certain circumstances
  • Fixes to more clearly throw error messages when Akavache is used incorrectly