ci: update workflows
diff --git a/.github/workflows/amd64_linux_bazel.yml b/.github/workflows/amd64_linux_bazel.yml
index 133802b..3dddbcb 100644
--- a/.github/workflows/amd64_linux_bazel.yml
+++ b/.github/workflows/amd64_linux_bazel.yml
@@ -3,31 +3,27 @@
 
 on: [push, pull_request, workflow_dispatch]
 
+concurrency:
+  group: ${{github.workflow}}-${{github.ref}}
+  cancel-in-progress: true
+
 # Building using the github runner environement directly.
 jobs:
   native:
     strategy:
       matrix:
-        bazel: [
-          {compilation_mode: opt},
-          {compilation_mode: dbg},
-        ]
+        examples: [{name: basic}, {name: embed}]
         cpp: [
-          {version: 14, flags: "-std=c++14"},
+          #{version: 14, flags: "-std=c++14"},
           {version: 17, flags: "-std=c++17"},
           {version: 20, flags: "-std=c++20"},
         ]
         python: [
           {version: '3.11'},
+          {version: '3.12'},
         ]
-        exclude:
-          # only test `-c dbg` build with C++17
-          - cpp: {version: 14}
-            bazel: {compilation_mode: dbg}
-          - cpp: {version: 20}
-            bazel: {compilation_mode: dbg}
       fail-fast: false
-    name: Linux•Bazel(${{ matrix.bazel.compilation_mode }})•C++${{ matrix.cpp.version }}•Python${{ matrix.python.version }}
+    name: Linux•Bzl•C++${{matrix.cpp.version}}•Py${{matrix.python.version}}•${{matrix.examples.name}}
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v5
@@ -36,7 +32,7 @@
       - name: Setup Python
         uses: actions/setup-python@v6
         with:
-          python-version: ${{ matrix.python.version }}
+          python-version: ${{matrix.python.version}}
       - name: Check Python
         run: |
           python --version
@@ -44,27 +40,27 @@
       - uses: bazel-contrib/setup-bazel@0.15.0
         with:
           bazelisk-cache: true
-          disk-cache: ${{ github.workflow }}
+          disk-cache: ${{github.workflow}}
           repository-cache: true
       - name: Check Bazel
         run: bazel version
       - name: Build
         run: >
-          cd examples/basic &&
+          cd examples/${{matrix.examples.name}} &&
           bazel build
-          -c ${{ matrix.bazel.compilation_mode }}
-          --cxxopt=${{ matrix.cpp.flags }} --host_cxxopt=${{ matrix.cpp.flags }}
+          --config=ci
+          --@rules_python//python/config_settings:python_version=${{matrix.python.version}}
+          --cxxopt=${{matrix.cpp.flags}} --host_cxxopt=${{ matrix.cpp.flags }}
           --subcommands=pretty_print
-          --enable_bzlmod
           //...
       - name: Test
         run: >
-          cd examples/basic &&
+          cd examples/${{matrix.examples.name}} &&
           bazel test
-          -c ${{ matrix.bazel.compilation_mode }}
-          --cxxopt=${{ matrix.cpp.flags }} --host_cxxopt=${{ matrix.cpp.flags }}
+          --config=ci
+          --@rules_python//python/config_settings:python_version=${{matrix.python.version}}
+          --cxxopt=${{matrix.cpp.flags}} --host_cxxopt=${{ matrix.cpp.flags }}
           --subcommands=pretty_print
-          --enable_bzlmod
           //...
 
   amd64_linux_bazel:
diff --git a/.github/workflows/amd64_macos_bazel.yml b/.github/workflows/amd64_macos_bazel.yml
index b6d2aad..d9cfa6c 100644
--- a/.github/workflows/amd64_macos_bazel.yml
+++ b/.github/workflows/amd64_macos_bazel.yml
@@ -3,31 +3,27 @@
 
 on: [push, pull_request, workflow_dispatch]
 
+concurrency:
+  group: ${{github.workflow}}-${{github.ref}}
+  cancel-in-progress: true
+
 # Building using the github runner environement directly.
 jobs:
   native:
     strategy:
       matrix:
-        bazel: [
-          {compilation_mode: opt},
-          {compilation_mode: dbg},
-        ]
+        examples: [{name: basic}, {name: embed}]
         cpp: [
           #{version: 14, flags: "-std=c++14"},
           {version: 17, flags: "-std=c++17"},
-          #{version: 20, flags: "-std=c++20"},
+          {version: 20, flags: "-std=c++20"},
         ]
         python: [
           {version: '3.11'},
+          {version: '3.12'},
         ]
