Releases: reactiveui/Akavache
Akavache 4.1.0
What's New
Xamarin.iOS / Xamarin.Mac 64-bit support
Akavache now supports the Xamarin Unified profile for iOS and Mac - if you use the Migration tool, it is highly advised to remove and re-add the Akavache packages manually.
Bug Fixes
- Fix DownloadUrl and friends to correctly store content
Akavache 4.0.4
What's New
- Add a feature to DownloadUrl to specify an explicit key (#181, thanks @RocketPop)
- Ensure that GetCreatedAt never throws (#184, thanks @flagbug)
Akavache 4.0.3
What's New
Bug Fixes
Akavache 4.0.2
Akavache 4.0.1
What's New
Bug Fixes
- Fix several bugs related to using Akavache.Sqlite3 on Windows Phone 8.1 (WinRT)
Akavache 4.0
Welcome to Akavache 4.0
After 8 months of work and 424 commits from 7 authors, Akavache 4.0 is now released! Thanks to the contributors for this release:
- Johan Laanstra
- Oren Novotny
- Brendan Forster
- Phil Haack
- Herman Banken
- Oskar Hermansson
In particular, a huge thanks goes to Johan, who migrated the SQLite-based backend to Eric Sink's SQLitePcl.Raw - a ton of work!
A Universal Akavache
Akavache 4.0 now supports a native SQLite on all platforms, as well as including support for new platforms:
- Xamarin.Android
- Xamarin.iOS
- Xamarin.Mac
- Xamarin Forms (iOS + Android + WP8)
- .NET 4.5
- Universal Windows Apps (WPA81)
- Windows Phone 8.0 Apps (Silverlight-based)
- Windows Store Apps (WinRT)
Akavache is also much smaller, because it no longer depends on ReactiveUI, instead depending on a much smaller library called Splat. Akavache also has now moved to the latest version of the Reactive Extensions, v2.2.5.
SQLite Performance is Significantly Improved
The SQLite driver has been completely rewritten in Akavache 4.0 for performance, especially when used by multiple threads at the same time. Synthetic benchmarks on the new SQLite backend show that it is 8x faster at reading random data, and a whopping 82x faster than the previous version at writing random data.
This improvement was done without any on-disk metadata changes - existing SQLite databases are immediately compatible. This new driver also completely resolves the "locking" issues that people would see when executing many operations in parallel.
Garbage Collection and Cleanup
Akavache now allows applications to explicitly schedule cleanup of the underlying database, via a new Vacuum API. This will drop all expired keys from the database, as well as its name implies, execute a VACUUM operation on SQLite to compact the database.
Migration Notes
- Akavache now no longer ships the deprecated filesystem backend. You can now find this backend in the
Akavache.DeprecatedNuGet package. You should plan to move away from this backend and into the SQLite-based backend in your next release. GetAllKeysis now an asynchronous operation.TestBlobCacheis now calledInMemoryBlobCache
Akavache 3.2.0
What's New
Akavache.Portable.dll is no more, Long Live Akavache.dll
Starting with this release, Akavache Core is now always just Akavache.dll. Instead of a separate Akavache.Portable.dll that you include into every build, there is now a portable version of Akavache.dll. Link to the portable version in your PLibs and the platform versions in your apps.
Bug fixes
- Work around a bug in the Xamarin AOT compiler which would cause failures in Xamarin.iOS on device
- Fixed a bug resulting from the latest Splat update where using Bitmap loading would result in a compiler error
- Fix package references that were missing
Akavache 3.1.2
What's New
Bug Fixes:
- Ensure that GetAndFetchLatest uses the correct cache key (#89, thanks @nigel-sampson)
- Object invalidation should use type-prefixing (#91, thanks @nigel-sampson)
Akavache 3.1.1
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
What's New
Bug Fixes
- Fix bugs around manual dependency registration
- Correctly handle invalidation in GetAndFetchLatest
- Handle unsynchronized access to variable in SQLite3 driver