Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package re2 for openSUSE:Factory checked in at 2025-11-09 21:07:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/re2 (Old) and /work/SRC/openSUSE:Factory/.re2.new.1980 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "re2" Sun Nov 9 21:07:34 2025 rev:68 rq:1316533 version:MACRO Changes: -------- --- /work/SRC/openSUSE:Factory/re2/re2.changes 2025-08-22 17:46:48.677534312 +0200 +++ /work/SRC/openSUSE:Factory/.re2.new.1980/re2.changes 2025-11-09 21:07:37.038431509 +0100 @@ -1,0 +2,6 @@ +Sat Nov 8 07:53:25 UTC 2025 - Andreas Stieger <[email protected]> + +- update to 2025-11-05: + * Improve speed (BitState ShouldVisit) + +------------------------------------------------------------------- Old: ---- re2-2025-08-12.tar.gz New: ---- re2-2025-11-05.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ re2.spec ++++++ --- /var/tmp/diff_new_pack.N80q9A/_old 2025-11-09 21:07:37.814463963 +0100 +++ /var/tmp/diff_new_pack.N80q9A/_new 2025-11-09 21:07:37.818464130 +0100 @@ -17,7 +17,7 @@ # -%global longver 2025-08-12 +%global longver 2025-11-05 %global shortver %(echo %{longver}|sed 's|-||g') %define libname libre2-11 Name: re2 ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.N80q9A/_old 2025-11-09 21:07:37.862465970 +0100 +++ /var/tmp/diff_new_pack.N80q9A/_new 2025-11-09 21:07:37.866466137 +0100 @@ -1,6 +1,6 @@ -mtime: 1755714979 -commit: 1472e0b15319b2361d33e51d76209466f9411788849462230764558ebfa04643 +mtime: 1762588505 +commit: 5a92ba16a01f421aa83ccc2a29e26aa86e3252b26bfcd5981a33e3f81b209c0d url: https://src.opensuse.org/chromium/re2.git -revision: 1472e0b15319b2361d33e51d76209466f9411788849462230764558ebfa04643 +revision: 5a92ba16a01f421aa83ccc2a29e26aa86e3252b26bfcd5981a33e3f81b209c0d projectscmsync: https://src.opensuse.org/chromium/_ObsPrj.git ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2025-11-08 08:55:36.000000000 +0100 @@ -0,0 +1 @@ +.osc ++++++ re2-2025-08-12.tar.gz -> re2-2025-11-05.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/.bcr/metadata.template.json new/re2-2025-11-05/.bcr/metadata.template.json --- old/re2-2025-08-12/.bcr/metadata.template.json 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/.bcr/metadata.template.json 2025-11-05 15:38:27.000000000 +0100 @@ -12,9 +12,5 @@ "github:google/re2" ], "versions": [], - "yanked_versions": { - "2023-06-02": "bad compatibility_level, upgrade to 2023-09-01 or newer", - "2023-08-01": "bad compatibility_level, upgrade to 2023-09-01 or newer", - "2025-06-26": "accidentally lost from github, upgrade to 2025-07-22 or newer" - } + "yanked_versions": {} } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/.bcr/presubmit.yml new/re2-2025-11-05/.bcr/presubmit.yml --- old/re2-2025-08-12/.bcr/presubmit.yml 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/.bcr/presubmit.yml 2025-11-05 15:38:27.000000000 +0100 @@ -4,12 +4,12 @@ - debian10 - ubuntu2004 - macos - - windows bazel: - 7.x - 8.x + tasks: - build: + unix_build: platform: ${{ platform }} bazel: ${{ bazel }} build_flags: @@ -17,6 +17,14 @@ build_targets: - '@re2//:re2' - '@re2//python:re2' + windows_build: + platform: windows + bazel: ${{ bazel }} + build_flags: + - '--cxxopt=/std:c++17' + build_targets: + - '@re2//:re2' + - '@re2//python:re2' bcr_test_module: module_path: '.' @@ -31,17 +39,19 @@ - 7.x - 8.x tasks: - test: + unix_test: platform: ${{ platform }} bazel: ${{ bazel }} test_flags: - '--cxxopt=-std=c++17' test_targets: - - '//:all' - - '-//:dfa_test' - - '-//:exhaustive1_test' - - '-//:exhaustive2_test' - - '-//:exhaustive3_test' - - '-//:exhaustive_test' - - '-//:random_test' + - '//:small_tests' + - '//python:all' + windows_test: + platform: windows + bazel: ${{ bazel }} + test_flags: + - '--cxxopt=/std:c++17' + test_targets: + - '//:small_tests' - '//python:all' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/.github/bazel.sh new/re2-2025-11-05/.github/bazel.sh --- old/re2-2025-08-12/.github/bazel.sh 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/.github/bazel.sh 2025-11-05 15:38:27.000000000 +0100 @@ -16,13 +16,7 @@ bazel test \ --extra_toolchains=//python/toolchains:all \ --compilation_mode=${compilation_mode} -- \ - //:all \ - -//:dfa_test \ - -//:exhaustive1_test \ - -//:exhaustive2_test \ - -//:exhaustive3_test \ - -//:exhaustive_test \ - -//:random_test \ + //:small_tests \ //python:all done diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/.github/workflows/ci-bazel.yml new/re2-2025-11-05/.github/workflows/ci-bazel.yml --- old/re2-2025-08-12/.github/workflows/ci-bazel.yml 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/.github/workflows/ci-bazel.yml 2025-11-05 15:38:27.000000000 +0100 @@ -11,7 +11,7 @@ fail-fast: false matrix: os: [macos-latest, ubuntu-latest, windows-latest] - ver: ['3.9', '3.10', '3.11', '3.12', '3.13'] + ver: ['3.10', '3.11', '3.12', '3.13', '3.14'] env: BAZELISK_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/.github/workflows/pr.yml new/re2-2025-11-05/.github/workflows/pr.yml --- old/re2-2025-08-12/.github/workflows/pr.yml 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/.github/workflows/pr.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,34 +0,0 @@ -name: PR -on: - pull_request_target: - branches: [main] - types: [opened] -permissions: - contents: read -jobs: - close: - permissions: - contents: read - # We have to use two different APIs below, - # so just grant two different permissions. - issues: write - pull-requests: write - runs-on: ubuntu-latest - steps: - - uses: actions/[email protected] - - uses: actions/[email protected] - with: - script: | - const fs = require('fs'); - console.log(await github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body: fs.readFileSync('CONTRIBUTING.md', { encoding: 'utf8', }), - })); - console.log(await github.rest.pulls.update({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: context.issue.number, - state: 'closed', - })); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/.github/workflows/python.yml new/re2-2025-11-05/.github/workflows/python.yml --- old/re2-2025-08-12/.github/workflows/python.yml 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/.github/workflows/python.yml 2025-11-05 15:38:27.000000000 +0100 @@ -28,7 +28,7 @@ - { name: X64, python-name: x86_64, runs-on: [ubuntu-latest] } - { name: ARM64, python-name: aarch64, runs-on: [ubuntu-24.04-arm] } os: [manylinux_2_28] - ver: ['3.9', '3.10', '3.11', '3.12', '3.13'] + ver: ['3.10', '3.11', '3.12', '3.13', '3.14'] env: BAZELISK_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PYTHON: /usr/local/bin/python${{ matrix.ver }} @@ -84,7 +84,7 @@ # TODO(rsc): Stop cross-compiling now that we don't use macOS 12. # instead, specify `-large` suffix on X64 and `-xlarge` suffix on ARM64. os: [13, 14, 15] - ver: ['3.9', '3.10', '3.11', '3.12', '3.13'] + ver: ['3.10', '3.11', '3.12', '3.13', '3.14'] env: BAZELISK_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BAZEL_CPU: darwin_${{ matrix.arch.bazel-name }} @@ -147,7 +147,7 @@ - { name: X86, bazel-name: x64_x86, python-name: win32 } - { name: X64, bazel-name: x64, python-name: win_amd64 } - { name: ARM64, bazel-name: arm64, python-name: win_arm64 } - ver: ['3.9', '3.10', '3.11', '3.12', '3.13'] + ver: ['3.10', '3.11', '3.12', '3.13', '3.14'] exclude: - arch: { name: ARM64, bazel-name: arm64, python-name: win_arm64 } ver: '3.9' @@ -251,6 +251,6 @@ shell: bash working-directory: python - if: inputs.build >= 1 - uses: pypa/[email protected] + uses: pypa/[email protected] with: packages-dir: python/dist diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/.github/workflows/release-bazel.yml new/re2-2025-11-05/.github/workflows/release-bazel.yml --- old/re2-2025-08-12/.github/workflows/release-bazel.yml 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/.github/workflows/release-bazel.yml 2025-11-05 15:38:27.000000000 +0100 @@ -20,11 +20,19 @@ release: uses: bazel-contrib/publish-to-bcr/.github/workflows/[email protected] with: + draft: false tag_name: ${{ inputs.tag_name }} - # This workflow seems to require keeping a fork of the upstream to open - # PRs from. registry_fork: re2-machine/bazel-central-registry - attest: true + # NOTE: To use attest: true, we need a signed intoto.jsonl file, + # but that appears to require using + # the release_ruleset support described on + # https://github.com/bazel-contrib/publish-to-bcr?tab=readme-ov-file#attesation-support + # but that requires a release_prep.sh file, + # and an override on the test command, + # and may insist on doing the release upload of the source zip + # (which we do ourselves separately), + # and possibly more problems I didn't hit because I gave up. + attest: false # too hard to generate the intoto.jsonl file permissions: contents: write id-token: write diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/BUILD.bazel new/re2-2025-11-05/BUILD.bazel --- old/re2-2025-08-12/BUILD.bazel 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/BUILD.bazel 2025-11-05 15:38:27.000000000 +0100 @@ -4,6 +4,10 @@ # Bazel (http://bazel.build/) BUILD file for RE2. +load("@rules_cc//cc:cc_binary.bzl", "cc_binary") +load("@rules_cc//cc:cc_library.bzl", "cc_library") +load("@rules_cc//cc:cc_test.bzl", "cc_test") + licenses(["notice"]) exports_files(["LICENSE"]) @@ -436,3 +440,24 @@ "@google_benchmark//:benchmark_main", ], ) + +test_suite( + name = "small_tests", + tags = ["small"], + tests = [ + ":charclass_test", + ":compile_test", + ":filtered_re2_test", + ":mimics_pcre_test", + ":parse_test", + ":possible_match_test", + ":re2_arg_test", + ":re2_test", + ":regexp_test", + ":required_prefix_test", + ":search_test", + ":set_test", + ":simplify_test", + ":string_generator_test", + ], +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/CMakeLists.txt new/re2-2025-11-05/CMakeLists.txt --- old/re2-2025-08-12/CMakeLists.txt 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/CMakeLists.txt 2025-11-05 15:38:27.000000000 +0100 @@ -31,6 +31,10 @@ option(RE2_BENCHMARK "build RE2 benchmarks" OFF) option(RE2_BUILD_TESTING "build and run RE2 tests; build RE2 benchmarks" OFF) +# RE2_INSTALL (which defaults to ON) controls whether the installation +# rules are generated. +option(RE2_INSTALL "install RE2" ON) + # The pkg-config Requires: field. set(REQUIRES) @@ -246,32 +250,34 @@ endif() endif() -install(TARGETS re2 - EXPORT re2Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/re2 - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -install(EXPORT re2Targets - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2 - NAMESPACE re2::) - -configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/re2Config.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/re2Config.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2) -write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/re2ConfigVersion.cmake - VERSION ${SONAME}.0.0 - COMPATIBILITY SameMajorVersion) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/re2Config.cmake - ${CMAKE_CURRENT_BINARY_DIR}/re2ConfigVersion.cmake - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2) - -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/re2.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/re2.pc - @ONLY) +if(RE2_INSTALL) + install(TARGETS re2 + EXPORT re2Targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/re2 + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + install(EXPORT re2Targets + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2 + NAMESPACE re2::) + + configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/re2Config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/re2Config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2) + write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/re2ConfigVersion.cmake + VERSION ${SONAME}.0.0 + COMPATIBILITY SameMajorVersion) + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/re2Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/re2ConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2) + + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/re2.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/re2.pc + @ONLY) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/re2.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/re2.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/CONTRIBUTING.md new/re2-2025-11-05/CONTRIBUTING.md --- old/re2-2025-08-12/CONTRIBUTING.md 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/CONTRIBUTING.md 2025-11-05 15:38:27.000000000 +0100 @@ -1,2 +1 @@ -RE2 uses Gerrit instead of GitHub pull requests. See the [Contribute](https://github.com/google/re2/wiki/Contribute) wiki page. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/MODULE.bazel new/re2-2025-11-05/MODULE.bazel --- old/re2-2025-08-12/MODULE.bazel 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/MODULE.bazel 2025-11-05 15:38:27.000000000 +0100 @@ -6,12 +6,12 @@ module( name = "re2", - version = "2025-08-12", + version = "2025-11-05", compatibility_level = 1, ) bazel_dep(name = "platforms", version = "1.0.0") -bazel_dep(name = "apple_support", version = "1.22.1") +bazel_dep(name = "apple_support", version = "1.23.1") bazel_dep(name = "rules_cc", version = "0.1.4") bazel_dep(name = "abseil-cpp", version = "20250512.1") bazel_dep(name = "rules_python", version = "1.5.1") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/python/setup.py new/re2-2025-11-05/python/setup.py --- old/re2-2025-08-12/python/setup.py 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/python/setup.py 2025-11-05 15:38:27.000000000 +0100 @@ -129,7 +129,7 @@ setuptools.setup( name='google-re2', - version='1.1.20250812', + version='1.1.20251105', description='RE2 Python bindings', long_description=long_description, long_description_content_type='text/plain', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/re2-2025-08-12/re2/bitstate.cc new/re2-2025-11-05/re2/bitstate.cc --- old/re2-2025-08-12/re2/bitstate.cc 2025-08-12 23:53:47.000000000 +0200 +++ new/re2-2025-11-05/re2/bitstate.cc 2025-11-05 15:38:27.000000000 +0100 @@ -49,7 +49,7 @@ bool longest, absl::string_view* submatch, int nsubmatch); private: - inline bool ShouldVisit(int id, const char* p); + static inline bool ShouldVisit(absl::string_view text, uint64_t* visited, uint16_t id, const char* p); void Push(int id, const char* p); void GrowStack(); bool TrySearch(int id, const char* p); @@ -85,16 +85,19 @@ njob_(0) { } -// Given id, which *must* be a list head, we can look up its list ID. -// Then the question is: Should the search visit the (list ID, p) pair? +// Given the text being searched and current visited state, +// as well as a list ID, should the search visit the (list ID, p) pair? // If so, remember that it was visited so that the next time, // we don't repeat the visit. -bool BitState::ShouldVisit(int id, const char* p) { - int n = prog_->list_heads()[id] * static_cast<int>(text_.size()+1) + - static_cast<int>(p-text_.data()); - if (visited_[n/kVisitedBits] & (uint64_t{1} << (n & (kVisitedBits-1)))) +// We pass text and visited to this as a static method so that the +// caller can do those loads once instead of this code dereferencing +// them multiple times. +bool BitState::ShouldVisit(absl::string_view text, uint64_t* visited, uint16_t list_id, const char* p) { + int n = list_id * static_cast<int>(text.size()+1) + + static_cast<int>(p-text.data()); + if (visited[n/kVisitedBits] & (uint64_t{1} << (n & (kVisitedBits-1)))) return false; - visited_[n/kVisitedBits] |= uint64_t{1} << (n & (kVisitedBits-1)); + visited[n/kVisitedBits] |= uint64_t{1} << (n & (kVisitedBits-1)); return true; } @@ -140,10 +143,12 @@ bool BitState::TrySearch(int id0, const char* p0) { bool matched = false; const char* end = text_.data() + text_.size(); + uint16_t* list_heads = prog_->list_heads(); + uint64_t* visited = visited_.data(); njob_ = 0; // Push() no longer checks ShouldVisit(), // so we must perform the check ourselves. - if (ShouldVisit(id0, p0)) + if (ShouldVisit(text_, visited, list_heads[id0], p0)) Push(id0, p0); while (njob_ > 0) { // Pop job off stack. @@ -237,7 +242,7 @@ // Sanity check: id is the head of its list, which must // be the case if id-1 is the last of *its* list. :) ABSL_DCHECK(id == 0 || prog_->inst(id-1)->last()); - if (ShouldVisit(id, p)) + if (ShouldVisit(text_, visited, list_heads[id], p)) goto Loop; break;
