Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
fc0d137
New version.
agarny Oct 12, 2026
6d74790
GoogleTest: upgraded to version 1.18.0.
agarny Oct 12, 2026
08c61b8
nanobind: upgraded to version 3.1.0.
agarny Oct 12, 2026
197a8cc
Handle non-UTF8 strings in our bindings.
agarny Oct 12, 2026
d32f4a0
Preserve IPv6 brackets in encoded URLs.
agarny Oct 12, 2026
1ec1444
Normalise URL schemes in file handling.
agarny Oct 12, 2026
b7528b6
Fixed remote SED-ML source resolution.
agarny Oct 12, 2026
608c1a9
Handle duplicate COMBINE archive locations.
agarny Oct 12, 2026
24576f5
Honour the master file on duplicate OMEX locations.
agarny Oct 12, 2026
3ee3f0d
Handle ignored COMBINE archive aliases.
agarny Oct 12, 2026
0905696
Normalise URL host casing in file handling.
agarny Oct 13, 2026
3115c6a
Reject unsupported lone surrogates in bindings.
agarny Oct 13, 2026
78ab392
Fixed remote SED-ML relative URL resolution.
agarny Oct 13, 2026
5cb569e
Fixed File repr for invalid UTF-8 URLs.
agarny Oct 13, 2026
370105a
libCellML: upgraded to version 2026-10-13.
agarny Oct 13, 2026
9faf9e5
Expanded and aligned our API and bindings tests.
agarny Oct 13, 2026
2d11282
Safely handle null characters in file paths.
agarny Oct 13, 2026
6571e3c
Skip self-referencing COMBINE entries.
agarny Oct 13, 2026
e6a5089
Handle non-UTF-8 file paths on Windows.
agarny Oct 13, 2026
d08e5ae
Handle invalid UTF-8 in SED-ML bindings.
agarny Oct 13, 2026
41c522c
Ignore unsupported URI schemes in SED-ML models.
agarny Oct 13, 2026
28e4454
Encode non-XML chars in SED-ML model sources.
agarny Oct 13, 2026
dd61697
Validate SED-ML IDs and CellML names.
agarny Oct 13, 2026
9417162
Preserve surrogate paths in string/path conversion.
agarny Oct 13, 2026
e16494f
New version.
agarny Oct 13, 2026
bdc2eba
Handle empty SED-ML model sources.
agarny Oct 13, 2026
04980cc
Avoid SED-ML ID clashes on import.
agarny Oct 13, 2026
cbb8c9c
Restore the WASM stack on binding exceptions.
agarny Oct 13, 2026
c90cba6
Handle file URL host rules consistently.
agarny Oct 13, 2026
946028a
Handle query/fragment in SED-ML model sources.
agarny Oct 13, 2026
74aedc7
Hardened double parsing and expanded our SED-ML tests.
agarny Oct 13, 2026
e2a1a42
Addressed a Windows issue.
agarny Oct 13, 2026
73ea377
Don't use regex-based checks in numeric and ID validation.
agarny Oct 13, 2026
0be149e
Hardened int and format parsing.
agarny Oct 13, 2026
9e545c1
Undefined conflicting max and NAN macros.
agarny Oct 13, 2026
6e12a20
Prefix colon-containing relative SED-ML sources.
agarny Oct 13, 2026
8da9856
Added HTTPS/versioned format coverage to our SED-ML tests.
agarny Oct 14, 2026
70decb2
Enforce unique SED-ML IDs across a document.
agarny Oct 14, 2026
043b9de
Added duplicate-id checks for SED-ML objects.
agarny Oct 14, 2026
5e3d702
Release reserved SED-ML IDs on destruction.
agarny Oct 14, 2026
7d2e7c7
Avoid creating SED-ML tasks without models.
agarny Oct 14, 2026
acacb74
Some minor cleaning up.
agarny Oct 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion VERSION.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.20261013.0
1.20261014.0
4 changes: 2 additions & 2 deletions extern/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[libOpenCOR](https://opencor.ws/libopencor/index.html) relies on the following external projects:

- [GoogleTest](https://github.com/google/googletest) [1.17.0](https://github.com/google/googletest/releases/tag/v1.17.0)
- [GoogleTest](https://github.com/google/googletest) [1.18.0](https://github.com/google/googletest/releases/tag/v1.18.0)
- [modp_b64](https://chromium.googlesource.com/chromium/src/third_party/modp_b64/) at commit [5068510](https://chromium.googlesource.com/chromium/src/third_party/modp_b64/+/50685101d51ef9aabbd60c94f52d9e026d39c509)
- [nanobind](https://github.com/wjakob/nanobind) [2.13.0](https://github.com/wjakob/nanobind/releases/tag/v2.13.0)
- [nanobind](https://github.com/wjakob/nanobind) [3.1.0](https://github.com/wjakob/nanobind/releases/tag/v3.1.0)
11 changes: 5 additions & 6 deletions extern/googletest/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
#
# Bazel Build for Google C++ Testing Framework(Google Test)

load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")

package(default_visibility = ["//visibility:public"])

licenses(["notice"])
Expand Down Expand Up @@ -151,10 +153,7 @@ cc_library(
"@abseil-cpp//absl/flags:reflection",
"@abseil-cpp//absl/flags:usage",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/types:any",
"@abseil-cpp//absl/types:optional",
"@abseil-cpp//absl/types:variant",
"@re2//:re2",
"@re2",
],
"//conditions:default": [],
}) + select({
Expand All @@ -164,7 +163,6 @@ cc_library(
# Otherwise, builds targeting Fuchsia would fail to compile.
":fuchsia": [
"@fuchsia_sdk//pkg/fdio",
"@fuchsia_sdk//pkg/syslog",
"@fuchsia_sdk//pkg/zx",
],
"//conditions:default": [],
Expand All @@ -174,8 +172,8 @@ cc_library(
# `gtest`, but testonly. See guidance on `gtest` for when to use this.
alias(
name = "gtest_for_library",
actual = ":gtest",
testonly = True,
actual = ":gtest",
)

# Implements main() for tests using gtest. Prefer to depend on `gtest` as well
Expand All @@ -189,6 +187,7 @@ cc_library(
"//conditions:default": [],
}),
deps = [":gtest"],
alwayslink = True,
)

# The following rules build samples of how to use gTest.
Expand Down
2 changes: 1 addition & 1 deletion extern/googletest/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
cmake_minimum_required(VERSION 3.16)

project(googletest-distribution)
set(GOOGLETEST_VERSION 1.17.0)
set(GOOGLETEST_VERSION 1.18.0)

if(NOT CYGWIN AND NOT MSYS AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL QNX)
set(CMAKE_CXX_EXTENSIONS OFF)
Expand Down
16 changes: 10 additions & 6 deletions extern/googletest/MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

module(
name = "googletest",
version = "1.17.0",
version = "1.18.0",
compatibility_level = 1,
)

Expand All @@ -41,20 +41,24 @@ module(

bazel_dep(
name = "abseil-cpp",
version = "20250127.1",
version = "20260526.0",
)
bazel_dep(
name = "platforms",
version = "0.0.11",
version = "1.1.0",
)
bazel_dep(
name = "re2",
version = "2024-07-02.bcr.1",
version = "2025-11-05.bcr.1",
)
bazel_dep(
name = "rules_cc",
version = "0.2.22",
)

bazel_dep(
name = "rules_python",
version = "1.3.0",
version = "2.2.0",
dev_dependency = True,
)

Expand All @@ -67,7 +71,7 @@ python = use_extension(
python.toolchain(
ignore_root_user_error = True,
is_default = True,
python_version = "3.12",
python_version = "3.13",
)

# See fake_fuchsia_sdk.bzl for instructions on how to override this with a real SDK, if needed.
Expand Down
25 changes: 13 additions & 12 deletions extern/googletest/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@ Our documentation is now live on GitHub Pages at
https://google.github.io/googletest/. We recommend browsing the documentation on
GitHub Pages rather than directly in the repository.

#### Release 1.17.0
#### Release 1.18.0

[Release 1.17.0](https://github.com/google/googletest/releases/tag/v1.17.0) is
[Release 1.18.0](https://github.com/google/googletest/releases/tag/v1.18.0) is
now available.

The 1.17.x branch [requires at least C++17]((https://opensource.google/documentation/policies/cplusplus-support#c_language_standard).
The 1.18.x branch
[requires at least C++17](https://opensource.google/documentation/policies/cplusplus-support#c_language_standard).

#### Continuous Integration

Expand Down Expand Up @@ -43,35 +44,35 @@ More information about building GoogleTest can be found at

* xUnit test framework: \
Googletest is based on the [xUnit](https://en.wikipedia.org/wiki/XUnit)
testing framework, a popular architecture for unit testing
testing framework, a popular architecture for unit testing.
* Test discovery: \
Googletest automatically discovers and runs your tests, eliminating the need
to manually register your tests
to manually register your tests.
* Rich set of assertions: \
Googletest provides a variety of assertions, such as equality, inequality,
exceptions, and more, making it easy to test your code
exceptions, and more, making it easy to test your code.
* User-defined assertions: \
You can define your own assertions with Googletest, making it simple to
write tests that are specific to your code
write tests that are specific to your code.
* Death tests: \
Googletest supports death tests, which verify that your code exits in a
certain way, making it useful for testing error-handling code
certain way, making it useful for testing error-handling code.
* Fatal and non-fatal failures: \
You can specify whether a test failure should be treated as fatal or
non-fatal with Googletest, allowing tests to continue running even if a
failure occurs
failure occurs.
* Value-parameterized tests: \
Googletest supports value-parameterized tests, which run multiple times with
different input values, making it useful for testing functions that take
different inputs
different inputs.
* Type-parameterized tests: \
Googletest also supports type-parameterized tests, which run with different
data types, making it useful for testing functions that work with different
data types
data types.
* Various options for running tests: \
Googletest provides many options for running tests including running
individual tests, running tests in a specific order and running tests in
parallel
parallel.

## Supported Platforms

Expand Down
29 changes: 17 additions & 12 deletions extern/googletest/WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -31,31 +31,36 @@
workspace(name = "googletest")

load("//:googletest_deps.bzl", "googletest_deps")

googletest_deps()

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
name = "rules_python",
sha256 = "2cc26bbd53854ceb76dd42a834b1002cd4ba7f8df35440cf03482e045affc244",
strip_prefix = "rules_python-1.3.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/1.3.0/rules_python-1.3.0.tar.gz",
sha256 = "e11d2e1efce1589e5bdfa93986712c74fc7467a0f093143d489d2ef5ebb1ed2a",
strip_prefix = "rules_python-2.2.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/2.2.0/rules_python-2.2.0.tar.gz",
)

# https://github.com/bazelbuild/rules_python/releases/tag/1.1.0
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()

http_archive(
name = "bazel_skylib",
sha256 = "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94",
urls = ["https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz"],
)
py_repositories()

http_archive(
name = "platforms",
sha256 = "dbad4a23abcca6171e47b79edc53bd6a41067a3b75f9e8b104656b459ff25046",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.11/platforms-0.0.11.tar.gz",
"https://github.com/bazelbuild/platforms/releases/download/0.0.11/platforms-0.0.11.tar.gz",
"https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/1.1.0/platforms-1.1.0.tar.gz",
"https://github.com/bazelbuild/platforms/releases/download/1.1.0/platforms-1.1.0.tar.gz",
],
sha256 = "29742e87275809b5e598dc2f04d86960cc7a55b3067d97221c9abbc9926bff0f",
)

load("@bazel_features//:deps.bzl", "bazel_features_deps")

bazel_features_deps()

load("@rules_cc//cc:extensions.bzl", "compatibility_proxy_repo")

compatibility_proxy_repo()
98 changes: 61 additions & 37 deletions extern/googletest/ci/linux-presubmit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,22 @@

set -euox pipefail

readonly LINUX_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest:20241218"
readonly LINUX_GCC_FLOOR_CONTAINER="gcr.io/google.com/absl-177019/linux_gcc-floor:20250205"
readonly LINUX_LATEST_CONTAINER="gcr.io/google.com/absl-177019/linux_hybrid-latest@sha256:baa99e65a3cc837bab8e5246f1870d25c76d0adf2b1d598ee5a3ec77fd2e19bd"

if [[ -z ${GTEST_ROOT:-} ]]; then
GTEST_ROOT="$(realpath $(dirname ${0})/..)"
fi

# Use Bazel Vendor mode to reduce reliance on external dependencies.
# See https://bazel.build/external/vendor and the Dockerfile for
# an explaination of how this works.
if [[ ${KOKORO_GFILE_DIR:-} ]] && [[ -f "${KOKORO_GFILE_DIR}/distdir/googletest_vendor.tar.gz" ]]; then
DOCKER_EXTRA_ARGS="--mount type=bind,source=${KOKORO_GFILE_DIR}/distdir,target=/distdir,readonly --env=BAZEL_VENDOR_ARCHIVE=/distdir/googletest_vendor.tar.gz ${DOCKER_EXTRA_ARGS:-}"
BAZEL_EXTRA_ARGS="--vendor_dir=/googletest_vendor ${BAZEL_EXTRA_ARGS:-}"
fi

if [[ -z ${STD:-} ]]; then
STD="c++17 c++20"
STD="c++17 c++20 c++23"
fi

# Test CMake + GCC
Expand Down Expand Up @@ -71,7 +78,7 @@ for cmake_off_on in OFF ON; do
--tmpfs="/build:exec" \
--workdir="/build" \
--rm \
--env="CC=/opt/llvm/clang/bin/clang" \
--env="CC=/opt/llvm/bin/clang" \
--env=CXXFLAGS="-Werror -Wdeprecated --gcc-toolchain=/usr/local" \
${LINUX_LATEST_CONTAINER} \
/bin/bash -c "
Expand All @@ -91,20 +98,27 @@ time docker run \
--volume="${GTEST_ROOT}:/src:ro" \
--workdir="/src" \
--rm \
--env="CC=/usr/local/bin/gcc" \
--env="CC=/opt/gcc-10/bin/gcc" \
--env="BAZEL_CXXOPTS=-std=c++17" \
${LINUX_GCC_FLOOR_CONTAINER} \
--env="BAZEL_LINKOPTS=-L/opt/gcc-10/lib64:-Wl,-rpath=/opt/gcc-10/lib64" \
--env="USE_BAZEL_VERSION=8.5.1" \
${DOCKER_EXTRA_ARGS:-} \
${LINUX_LATEST_CONTAINER} \
/bin/bash --login -c "
/usr/local/bin/bazel test ... \
--copt="-Wall" \
--copt="-Werror" \
--copt="-Wuninitialized" \
--copt="-Wundef" \
--copt="-Wno-error=pragmas" \
--copt=\"-Wall\" \
--copt=\"-Werror\" \
--copt=\"-Wuninitialized\" \
--copt=\"-Wundef\" \
--copt=\"-Wno-error=pragmas\" \
--enable_bzlmod=false \
--enable_workspace=true \
--features=external_include_paths \
--keep_going \
--per_file_copt=\"external/.*@-w\" \
--show_timestamps \
--test_output=errors
--test_output=errors \
${BAZEL_EXTRA_ARGS:-}"

# Test GCC
for std in ${STD}; do
Expand All @@ -115,18 +129,23 @@ for std in ${STD}; do
--rm \
--env="CC=/usr/local/bin/gcc" \
--env="BAZEL_CXXOPTS=-std=${std}" \
--env="USE_BAZEL_VERSION=9.1.0" \
${DOCKER_EXTRA_ARGS:-} \
${LINUX_LATEST_CONTAINER} \
/usr/local/bin/bazel test ... \
--copt="-Wall" \
--copt="-Werror" \
--copt="-Wuninitialized" \
--copt="-Wundef" \
--define="absl=${absl}" \
--enable_bzlmod=true \
--features=external_include_paths \
--keep_going \
--show_timestamps \
--test_output=errors
/bin/bash --login -c "
/usr/local/bin/bazel test ... \
--copt=\"-Wall\" \
--copt=\"-Werror\" \
--copt=\"-Wuninitialized\" \
--copt=\"-Wundef\" \
--define=\"absl=${absl}\" \
--enable_bzlmod=true \
--features=external_include_paths \
--keep_going \
--per_file_copt=\"external/.*@-w\" \
--show_timestamps \
--test_output=errors \
${BAZEL_EXTRA_ARGS:-}"
done
done

Expand All @@ -137,21 +156,26 @@ for std in ${STD}; do
--volume="${GTEST_ROOT}:/src:ro" \
--workdir="/src" \
--rm \
--env="CC=/opt/llvm/clang/bin/clang" \
--env="CC=/opt/llvm/bin/clang" \
--env="BAZEL_CXXOPTS=-std=${std}" \
--env="USE_BAZEL_VERSION=9.1.0" \
${DOCKER_EXTRA_ARGS:-} \
${LINUX_LATEST_CONTAINER} \
/usr/local/bin/bazel test ... \
--copt="--gcc-toolchain=/usr/local" \
--copt="-Wall" \
--copt="-Werror" \
--copt="-Wuninitialized" \
--copt="-Wundef" \
--define="absl=${absl}" \
--enable_bzlmod=true \
--features=external_include_paths \
--keep_going \
--linkopt="--gcc-toolchain=/usr/local" \
--show_timestamps \
--test_output=errors
/bin/bash --login -c "
/usr/local/bin/bazel test ... \
--copt=\"--gcc-toolchain=/usr/local\" \
--copt=\"-Wall\" \
--copt=\"-Werror\" \
--copt=\"-Wuninitialized\" \
--copt=\"-Wundef\" \
--define=\"absl=${absl}\" \
--enable_bzlmod=true \
--features=external_include_paths \
--keep_going \
--linkopt=\"--gcc-toolchain=/usr/local\" \
--per_file_copt=\"external/.*@-w\" \
--show_timestamps \
--test_output=errors \
${BAZEL_EXTRA_ARGS:-}"
done
done
Loading
Loading