-        exclude:
-          # only test `-c dbg` build with C++17
-          - cpp: {version: 14}
-            bazel: {compilation_mode: dbg}
-          - cpp: {version: 20}
-            bazel: {compilation_mode: dbg}
       fail-fast: false
-    name: MacOS•Bazel(${{ matrix.bazel.compilation_mode }})•C++${{ matrix.cpp.version }}•Python${{ matrix.python.version }}
+    name: MacOS•Bzl•C++${{matrix.cpp.version}}•Py${{matrix.python.version}}•${{matrix.examples.name}}
     runs-on: macos-13 # last macos intel based runner
     steps:
       - uses: actions/checkout@v5
@@ -39,7 +35,7 @@
       - name: Setup Python
         uses: actions/setup-python@v6
         with:
-          python-version: ${{ matrix.python.version }}
+          python-version: ${{matrix.python.version}}
       - name: Check Python
         run: |
           python --version
@@ -48,21 +44,21 @@
         run: bazel version
       - name: Build
         run: >
-          cd examples/basic &&
+          cd examples/${{matrix.examples.name}} &&
           bazel build
-          -c ${{ matrix.bazel.compilation_mode }}
-          --cxxopt=${{ matrix.cpp.flags }} --host_cxxopt=${{ matrix.cpp.flags }}
+          --config=ci
+          --@rules_python//python/config_settings:python_version=${{matrix.python.version}}
+          --cxxopt=${{matrix.cpp.flags}} --host_cxxopt=${{ matrix.cpp.flags }}
           --subcommands=pretty_print
-          --enable_bzlmod
           //...
       - name: Test
         run: >
-          cd examples/basic &&
+          cd examples/${{matrix.examples.name}} &&
           bazel test
-          -c ${{ matrix.bazel.compilation_mode }}
-          --cxxopt=${{ matrix.cpp.flags }} --host_cxxopt=${{ matrix.cpp.flags }}
+          --config=ci
+          --@rules_python//python/config_settings:python_version=${{matrix.python.version}}
+          --cxxopt=${{matrix.cpp.flags}} --host_cxxopt=${{ matrix.cpp.flags }}
           --subcommands=pretty_print
-          --enable_bzlmod
           //...
 
   amd64_macos_bazel:
diff --git a/.github/workflows/amd64_windows_bazel.yml b/.github/workflows/amd64_windows_bazel.yml
index 0ae86c1..74adad3 100644
--- a/.github/workflows/amd64_windows_bazel.yml
+++ b/.github/workflows/amd64_windows_bazel.yml
@@ -3,46 +3,34 @@
 
 on: [push, pull_request, workflow_dispatch]
 
+concurrency:
+  group: ${{github.workflow}}-${{github.ref}}
+  cancel-in-progress: true
+
 # Building using the github runner environement directly.
 jobs:
   native:
     strategy:
       matrix:
-        runner: [
-          windows-2022,
-          #windows-2019,
-        ]
-        bazel: [
-          {compilation_mode: opt},
-          {compilation_mode: dbg},
-        ]
+        examples: [{name: basic}, {name: embed}]
         cpp: [
-          {version: 14, flags: "/std:c++14"},
+          #{version: 14, flags: "/std:c++14"},
           {version: 17, flags: "/std:c++17"},
-          #{version: 20, flags: "/std:c++20"},
+          {version: 20, flags: "/std:c++20"},
         ]
         python: [
           {version: '3.11'},
+          {version: '3.12'},
         ]
-        exclude:
-          - runner: windows-2019
-            cpp: {version: 20}
-          # only test -c dbg with VS 2022 version 17 to save compute time
-          - runner: windows-2019
-            bazel: {compilation_mode: dbg}
-          - cpp: {version: 14}
-            bazel: {compilation_mode: dbg}
-          - cpp: {version: 20}
-            bazel: {compilation_mode: dbg}
-      fail-fast: false # Don't cancel all jobs if one fails.
-    name: ${{ matrix.runner }}•Bazel(${{ matrix.bazel.compilation_mode }})•C++${{ matrix.cpp.version }}•Python${{ matrix.python.version }}
-    runs-on: ${{ matrix.runner }}
+      fail-fast: false
+    name: Windows•Bzl•C++${{matrix.cpp.version}}•Py${{matrix.python.version}}•${{matrix.examples.name}}
+    runs-on: windows-2022
     steps:
       - uses: actions/checkout@v5
       - name: Setup Python
         uses: actions/setup-python@v6
         with:
-          python-version: ${{ matrix.python.version }}
+          python-version: ${{matrix.python.version}}
       - name: Check Python
         run: |
           python --version
