14 KiB
3.1.0+1
Fixes
- Fixed error building MacOS library
3.1.0
Breaking
Sorry for this breaking change. Unfortunately, it was necessary to fix stability issues on Android.
directory
is now required forIsar.open()
andIsar.openSync()
Fixes
- Fixed a crash that occasionally occurred when opening Isar
- Fixed a schema migration issue
- Fixed an issue where embedded class renaming didn't work correctly
Enhancements
- Many internal improvements
- Performance improvements
3.0.6
Fixes
- Add check to verify transactions are used for correct instance
- Add check to verify that async transactions are still active
- Fix upstream issue with opening databases
3.0.5
Enhancements
- Improved performance for all operations
- Added
maxSizeMiB
option toIsar.open()
to specify the maximum size of the database file - Significantly reduced native library size
- With the help of the community, the docs have been translated into a range of languages
- Improved API docs
- Added integration tests for more platforms to ensure high-quality releases
- Support for unicode paths on Windows
Fixes
- Fixed crash while opening Isar
- Fixed crash on older Android devices
- Fixed a native port that was not closed correctly in some cases
- Added swift version to podspec
- Fixed crash on Windows
- Fixed "IndexNotFound" error
3.0.4
REDACTED.
3.0.3
REDACTED.
3.0.2
Enhancements
- The Inspector now supports creating objects and importing JSON
- Added Inspector check to make sure Chrome is used
Fixes
- Added support for the latest analyzer
- Fixed native ports that were not closed correctly in some cases
- Added support for Ubuntu 18.04 and older
- Fixed issue with aborting transactions
- Fixed crash when invalid JSON was provided to
importJsonRaw()
- Added missing
exportJsonSync()
andexportJsonRawSync()
- Fixed issue where secondary instance could not be selected in the Inspector
3.0.1
Enhancements
- Support for arm64 iOS Simulators
Fixes
- Fixed issue where
.anyOf()
,.allOf()
, and.oneOf()
could not be negated - Fixed too low min-iOS version. The minimum supported is 11.0
- Fixed error during macOS App Store build
3.0.0
This release has been a lot of work! Thanks to everyone who contributed and joined the countless discussions. You are really awesome!
Special thanks to @Jtplouffe and @Peyman for their incredible work.
Web support
This version does not support the web target yet. It will be back in the next version. Please continue using 2.5.0 if you need web support.
Enhancements
- Completely new Isar inspector that does not need to be installed anymore
- Extreme performance improvements for almost all operations (up to 50%)
- Support for embedded objects using
@embedded
- Support for enums using
@enumerated
- Vastly improved Isar binary format space efficiency resulting in about 20% smaller databases
- Added
id
,byte
,short
andfloat
typedefs IsarLinks
now support allSet
methods based on the IsarId
of objects- Added
download
option toIsar.initializeIsarCore()
to download binaries automatically - Added
replace
option for indexes - Added verification for correct Isar binary version
- Added
collection.getSize()
andcollection.getSizeSync()
- Added
query.anyOf()
andquery.allOf()
query modifiers - Support for much more complex composite index queries
- Support for logical XOR and the
.oneOf()
query modifier - Made providing a path optional
- The default Isar name is now
default
and stored indir/name.isar
anddir/name.isar.lock
- On non-web platforms,
IsarLink
andIsarLinks
will load automatically .putSync()
,.putAllSync()
etc. will now save links recursively by default- Added
isar.getSize()
andisar.getSizeSync()
- Added
linksLengthEqualTo()
,linksIsEmpty()
,linksIsNotEmpty()
,linksLengthGreaterThan()
,linksLengthLessThan()
,linksLengthBetween()
andlinkIsNull()
filters - Added
listLengthEqualTo()
,listIsEmpty()
,listIsNotEmpty()
,listLengthGreaterThan()
,listLengthLessThan()
,listLengthBetween()
filters - Added
isNotNull()
filters - Added
compactOnLaunch
conditions toIsar.open()
for automatic database compaction - Added
isar.copyToFile()
which copies a compacted version of the database to a path - Added check to verify that linked collections schemas are provided for opening an instance
- Apply default values from constructor during deserialization
- Added
isar.verify()
andcol.verify()
methods for checking database integrity in unit tests - Added missing float and double queries and an
epsilon
parameter
Breaking changes
- Removed
TypeConverter
support in favor of@embedded
and@enumerated
- Removed
@Id()
and@Size32()
annotations in favor of theId
andshort
types - Changed the
schemas
parameter from named to positional - The maximum size of objects is now 16MB
- Removed
replaceOnConflict
andsaveLinks
parameter fromcollection.put()
andcollection.putAll()
- Removed
isar
parameter fromIsar.txn()
,Isar.writeTxn()
,Isar.txnSync()
andIsar.writeTxnSync()
- Removed
query.repeat()
- Removed
query.sortById()
andquery.distinctById()
- Fixed
.or()
instead of.and()
being used implicitly when combining filters - Renamed multi-entry where clauses from
.yourListAnyEqualTo()
to.yourListElementEqualTo()
to avoid confusion - Isar will no longer create the provided directory. Make sure it exists before opening an Isar Instance.
- Changed the default index type for all
List
s toIndexType.hash
- Renamed
isar.getCollection()
toisar.collection()
- It is no longer allowed to extend or implement another collection
- Unsupported properties will no longer be ignored by default
- Renamed the
initialReturn
parameter tofireImmediately
- Renamed
Isar.initializeLibraries()
toIsar.initializeIsarCore()
Fixes
There are too many fixes to list them all.
- A lot of link fixes and a slight behavior change to make them super reliable
- Fixed missing symbols on older Android phones
- Fixed composite queries
- Fixed various generator issues
- Fixed error retrieving the id property in a query
- Fixed missing symbols on 32-bit Android 5 & 6 devices
- Fixed inconsistent
null
handling in json export - Fixed default directory issue on Android
- Fixed different where clauses returning duplicate results
- Fixed hash index issue where multiple list values resulted in the same hash
- Fixed edge case where creating a new index failed
2.5.0
Enhancements
- Support for Android x86 (32 bit emulator) and macOS arm64 (Apple Silicon)
- Greatly improved test coverage for sync methods
col.clear()
now resets the auto increment counter to0
- Significantly reduced Isar Core binary size (about 1.4MB -> 800KB)
Minor Breaking
- Changed
initializeLibraries(Map<String, String> libraries)
toinitializeLibraries(Map<IsarAbi, String> libraries)
- Changed min Dart SDK to
2.16.0
Fixes
- Fixed issue with
IsarLink.saveSync()
- Fixed
id
queries - Fixed error thrown by
BroadcastChannel
in Firefox - Fixed Isar Inspector connection issue
2.4.0
Enhancements
- Support for querying links
- Support for filtering and sorting links
- Added methods to update and count links without loading them
- Added
isLoaded
property to links - Added methods to count the number of objects in a collection
- Big internal improvements
Minor Breaking
- There are now different kinds of where clauses for dynamic queries
isar.getCollection()
no longer requires the name of the collectionIsar.instanceNames
now returns aSet
instead of aList
Fixes
- Fixed iOS crash that frequently happened on older devices
- Fixed 32bit issue on Android
- Fixed link issues
- Fixed missing
BroadcastChannel
API for older Safari versions
2.2.1
Enhancements
- Reduced Isar web code size by 50%
- Made
directory
parameter ofIsar.open()
optional for web - Made
name
parameter ofIsar.getInstance()
optional - Added
Isar.defaultName
constant - Enabled
TypeConverter
s with supertypes - Added message if
TypeConverter
nullability doesn't match - Added more tests
Fixes
- Fixed issue with date queries
- Fixed
FilterGroup.not
constructor (thanks for the PR @jtzell)
2.2.0
Isar now has full web support 🎉. No changes to your code required, just run it.
Web passes all unit tests but is still considered beta for now.
Minor Breaking
- Added
saveLinks
parameter to.put()
and.putAll()
which defaults tofalse
- Changed default
overrideChanges
parameter oflinks.load()
totrue
to avoid unintended behavior
Enhancements
- Full web support!
- Improved write performance
- Added
deleteFromDisk
option toisar.close()
- Added
.reset()
and.resetSync()
methods toIsarLink
andIsarLinks
- Improved
links.save()
performance - Added many tests
Fixed
- Fixed value of
null
dates to beDateTime.fromMillisecondsSinceEpoch(0)
- Fixed problem with migration
- Fixed incorrect list values for new properties (
[]
instead ofnull
) - Improved handling of link edge-cases
2.1.4
- Removed
path
dependency - Fixed incorrect return value of
deleteByIndex()
- Fixed wrong auto increment ids in some cases (thanks @robban112)
- Fixed an issue with
Isar.close()
(thanks @msxenon) - Fixed
$
escaping in generated code (thanks @jtzell) - Fixed broken link in pub.dev example page
2.1.0
isar_connect
is now integrated into isar
Enhancements
- Added check for outdated generated files
- Added check for changed schema across isolates
- Added
Isar.openSync()
- Added
col.importJsonRawSync()
,col.importJsonSync()
,query.exportJsonRawSync()
,query.exportJsonSync()
- Improved performance for queries
- Improved handling of ffi memory
- More tests
Fixed
- Fixed issue where imported json required existing ids
- Fixed issue with transaction handling (thanks @Peng-Qian for the awesome help)
- Fixed issue with
@Ignore
annotation not always working - Fixed issue with
getByIndex()
not returning correct object id (thanks @jtzell)
2.0.0
Breaking
- The id for non-final objects is now assigned automatically after
.put()
and.putSync()
double
andList<double>
indexes can no longer be at the beginning of a composite indexList<double>
indexes can no longer be hashed.greaterThan()
,.lessThan()
and.between()
filters and are now excluding fordouble
values (>=
->>
)- Changed the default index type for lists to
IndexType.value
IsarLink
andIsarLinks
will no longer be initialized by Isar and must not benullable
orlate
.- Dart
2.14
or higher is required
Enhancements
- Added API docs for all public methods
- Added
isar.clear()
,isar.clearSync()
,col.clear()
andcol.clearSync()
- Added
col.filter()
as shortcut forcol.where().filter()
- Added
include
parameter to.greaterThan()
and.lessThan()
filters and where clauses - Added
includeLower
andincludeUpper
parameters to.between()
filters and where clauses - Added
Isar.autoIncrement
to allow non-nullable auto-incrementing ids Isar.close()
now returns whether the last instance was closed- List values in composite indexes are now of type
IndexType.hash
automatically - Allowed multiple indexes on the same property
- Removed exported packages from API docs
- Improved generated code
- Improved Isar Core error messages
- Minor performance improvements
- Automatic XCode configuration
- Updated analyzer to
3.0.0
- More tests
Fixed
IsarLink
andIsarLinks
can now be final- Fixed multi-entry index queries returning items multiple times in some cases
- Fixed
.anyLessThan()
and.anyGreaterThan()
issues - Fixed issues with backlinks
- Fixed issue where query only returned the first
99999
results - Fixed issue with id where clauses
- Fixed default index type for lists and bytes
- Fixed issue where renaming indexes was not possible
- Fixed issue where wrong index name was used for
.getByX()
and.deleteByX()
- Fixed issue where composite indexes did not allow non-hashed Strings as last value
- Fixed issue where
@Ignore()
fields were not ignored
1.0.5
Enhancements
- Updated dependencies
Fixes:
- Included desktop binaries
- Fixed "Cannot allocate memory" error on older iOS devices
- Fixed stripped binaries for iOS release builds
- Fixed IsarInspector issues (thanks to RubenBez and rizzi37)
1.0.0+1
Added missing binaries
1.0.0
Switched from liblmdb to libmdbx for better performance, more stability and many internal improvements.
Breaking
The internal database format has been changed to improve performance. Old databases do not work anymore!
Fixes
- Fix issue with links being removed after object update
- Fix String index problems
Enhancements
- Support
greaterThan
,lessThan
andbetween
queries for String values - Support for inheritance (enabled by default)
- Support for
final
properties and getters - Support for
freezed
and other code generators - Support getting / deleting objects by a key
col.deleteByName('Anne')
- Support for list indexes (hash an element based)
- Generator now creates individual files instead of one big file
- Allow specifying the collection accessor name
- Unsupported properties are now ignored automatically
- Returns the assigned ids after
.put()
operations (objects are no longer mutated) - Introduces
replaceOnConflict
option for.put()
(instead of specifying it for index) - many more...
Internal
- Improve generated code
- Many new unit tests
0.4.0
Breaking
- Remove
.where...In()
and...In()
extension methods - Split
.watch(lazy: bool)
into.watch()
and.watchLazy()
- Remove
include
option for filters
Fixes
- Generate id for JSON imports that don't have an id
- Enable
sortBy
andthenBy
generation
Enhancements
- Add
.optional()
and.repeat()
query modifiers - Support property queries
- Support query aggregation
- Support dynamic queries (for custom query languages)
- Support multi package configuration with
@ExternalCollection()
- Add
caseSensitive
option to.distinctBy()
Internal
- Change iOS linking
- Improve generated code
- Set up integration tests and improve unit tests
- Use CORE/0.4.0
0.2.0
- Link support
- Many improvements and fixes
0.1.0
- Support for links and backlinks
0.0.4
- Bugfixes and many improvements
0.0.2
Fix dependency issue
0.0.1
Initial release