Skip to content

Commit

Permalink
Merge branch 'main' into ni/schema-migration
Browse files Browse the repository at this point in the history
* main:
  Add vNext Changelog header (#1594)
  [Release 2.0.0] (#1593)
  Cleanup the changelog for 2.0.0 (#1592)
  Wrong test for local development (#1591)
  Add vNext Changelog header (#1589)
  [Release 2.0.0-beta.2] (#1588)
  Update melos to 5.2.0 (#1587)
  • Loading branch information
nirinchev committed Mar 22, 2024
2 parents 166eb76 + 047e77a commit 39b15bd
Show file tree
Hide file tree
Showing 13 changed files with 78 additions and 78 deletions.
29 changes: 20 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
## vNext (TBD)

### Enhancements
* None

### Fixed
* None

### Compatibility
* Realm Studio: 13.0.0 or later.

### Internal
* Using Core x.y.z.

## 2.0.0 (2024-03-20)

### Breaking Changes
* `RealmValue.type` is now an enum of type `RealmValueType` rather than `Type`. If you need the runtime type of the value wrapped in `RealmValue`, use `RealmValue.value.runtimeType`. (Issue [#1505](https://github.com/realm/realm-dart/issues/1505))
* Renamed `RealmValue.uint8List` constructor to `RealmValue.binary`. (PR [#1469](https://github.com/realm/realm-dart/pull/1469))
Expand Down Expand Up @@ -77,11 +91,11 @@
```dart
Realm.logger.onRecord.forEach((r) => Logger(r.category.toString()).log(r.level.level, r.message));
```
If no isolate subscribes to `Realm.logger.onRecord` then the logs will by default be sent to stdout.
If no isolate subscribes to `Realm.logger.onRecord` then the logs will by default be sent to stdout. (Issue [#1578](https://github.com/realm/realm-dart/issues/1578))


### Enhancements
* Realm objects can now be serialized as [EJSON](https://www.mongodb.com/docs/manual/reference/mongodb-extended-json/)
* Realm objects can now be serialized as [EJSON](https://www.mongodb.com/docs/manual/reference/mongodb-extended-json/). (Issue [#1254](https://github.com/realm/realm-dart/issues/1254))
```dart
import 'package:ejson/ejson.dart';
// ...
Expand Down Expand Up @@ -141,26 +155,23 @@
* Added support for accessing `Set` and `Map` types using the dynamic object API - `obj.dynamic.getSet/getMap`. (PR [#1533](https://github.com/realm/realm-dart/pull/1533))
* Added `RealmObjectBase.objectSchema` that returns the schema for this object. In most cases, this would be the schema defined in the model, but in case the Realm is opened as dynamic (by providing an empty collection for schemaObjects in the config) or using `FlexibleSyncConfiguration`, it may change as the schema on disk changes. (Issue [#1449](https://github.com/realm/realm-dart/issues/1449))
* Added `Realm.schemaChanges` that returns a stream of schema changes that can be listened to. Only dynamic and synchronized Realms will emit schema changes. (Issue [#1449](https://github.com/realm/realm-dart/issues/1449))

* Improve performance of object notifiers with complex schemas and very simple changes to process by as much as 20% ([Core 14.2.0).
* Improve performance of object notifiers with complex schemas and very simple changes to process by as much as 20% (Core 14.2.0).
* Improve performance with very large number of notifiers as much as 75% (Core 14.2.0).
* Add support to synchronize collections embedded in Mixed properties and other collections (except sets) (Core v14.2.0-12-g95c6efce8).
* Improve performance of change notifications on nested collections somewhat (Core v14.2.0-12-g95c6efce8).
* Improve performance of aggregate operations on Dictionaries of objects, particularly when the dictionaries are empty (Core v14.2.0-12-g95c6efce8)

### Fixed
* If you have more than 8388606 links pointing to one specific object, the program will crash. (Core 14.0.0)
* A Realm generated on a non-apple ARM 64 device and copied to another platform (and vice-versa) were non-portable due to a sorting order difference. This impacts strings or binaries that have their first difference at a non-ascii character. These items may not be found in a set, or in an indexed column if the strings had a long common prefix (> 200 characters). (Core 14.0.0)
* Ctor arguments appear in random order on generated classes, if the realm model contains many properties. (PR [#1531](https://github.com/realm/realm-dart/pull/1531))
* Fixed an issue where removing realm objects from a List with more than 1000 items could crash. (Core 14.2.0)
* Fix a spurious crash related to opening a Realm on background thread while the process was in the middle of exiting (Core v14.2.0-12-g95c6efce8)
* Fix a spurious crash related to opening a Realm on background thread while the process was in the middle of exiting. (Core v14.3.0)
* Fixed conflict resolution bug which may result in an crash when the AddInteger instruction on Mixed properties is merged against updates to a non-integer type. (Core v14.3.0)

### Compatibility
* Realm Studio: 14.0.0 or later.
* Fileformat: Generates files with format v24. Reads and automatically upgrade from fileformat v10. If you want to upgrade from an earlier file format version you will have to use RealmCore v13.x.y or earlier.

### Internal
* Using Core v14.2.0-12-g95c6efce8
* Using Core v14.3.0

## 1.9.0 (2024-02-02)

Expand Down
93 changes: 41 additions & 52 deletions melos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,21 @@ command:

scripts:
setup:
run: >-
dart pub global activate combine_coverage &&
dart pub global activate coverage &&
dart pub global activate coverde &&
dart pub global activate dependency_validator &&
dart pub global activate ffigen &&
dart pub global activate melos &&
dart pub global activate pana &&
dart pub global activate --source path $MELOS_ROOT_PATH/packages/realm_dart/dev/
steps:
- dart pub global activate combine_coverage
- dart pub global activate coverage
- dart pub global activate coverde
- dart pub global activate dependency_validator
- dart pub global activate ffigen
- dart pub global activate melos
- dart pub global activate pana
- dart pub global activate --source path $MELOS_ROOT_PATH/packages/realm_dart/dev/

build:
run: >-
melos run build:native &&
melos run build:binding &&
melos run build:dart
steps:
- build:native
- build:binding
- build:dart

build:native:
exec: dev build
Expand All @@ -60,11 +60,11 @@ scripts:
dependsOn: ffigen
test:
description: Run all tests.
run: >-
melos run test:unit &&
melos run test:widget &&
melos run test:lints &&
melos run test:integration
steps:
- test:unit
- test:widget
- test:lints
- test:integration

test:unit:
run: dart test --concurrency=1 --coverage=coverage/ --file-reporter=json:test-results.json --reporter=github
Expand Down Expand Up @@ -115,7 +115,7 @@ scripts:
packageFilters:
published: true

format:
custom_format:
description: Format code.
# while we wait for https://github.com/dart-lang/dart_style/issues/864
run: >-
Expand All @@ -130,10 +130,13 @@ scripts:

lint:
description: Run all lints.
run: >-
melos run lint:format &&
melos run lint:pana &&
melos publish --dry-run
steps:
- lint:format
- lint:pana
- melos publish --dry-run

lint:deps:
exec: dependency_validator

lint:format:
# while we wait for https://github.com/dart-lang/dart_style/issues/864
Expand All @@ -149,27 +152,15 @@ scripts:
concurrency: 1 # only one project at a time to keep output sane
packageFilters:
published: true

analyze:
description: Analyze code and dependencies.
run: >-
melos run analyze:code &&
melos run analyze:deps
analyze:code:
exec: dart analyze . --fatal-infos

analyze:deps:
exec: dependency_validator

coverage:
description: Generate, check and render coverage.
run: >-
melos run coverage:convert &&
melos run coverage:gather &&
melos run coverage:groom &&
melos run coverage:report &&
melos run coverage:check
steps:
- coverage:convert
- coverage:gather
- coverage:groom
- coverage:report
- coverage:check

coverage:check: # TODO: Increase to 90 eventually
run: coverde check 80
Expand Down Expand Up @@ -201,9 +192,9 @@ scripts:
run: coverde report

update:version:
run: >-
melos run update:version:ejson &&
melos run update:version:realm
steps:
- update:version:ejson
- update:version:realm

update:version:ejson:
description: Update version of all ejson packages collectively
Expand All @@ -226,12 +217,10 @@ scripts:
# TODO: This is actually stricter than on CI, but we should aim for this
ci:
run: >-
melos clean &&
melos bootstrap &&
melos run build &&
melos run test &&
melos run coverage &&
melos run analyze &&
melos run lint
steps:
- build
- test
- coverage
- analyze
- lint

2 changes: 1 addition & 1 deletion packages/realm/example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ environment:
dependencies:
flutter:
sdk: flutter
realm: ^2.0.0-beta.1
realm: ^2.0.0
characters: ^1.1.0

dev_dependencies:
Expand Down
2 changes: 1 addition & 1 deletion packages/realm/ios/realm.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ puts "bundleId is #{bundleId}"

Pod::Spec.new do |s|
s.name = 'realm'
s.version = '2.0.0-beta.1'
s.version = '2.0.0'
s.summary = 'The official Realm SDK for Flutter'
s.description = <<-DESC
Realm is a mobile database - an alternative to SQLite and key-value stores.
Expand Down
4 changes: 2 additions & 2 deletions packages/realm/macos/realm.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ realmLibName = "librealm_dart.dylib"
# We need to create an absolute symlink to librealm_dart.dylib otherwises
# Cocoapods and Xcode build look for different files from different base directories while handling `vendored_libraries`
realmLibraryPath = "#{realmPackageDir}/#{realmLibName}";
if realmLibraryPath.include?("realm/") && !File.exist?(realmLibraryPath)
if realmLibraryPath.include?("packages/realm/") && !File.exist?(realmLibraryPath)
absoluteRealRealmLibPath = File.realpath("#{realmPackageDir}/../../realm_dart/binary/macos/#{realmLibName}")

if !File.exist?(absoluteRealRealmLibPath)
Expand All @@ -36,7 +36,7 @@ puts "bundleId is #{bundleId}"

Pod::Spec.new do |s|
s.name = 'realm'
s.version = '2.0.0-beta.1'
s.version = '2.0.0'
s.summary = 'The official Realm SDK for Flutter'
s.description = <<-DESC
Realm is a mobile database - an alternative to SQLite and key-value stores.
Expand Down
4 changes: 2 additions & 2 deletions packages/realm/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: realm
description: The official Realm SDK for Flutter. Realm is a mobile database - an alternative to SQLite and key-value stores.
version: 2.0.0-beta.1
version: 2.0.0

homepage: https://www.realm.io
repository: https://github.com/realm/realm-dart
Expand All @@ -13,7 +13,7 @@ environment:
dependencies:
flutter:
sdk: flutter
realm_dart: ^2.0.0-beta.1
realm_dart: ^2.0.0

flutter:
plugin:
Expand Down
2 changes: 1 addition & 1 deletion packages/realm_common/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ description: >-
Hosts the common code shared between realm, realm_dart and realm_generator packages.
This package is part of the official Realm Flutter and Realm Dart SDKs.
version: 2.0.0-beta.1
version: 2.0.0

homepage: https://www.realm.io
repository: https://github.com/realm/realm-dart
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import 'options.dart';
import '../common/utils.dart';

// stamped into the library by the build system (see prepare-release.yml)
const realmCoreVersion = '14.2.0';
const realmCoreVersion = '14.3.0';

class MetricsCommand extends Command<void> {
@override
Expand Down
2 changes: 1 addition & 1 deletion packages/realm_dart/lib/src/native/realm_core.dart
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ final _pluginLib = () {
}();

// stamped into the library by the build system (see prepare-release.yml)
const libraryVersion = '2.0.0-beta.1';
const libraryVersion = '2.0.0';

_RealmCore realmCore = _RealmCore();

Expand Down
6 changes: 3 additions & 3 deletions packages/realm_dart/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: realm_dart
description: The official Realm SDK for Dart. Realm is a mobile database - an alternative to SQLite and key-value stores.
version: 2.0.0-beta.1
version: 2.0.0

homepage: https://www.realm.io
repository: https://github.com/realm/realm-dart
Expand All @@ -23,8 +23,8 @@ dependencies:
path: ^1.0.0
pubspec_parse: ^1.0.0
pub_semver: ^2.1.0
realm_common: ^2.0.0-beta.1
realm_generator: ^2.0.0-beta.1
realm_common: ^2.0.0
realm_generator: ^2.0.0
tar: ^1.0.1
build_runner: ^2.1.0
http: ^1.0.0
Expand Down
2 changes: 1 addition & 1 deletion packages/realm_dart/src/realm_dart.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ RLM_API void realm_dart_invoke_unlock_callback(realm_userdata_t error, void* unl
// Stamped into the library by the build system (see prepare-release.yml)
// Keep this method as it is written and do not format it.
// We have a github workflow that looks for and replaces this string as it is written here.
RLM_API const char* realm_dart_library_version() { return "2.0.0-beta.1"; }
RLM_API const char* realm_dart_library_version() { return "2.0.0"; }

//for debugging only
// RLM_API void realm_dart_gc() {
Expand Down
4 changes: 2 additions & 2 deletions packages/realm_generator/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ description: >-
Generates RealmObject classes from Realm data model classes.
This package is part of the official Realm Flutter and Realm Dart SDKs.
version: 2.0.0-beta.1
version: 2.0.0

homepage: https://www.realm.io
repository: https://github.com/realm/realm-dart
Expand All @@ -17,7 +17,7 @@ dependencies:
build_resolvers: ^2.0.9
build: ^2.0.0
dart_style: ^2.2.0
realm_common: ^2.0.0-beta.1
realm_common: ^2.0.0
source_gen: ^1.1.0
source_span: ^1.8.0

Expand Down
4 changes: 2 additions & 2 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ name: my_project_workspace
environment:
sdk: '>=3.0.0 <4.0.0'
dev_dependencies:
melos: ^5.1.0

melos: ^5.2.0

0 comments on commit 39b15bd

Please sign in to comment.