@@ -53,21 +41,21 @@
         run: bazel version
       - name: Build
         run: >
-          cd examples/basic &&
+          cd examples/${{matrix.examples.name}} &&
           bazel build
-          -c ${{ matrix.bazel.compilation_mode }}
-          --cxxopt=${{ matrix.cpp.flags }} --host_cxxopt=${{ matrix.cpp.flags }}
+          --config=ci
+          --@rules_python//python/config_settings:python_version=${{matrix.python.version}}
+          --cxxopt=${{matrix.cpp.flags}} --host_cxxopt=${{ matrix.cpp.flags }}
           --subcommands=pretty_print
-          --enable_bzlmod
           //...
       - name: Test
         run: >
-          cd examples/basic &&
+          cd examples/${{matrix.examples.name}} &&
           bazel test
-          -c ${{ matrix.bazel.compilation_mode }}
-          --cxxopt=${{ matrix.cpp.flags }} --host_cxxopt=${{ matrix.cpp.flags }}
+          --config=ci
+          --@rules_python//python/config_settings:python_version=${{matrix.python.version}}
+          --cxxopt=${{matrix.cpp.flags}} --host_cxxopt=${{ matrix.cpp.flags }}
           --subcommands=pretty_print
-          --enable_bzlmod
           //...
 
   amd64_windows_bazel:
diff --git a/.github/workflows/arm64_macos_bazel.yml b/.github/workflows/arm64_macos_bazel.yml
index 59494fc..fd52f24 100644
--- a/.github/workflows/arm64_macos_bazel.yml
+++ b/.github/workflows/arm64_macos_bazel.yml
@@ -3,31 +3,27 @@
 
 on: [push, pull_request, workflow_dispatch]
 
+concurrency:
+  group: ${{github.workflow}}-${{github.ref}}
+  cancel-in-progress: true
+
 # Building using the github runner environement directly.
 jobs:
   native:
     strategy:
       matrix:
-        bazel: [
-          {compilation_mode: opt},
-          {compilation_mode: dbg},
-        ]
+        examples: [{name: basic}, {name: embed}]
         cpp: [
           #{version: 14, flags: "-std=c++14"},
           {version: 17, flags: "-std=c++17"},
-          #{version: 20, flags: "-std=c++20"},
+          {version: 20, flags: "-std=c++20"},
         ]
         python: [
           {version: '3.11'},
+          {version: '3.12'},
         ]
-        exclude:
-          # only test `-c dbg` build with C++17
-          - cpp: {version: 14}
-            bazel: {compilation_mode: dbg}
-          - cpp: {version: 20}
-            bazel: {compilation_mode: dbg}
       fail-fast: false
-    name: MacOS•Bazel(${{ matrix.bazel.compilation_mode }})•C++${{ matrix.cpp.version }}•Python${{ matrix.python.version }}
+    name: MacOS•Bzl•C++${{matrix.cpp.version}}•Py${{matrix.python.version}}•${{matrix.examples.name}}
     runs-on: macos-latest
     steps:
       - uses: actions/checkout@v5
@@ -39,7 +35,7 @@
       - name: Setup Python
         uses: actions/setup-python@v6
         with:
-          python-version: ${{ matrix.python.version }}
+          python-version: ${{matrix.python.version}}
       - name: Check Python
         run: |
           python --version
@@ -48,21 +44,21 @@
         run: bazel version
       - name: Build
         run: >
-          cd examples/basic &&
+          cd examples/${{matrix.examples.name}} &&
           bazel build
-          -c ${{ matrix.bazel.compilation_mode }}
-          --cxxopt=${{ matrix.cpp.flags }} --host_cxxopt=${{ matrix.cpp.flags }}
+          --config=ci
+          --@rules_python//python/config_settings:python_version=${{matrix.python.version}}
+          --cxxopt=${{matrix.cpp.flags}} --host_cxxopt=${{ matrix.cpp.flags }}
           --subcommands=pretty_print
-          --enable_bzlmod
           //...
       - name: Test
         run: >
-          cd examples/basic &&
+          cd examples/${{matrix.examples.name}} &&
           bazel test
-          -c ${{ matrix.bazel.compilation_mode }}
-          --cxxopt=${{ matrix.cpp.flags }} --host_cxxopt=${{ matrix.cpp.flags }}
+          --config=ci
+          --@rules_python//python/config_settings:python_version=${{matrix.python.version}}
+          --cxxopt=${{matrix.cpp.flags}} --host_cxxopt=${{ matrix.cpp.flags }}
           --subcommands=pretty_print
-          --enable_bzlmod
           //...
 
   arm64_macos_bazel: