Skip to content

Commit 1d89781

Browse files
committed
Merge branch 'next-major' into feature/string-compression
2 parents fc31117 + 16c1441 commit 1d89781

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+1058
-676
lines changed

CHANGELOG.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,55 @@
2121

2222
----------------------------------------------
2323

24+
# 14.10.2 Release notes
25+
26+
### Enhancements
27+
* None.
28+
29+
### Fixed
30+
* `DB::compact()` on an encrypted Realm without explicitly specifying a new encryption key would only work if the old key happened to be a valid nul-terminated string ([#7842](https://github.com/realm/realm-core/issues/7842), since v14.10.0).
31+
* You could get unexpected merge results when assigning to a nested collection ([#7809](https://github.com/realm/realm-core/issues/7809), since v14.0.0)
32+
33+
### Breaking changes
34+
* None.
35+
36+
### Compatibility
37+
* 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.
38+
39+
-----------
40+
41+
### Internals
42+
* FLX download estimates are now tracked in a multiprocess-compatible manner ([PR #7780](https://github.com/realm/realm-core/pull/7780)).
43+
* Fixed util::FlatMap so it uses the custom Compare for both ordering and equality checking so you can use util::FlatMap with case-insensitive string keys ([PR #7845](https://github.com/realm/realm-core/pull/7845)).
44+
45+
----------------------------------------------
46+
47+
# 14.10.1 Release notes
48+
49+
### Enhancements
50+
* It is no longer an error to set a base url for an App with a trailing slash - for example, `https://services.cloud.mongodb.com/` instead of `https://services.cloud.mongodb.com` - before this change that would result in a 404 error from the server ([PR #7791](https://github.com/realm/realm-core/pull/7791)).
51+
* Performance has been improved for range queries on integers and timestamps. Requires that you use the "BETWEEN" operation in MQL or the Query::between() method when you build the query. (PR [#7785](https://github.com/realm/realm-core/pull/7785))
52+
* Expose `Obj::add_int()` in the bindgen spec. ([PR #7797](https://github.com/realm/realm-core/pull/7797)).
53+
54+
### Fixed
55+
* Valgrind could report a branch on an uninitialized read when opening something that is not an encrypted Realm file as an encrypted Realm file ([PR #7789](https://github.com/realm/realm-core/pull/7789), since v14.10.0).
56+
* Opening an FLX realm asynchronously may not wait to download all data ([#7720](https://github.com/realm/realm-core/issues/7720), since FLX sync was introduced).
57+
* Clearing a List of Mixed in an upgraded file would lead to an assertion failing ([#7771](https://github.com/realm/realm-core/issues/7771), since 14.0.0)
58+
* Fix compilation with Xcode 16 ([PR #7802](https://github.com/realm/realm-core/pull/7802))
59+
60+
### Breaking changes
61+
* None.
62+
63+
### Compatibility
64+
* 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.
65+
66+
-----------
67+
68+
### Internals
69+
* Switch to building the Swift package and Cocoa binaries as C++20 ([PR #7802](https://github.com/realm/realm-core/pull/7802)).
70+
71+
----------------------------------------------
72+
2473
# 14.10.0 Release notes
2574

2675
### Enhancements

CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ endif()
3434
set(PROJECT_VERSION ${DEP_VERSION})
3535

3636
# Project-wide build flags
37-
set(CMAKE_CXX_STANDARD 17)
37+
if (NOT DEFINED CMAKE_CXX_STANDARD)
38+
set(CMAKE_CXX_STANDARD 17)
39+
endif()
3840
set(CMAKE_CXX_STANDARD_REQUIRED ON)
3941
set(CMAKE_CXX_EXTENSIONS OFF)
4042

Package.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import PackageDescription
44
import Foundation
55

6-
let versionStr = "14.10.0"
6+
let versionStr = "14.10.2"
77
let versionPieces = versionStr.split(separator: "-")
88
let versionCompontents = versionPieces[0].split(separator: ".")
99
let versionExtra = versionPieces.count > 1 ? versionPieces[1] : ""
@@ -569,5 +569,5 @@ let package = Package(
569569
.headerSearchPath("../"),
570570
] + cxxSettings) as [CXXSetting]),
571571
],
572-
cxxLanguageStandard: .cxx17
572+
cxxLanguageStandard: .cxx20
573573
)

bindgen/spec.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -808,6 +808,7 @@ classes:
808808
- sig: '(column: ColKey, value: Mixed, is_default: bool)'
809809
suffix: with_default
810810
set_collection: '(column: ColKey, type: CollectionType) -> Obj'
811+
add_int: '(column: ColKey, value: int64_t) -> Obj'
811812
get_linked_object: '(column: ColKey) const -> Nullable<Obj>'
812813
to_string: () const -> std::string
813814
get_backlink_count: '() const -> count_t'

dependencies.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
PACKAGE_NAME: realm-core
2-
VERSION: 14.10.0
2+
VERSION: 14.10.2
33
OPENSSL_VERSION: 3.2.0
44
ZLIB_VERSION: 1.2.13
55
# https://github.com/10gen/baas/commits

doc/development/how-to-release.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ The core release process is automated with github [actions](https://github.com/r
44
- Select the base branch that you would like to make a release from (usually this will be "master") in the drop down.
55
- Enter the version of the new release (eg. "10.123.1" or "4.5.0-CustDemo")
66

7-
2. This will create a PR, which you should look over and get someone else on the team to review. Verify the changelog by checking the PR description which has a list of commits since the last tag was made. If any changes are required, commit them to this PR's branch.
7+
2. This will create a PR, which you should look over and get someone else on the team to review. Verify the changelog by checking the PR description which has a list of commits since the last tag was made. If any changes are required, commit them to this PR's branch (please reorder commits such that the version change comes last as the last commit will be the one tagged). Verify that the base commit on the branch you are releasing has passed evergreen checks (or that the failures are known to be spurious and are tracked).
88

9-
3. When ready, merge the PR. You can squash if there are only "prepare release" changes, but use a "merge-commit" strategy if there are functional changes added manually to the PR (note that if using a merge strategy, the last commit after merge will be the one tagged, so you may want to reorder the commits so that the 'prepare' commit comes last). On merge, the "make-release" action will run. This will:
9+
3. When ready, merge the PR. You can squash if there are only "prepare release" changes, but use a "merge-commit" strategy if there are functional changes added manually to the PR. On merge, the "make-release" action will run which triggers a Github deployment. Someone from the `@realm/realm-core-team` must approve the deployment for this step to run. Find the Github [deployment](https://github.com/realm/realm-core/actions/workflows/make-release.yml) and approve it. This will:
1010
- Make a tag
1111
- Publish the release on Github
1212
- Open a PR to update the Changelog with the new template section
1313
- Announce the release in the #appx-releases slack channel
1414

15-
4. Find the newly generated PR that adds the new changelog section. Approve it and merge it.
15+
4. Find the newly generated PR that adds the new changelog section. Approve it and merge it. It has been discussed by the team that this PR can be approved and merged without initiating evergreen checks because it is an automated change that only affects CHANGELOG.md and originates from an approved template.
1616

1717
## Previous process
1818

evergreen/config.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1682,7 +1682,6 @@ buildvariants:
16821682
expansions:
16831683
cmake_bindir: "/opt/homebrew/bin"
16841684
cmake_toolchain_file: "./tools/cmake/xcode.toolchain.cmake"
1685-
extra_flags: "-DCMAKE_XCODE_ATTRIBUTE_SDKROOT=iphoneos"
16861685
cmake_build_tool_options: "-sdk iphonesimulator -arch arm64"
16871686
cmake_generator: Xcode
16881687
max_jobs: $(sysctl -n hw.logicalcpu)
@@ -1715,12 +1714,11 @@ buildvariants:
17151714
expansions:
17161715
cmake_url: "https://s3.amazonaws.com/static.realm.io/evergreen-assets/cmake-3.26.3-macos-universal.tar.gz"
17171716
cmake_bindir: "./cmake_binaries/CMake.app/Contents/bin"
1718-
cmake_toolchain_file: "./tools/cmake/xcode.toolchain.cmake"
17191717
cmake_generator: Xcode
17201718
max_jobs: $(sysctl -n hw.logicalcpu)
17211719
cmake_build_type: Release
17221720
xcode_developer_dir: /Applications/Xcode13.1.app/Contents/Developer
1723-
extra_flags: -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_OSX_ARCHITECTURES=x86_64
1721+
extra_flags: -DREALM_ENABLE_ASSERTIONS=ON
17241722
tasks:
17251723
- name: benchmarks
17261724
- name: compile_test
@@ -1732,12 +1730,11 @@ buildvariants:
17321730
expansions:
17331731
cmake_url: "https://s3.amazonaws.com/static.realm.io/evergreen-assets/cmake-3.26.3-macos-universal.tar.gz"
17341732
cmake_bindir: "./cmake_binaries/CMake.app/Contents/bin"
1735-
cmake_toolchain_file: "./tools/cmake/xcode.toolchain.cmake"
17361733
cmake_generator: Xcode
17371734
max_jobs: $(sysctl -n hw.logicalcpu)
17381735
cmake_build_type: Release
17391736
xcode_developer_dir: /Applications/Xcode13.1.app/Contents/Developer
1740-
extra_flags: -DCMAKE_SYSTEM_NAME=Darwin -DCMAKE_OSX_ARCHITECTURES=arm64
1737+
extra_flags: -DREALM_ENABLE_ASSERTIONS=ON
17411738
tasks:
17421739
- name: benchmarks
17431740

src/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
add_subdirectory(realm)
22
add_subdirectory(external/IntelRDFPMathLib20U2)
3-
add_subdirectory(external/bson EXCLUDE_FROM_ALL)
3+
if (NOT REALM_BUILD_LIB_ONLY)
4+
add_subdirectory(external/bson EXCLUDE_FROM_ALL)
5+
endif()
46

57
if (REALM_ENABLE_GEOSPATIAL)
68
add_subdirectory(external/s2)

src/realm/array_integer.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,19 @@ Mixed ArrayInteger::get_any(size_t ndx) const
3737
return Mixed(get(ndx));
3838
}
3939

40+
size_t ArrayInteger::find_first_in_range(int64_t from, int64_t to, size_t start, size_t end) const
41+
{
42+
if (m_ubound >= from && m_lbound <= to) {
43+
while (start < end) {
44+
auto val = get(start);
45+
if (from <= val && val <= to)
46+
return start;
47+
start++;
48+
}
49+
}
50+
return realm::not_found;
51+
}
52+
4053
Mixed ArrayIntNull::get_any(size_t ndx) const
4154
{
4255
return Mixed(get(ndx));
@@ -184,6 +197,18 @@ size_t ArrayIntNull::find_first(value_type value, size_t begin, size_t end) cons
184197
return find_first<Equal>(value, begin, end);
185198
}
186199

200+
size_t ArrayIntNull::find_first_in_range(int64_t from, int64_t to, size_t start, size_t end) const
201+
{
202+
if (m_ubound >= from && m_lbound <= to) {
203+
for (size_t i = start; i < end; i++) {
204+
auto val = get(i);
205+
if (val && *val >= from && *val <= to)
206+
return i;
207+
}
208+
}
209+
return realm::not_found;
210+
}
211+
187212
void ArrayIntNull::get_chunk(size_t ndx, value_type res[8]) const noexcept
188213
{
189214
// FIXME: Optimize this

src/realm/array_integer.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class ArrayInteger : public Array, public ArrayPayload {
6464
}
6565
template <class cond>
6666
bool find(value_type value, size_t start, size_t end, QueryStateBase* state) const;
67+
size_t find_first_in_range(int64_t from, int64_t to, size_t start, size_t end) const;
6768

6869
template <class T>
6970
static ref_type typed_write(ref_type ref, T& out, Allocator& alloc)
@@ -140,6 +141,7 @@ class ArrayIntNull : public Array, public ArrayPayload {
140141

141142

142143
size_t find_first(value_type value, size_t begin = 0, size_t end = npos) const;
144+
size_t find_first_in_range(int64_t from, int64_t to, size_t start, size_t end) const;
143145

144146
template <class T>
145147
static ref_type typed_write(ref_type ref, T& out, Allocator& alloc)

0 commit comments

Comments
 (0)