8 Commits 038c81c8f8 ... 30346608d4

Author SHA1 Message Date
  hor911 30346608d4 Public TValuePackerTransport.IsBlock_ field 8 hours ago
  akhropov ff081e2e50 Remove TRbTree and TAvlTree from forward declarations as they are not in util 10 hours ago
  robot-contrib 79cd9d5cc8 Update contrib/libs/expat to 2.6.4 10 hours ago
  shumkovnd 74e7baa2f4 Support ALTER SEQUENCE command 11 hours ago
  robot-brewer 56de0f5688 Release clang-format-18 #2 11 hours ago
  thegeorg 3f28d3f612 Enable -Wreturn-std-move 12 hours ago
  ziganshinmr c320ff3884 ListSample/ListSampleN/ListShuffle implementation 12 hours ago
  aneporada 00bc077e8f Fix filter pushdown over Aggregate with session/hopping window 12 hours ago

+ 10 - 0
build/mapping.conf.json

@@ -1042,6 +1042,11 @@
         "7451466407": "https://devtools-registry.s3.yandex.net/7451466407",
         "7407150115": "https://devtools-registry.s3.yandex.net/7407150115",
         "7451406900": "https://devtools-registry.s3.yandex.net/7451406900",
+        "7494722271": "https://devtools-registry.s3.yandex.net/7494722271",
+        "7494597813": "https://devtools-registry.s3.yandex.net/7494597813",
+        "7495431598": "https://devtools-registry.s3.yandex.net/7495431598",
+        "7495332394": "https://devtools-registry.s3.yandex.net/7495332394",
+        "7495957585": "https://devtools-registry.s3.yandex.net/7495957585",
         "6048579718": "https://devtools-registry.s3.yandex.net/6048579718",
         "2980468199": "https://devtools-registry.s3.yandex.net/2980468199",
         "5562224408": "https://devtools-registry.s3.yandex.net/5562224408"
@@ -2088,6 +2093,11 @@
         "7451466407": "ynd-clang-18-optimized-linux-x86_64-c66062833fd14752a7ad8fbfb8f25f370b097278",
         "7407150115": "ynd-clang-18-optimized-mingw-w64-x86_64-56872a411472c7ec2b09f2c8372ea4c67d069a5b",
         "7451406900": "ynd-clang-18-optimized-mingw-w64-x86_64-c66062833fd14752a7ad8fbfb8f25f370b097278",
+        "7494722271": "ynd-clang-format-18-darwin-arm64-d0b9255e235e80974f9dfd0ebff3850929bed981",
+        "7494597813": "ynd-clang-format-18-darwin-x86_64-d0b9255e235e80974f9dfd0ebff3850929bed981",
+        "7495431598": "ynd-clang-format-18-linux-aarch64-d0b9255e235e80974f9dfd0ebff3850929bed981",
+        "7495332394": "ynd-clang-format-18-linux-x86_64-d0b9255e235e80974f9dfd0ebff3850929bed981",
+        "7495957585": "ynd-clang-format-18-mingw-w64-x86_64-d0b9255e235e80974f9dfd0ebff3850929bed981",
         "6048579718": "yt/go/ytrecipe/cmd/ytexec for linux",
         "2980468199": "ytexec for linux",
         "5562224408": "ytexec for linux"

+ 54 - 0
build/ya.conf.json

@@ -86,6 +86,14 @@
             },
             "formula": "build/platform/clang/clang-format/clang-format16.json"
         },
+        "clang-format-18": {
+            "executable": {
+                "clang-format": [
+                    "clang-format"
+                ]
+            },
+            "formula": "build/platform/clang/clang-format/clang-format18.json"
+        },
         "clang16": {
             "executable": {
                 "c++": [
@@ -484,6 +492,49 @@
                 }
             }
         },
+        "clang-format-18": {
+            "platforms": [
+                {
+                    "default": true,
+                    "host": {
+                        "arch": "x86_64",
+                        "os": "LINUX"
+                    }
+                },
+                {
+                    "default": true,
+                    "host": {
+                        "arch": "aarch64",
+                        "os": "LINUX"
+                    }
+                },
+                {
+                    "default": true,
+                    "host": {
+                        "os": "WIN"
+                    }
+                },
+                {
+                    "default": true,
+                    "host": {
+                        "os": "DARWIN"
+                    }
+                },
+                {
+                    "default": true,
+                    "host": {
+                        "arch": "arm64",
+                        "os": "DARWIN"
+                    }
+                }
+            ],
+            "tools": {
+                "clang-format-18": {
+                    "bottle": "clang-format-18",
+                    "executable": "clang-format"
+                }
+            }
+        },
         "clang16": {
             "env": {
                 "CPATH": [
@@ -2302,6 +2353,9 @@
         "clang-format": {
             "description": "Run Clang-Format source code formatter"
         },
+        "clang-format-18": {
+            "description": "Run Clang-Format source code formatter (18 version)"
+        },
         "clang-rename": {
             "description": "Run Clang-Rename refactoring tool"
         },

+ 0 - 1
build/ymake_conf.py

@@ -1551,7 +1551,6 @@ class GnuCompiler(Compiler):
                 '-Wno-deprecated-enum-float-conversion',
                 '-Wno-deprecated-volatile',
                 '-Wno-pessimizing-move',
-                '-Wno-return-std-move',
                 '-Wno-undefined-var-template',
             ]
 

+ 44 - 34
contrib/libs/expat/.yandex_meta/devtools.copyrights.report

@@ -85,7 +85,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
         lib/xmltok_impl.c [9:20]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 17566be0ee85deadbd5b2fcedc8b66a9
@@ -96,7 +96,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 1916cbefc2e0a780a3d503ba26f3780a
 BELONGS ya.make
@@ -129,7 +129,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
         lib/xmltok.c [9:27]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 262c58e3a627f5cee77a882379e1364f
@@ -151,7 +151,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 338b8ad8ee9b8449a90a88a0559aefd9
 BELONGS ya.make
@@ -161,7 +161,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 347b7c5a6d0cfaa5712b5fb2bfd1a69a
 BELONGS ya.make
@@ -182,7 +182,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 387a03e23bfe968e0bc1919b0ef65164
 BELONGS ya.make
@@ -202,7 +202,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 4010f67351b9e656cc500aa367c0c393
 BELONGS ya.make
@@ -212,7 +212,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
         lib/xmlrole.c [9:19]
         lib/xmltok.c [9:27]
 
@@ -235,7 +235,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
         lib/xmltok.c [9:27]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 50da2a76d12ee3df6d928d81ca59a715
@@ -266,7 +266,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 576486d7fb5eeab148dcf39027acec46
 BELONGS ya.make
@@ -276,7 +276,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 581b53ae6f0fb8a0cc30c73b46bc3441
 BELONGS ya.make
@@ -319,7 +319,7 @@ BELONGS ya.make
         Match type      : COPYRIGHT
     Files with this license:
         expat.h [9:22]
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 5fe78d330bca84f8e39670e48c92ba39
 BELONGS ya.make
@@ -330,7 +330,7 @@ BELONGS ya.make
         Match type      : COPYRIGHT
     Files with this license:
         lib/internal.h [28:36]
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 60e5da68428d71447ddd4bd7750453bb
 BELONGS ya.make
@@ -340,7 +340,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 6451d5e490271b354ad3b567c7a03423
 BELONGS ya.make
@@ -350,7 +350,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 660431f3ef648d1a8e72ca1d307af738
 BELONGS ya.make
@@ -360,7 +360,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 7588a9020c401c85f6b542a5629c0c92
 BELONGS ya.make
@@ -380,7 +380,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL 7c09099ef5f35bf3be4611e6cbb14510
 BELONGS ya.make
@@ -409,7 +409,7 @@ BELONGS ya.make
         lib/nametab.h [9:11]
         lib/utf8tab.h [9:13]
         lib/winconfig.h [9:14]
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
         lib/xmlrole.c [9:19]
         lib/xmlrole.h [9:14]
         lib/xmltok.c [9:27]
@@ -460,11 +460,21 @@ BELONGS ya.make
         Match type      : COPYRIGHT
     Files with this license:
         lib/internal.h [28:36]
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
         lib/xmlrole.c [9:19]
         lib/xmltok.c [9:27]
         lib/xmltok_impl.c [9:20]
 
+KEEP     COPYRIGHT_SERVICE_LABEL 9b348497698951665d1e43c1d376a510
+BELONGS ya.make
+    Note: matched license text is too long. Read it in the source files.
+    Scancode info:
+        Original SPDX id: COPYRIGHT_SERVICE_LABEL
+        Score           : 100.00
+        Match type      : COPYRIGHT
+    Files with this license:
+        lib/xmlparse.c [9:44]
+
 KEEP     COPYRIGHT_SERVICE_LABEL 9fdb85dcaaf74d518b27233b48fffa52
 BELONGS ya.make
     Note: matched license text is too long. Read it in the source files.
@@ -475,7 +485,7 @@ BELONGS ya.make
     Files with this license:
         expat.h [9:22]
         expat_external.h [9:18]
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL a0fdd1392c0b9b2558b9ccfe44592143
 BELONGS ya.make
@@ -527,7 +537,7 @@ BELONGS ya.make
         Match type      : COPYRIGHT
     Files with this license:
         expat.h [9:22]
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
         lib/xmltok.c [9:27]
         lib/xmltok_impl.c [9:20]
 
@@ -539,7 +549,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL ac721fcd634b3e5674a847f5ed2f1c8e
 BELONGS ya.make
@@ -559,7 +569,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL b646d644160a51f7f42f9fd9f89d8b3f
 BELONGS ya.make
@@ -620,7 +630,7 @@ BELONGS ya.make
         lib/iasciitab.h [9:13]
         lib/latin1tab.h [9:13]
         lib/utf8tab.h [9:13]
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
         lib/xmlrole.c [9:19]
         lib/xmlrole.h [9:14]
         lib/xmltok.c [9:27]
@@ -637,7 +647,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL d548c6beaeae204247905b60d5feff91
 BELONGS ya.make
@@ -647,7 +657,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
         lib/xmltok_impl.c [9:20]
 
 KEEP     COPYRIGHT_SERVICE_LABEL d9ac29affff64c14b3c82b78ed157a77
@@ -658,7 +668,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
         lib/xmlrole.c [9:19]
         lib/xmltok.c [9:27]
 
@@ -670,7 +680,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL dd3e49797101e1ae2e966f0ebdd58da4
 BELONGS ya.make
@@ -700,7 +710,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL e3d6c1b6030b59aad9996cc0a9efeda5
 BELONGS ya.make
@@ -710,7 +720,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL e526eb605bd716769dd1ed15786af827
 BELONGS ya.make
@@ -730,7 +740,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL ef0dda0153a00710149f327147a79b7f
 BELONGS ya.make
@@ -771,7 +781,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL f792720cb266393d3d3fb2199660c4ea
 BELONGS ya.make
@@ -783,7 +793,7 @@ BELONGS ya.make
     Files with this license:
         expat.h [9:22]
         lib/internal.h [28:36]
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
         lib/xmltok.c [9:27]
         lib/xmltok.h [9:15]
 
@@ -813,7 +823,7 @@ BELONGS ya.make
         Score           : 100.00
         Match type      : COPYRIGHT
     Files with this license:
-        lib/xmlparse.c [9:43]
+        lib/xmlparse.c [9:44]
 
 KEEP     COPYRIGHT_SERVICE_LABEL ffabe442e64111946b696c0384a52a77
 BELONGS ya.make

+ 3 - 3
contrib/libs/expat/.yandex_meta/devtools.licenses.report

@@ -42,7 +42,7 @@ BELONGS ya.make
 
 KEEP     MIT                  6bb6514a1d779748b76a73215a89ae66
 BELONGS ya.make
-FILE_INCLUDE AUTHORS found in files: expat.h at line 38, expat_external.h at line 34, lib/ascii.h at line 30, lib/asciitab.h at line 29, lib/iasciitab.h at line 29, lib/internal.h at line 52, lib/latin1tab.h at line 29, lib/utf8tab.h at line 29, lib/winconfig.h at line 30, lib/xmlparse.c at line 59, lib/xmlrole.c at line 35, lib/xmlrole.h at line 30, lib/xmltok.c at line 43, lib/xmltok.h at line 31, lib/xmltok_impl.c at line 36, lib/xmltok_impl.h at line 28, lib/xmltok_ns.c at line 31
+FILE_INCLUDE AUTHORS found in files: expat.h at line 38, expat_external.h at line 34, lib/ascii.h at line 30, lib/asciitab.h at line 29, lib/iasciitab.h at line 29, lib/internal.h at line 52, lib/latin1tab.h at line 29, lib/utf8tab.h at line 29, lib/winconfig.h at line 30, lib/xmlparse.c at line 60, lib/xmlrole.c at line 35, lib/xmlrole.h at line 30, lib/xmltok.c at line 43, lib/xmltok.h at line 31, lib/xmltok_impl.c at line 36, lib/xmltok_impl.h at line 28, lib/xmltok_ns.c at line 31
     Note: matched license text is too long. Read it in the source files.
     Scancode info:
         Original SPDX id: MIT
@@ -59,7 +59,7 @@ FILE_INCLUDE AUTHORS found in files: expat.h at line 38, expat_external.h at lin
         lib/latin1tab.h [15:32]
         lib/utf8tab.h [15:32]
         lib/winconfig.h [16:33]
-        lib/xmlparse.c [45:62]
+        lib/xmlparse.c [46:63]
         lib/xmlrole.c [21:38]
         lib/xmlrole.h [16:33]
         lib/xmltok.c [29:46]
@@ -100,7 +100,7 @@ BELONGS ya.make
         lib/nametab.h [11:11]
         lib/utf8tab.h [13:13]
         lib/winconfig.h [14:14]
-        lib/xmlparse.c [43:43]
+        lib/xmlparse.c [44:44]
         lib/xmlrole.c [19:19]
         lib/xmlrole.h [14:14]
         lib/xmltok.c [27:27]

+ 1 - 0
contrib/libs/expat/.yandex_meta/licenses.list.txt

@@ -67,6 +67,7 @@
    Copyright (c) 2023      Owain Davies <owaind@bath.edu>
    Copyright (c) 2023-2024 Sony Corporation / Snild Dolkow <snild@sony.com>
    Copyright (c) 2024      Berkay Eren Ürün <berkay.ueruen@siemens.com>
+   Copyright (c) 2024      Hanno Böck <hanno@gentoo.org>
    Licensed under the MIT license:
 
 

+ 2 - 2
contrib/libs/expat/.yandex_meta/override.nix

@@ -1,12 +1,12 @@
 pkgs: attrs: with pkgs; with attrs; rec {
-  version = "2.6.3";
+  version = "2.6.4";
   versionTag = "R_${lib.replaceStrings ["."] ["_"] version}";
 
   src = fetchFromGitHub {
     owner = "libexpat";
     repo = "libexpat";
     rev = "${versionTag}";
-    hash = "sha256-xxjUNbkcJkCMzlMt5yNnnUl0pJ/pP3Z9F5qnlYQXLOQ=";
+    hash = "sha256-ek8/3c8bKG+z7fIM+QCNsH7eoVGAt7z3bXBHZ3QjlS8=";
   };
 
   nativeBuildInputs = [ autoreconfHook ];

+ 31 - 0
contrib/libs/expat/Changes

@@ -30,6 +30,37 @@
 !! THANK YOU!                        Sebastian Pipping -- Berlin, 2024-03-09 !!
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
+Release 2.6.4 Wed November 6 2024
+        Security fixes:
+            #915  CVE-2024-50602 -- Fix crash within function XML_ResumeParser
+                    from a NULL pointer dereference by disallowing function
+                    XML_StopParser to (stop or) suspend an unstarted parser.
+                    A new error code XML_ERROR_NOT_STARTED was introduced to
+                    properly communicate this situation.  // CWE-476 CWE-754
+
+        Other changes:
+            #903  CMake: Add alias target "expat::expat"
+            #905  docs: Document use via CMake >=3.18 with FetchContent
+                    and SOURCE_SUBDIR and its consequences
+            #902  tests: Reduce use of global parser instance
+            #904  tests: Resolve duplicate handler
+       #317 #918  tests: Improve tests on doctype closing (ex CVE-2019-15903)
+            #914  Fix signedness of format strings
+       #919 #920  Version info bumped from 10:3:9 (libexpat*.so.1.9.3)
+                    to 11:0:10 (libexpat*.so.1.10.0); see https://verbump.de/
+                    for what these numbers do
+
+        Infrastructure:
+            #907  CI: Upgrade Clang from 18 to 19
+            #913  CI: Drop macos-12 and add macos-15
+            #910  CI: Adapt to breaking changes in GitHub Actions
+            #898  Add missing entries to .gitignore
+
+        Special thanks to:
+            Hanno Böck
+            José Eduardo Gutiérrez Conejo
+            José Ricardo Cardona Quesada
+
 Release 2.6.3 Wed September 4 2024
         Security fixes:
        #887 #890  CVE-2024-45490 -- Calling function XML_ParseBuffer with

+ 43 - 4
contrib/libs/expat/README.md

@@ -11,7 +11,7 @@
 > at the top of the `Changes` file.
 
 
-# Expat, Release 2.6.3
+# Expat, Release 2.6.4
 
 This is Expat, a C99 library for parsing
 [XML 1.0 Fourth Edition](https://www.w3.org/TR/2006/REC-xml-20060816/), started by
@@ -43,9 +43,9 @@ This license is the same as the MIT/X Consortium license.
 
 ## Using libexpat in your CMake-Based Project
 
-There are two ways of using libexpat with CMake:
+There are three documented ways of using libexpat with CMake:
 
-### a) Module Mode
+### a) `find_package` with Module Mode
 
 This approach leverages CMake's own [module `FindEXPAT`](https://cmake.org/cmake/help/latest/module/FindEXPAT.html).
 
@@ -70,7 +70,7 @@ target_include_directories(hello PRIVATE ${EXPAT_INCLUDE_DIRS})
 target_link_libraries(hello PUBLIC ${EXPAT_LIBRARIES})
 ```
 
-### b) Config Mode
+### b) `find_package` with Config Mode
 
 This approach requires files from…
 
@@ -98,6 +98,45 @@ add_executable(hello
 target_link_libraries(hello PUBLIC expat::expat)
 ```
 
+### c) The `FetchContent` module
+
+This approach — as demonstrated below — requires CMake >=3.18 for both the
+[`FetchContent` module](https://cmake.org/cmake/help/latest/module/FetchContent.html)
+and its support for the `SOURCE_SUBDIR` option to be available.
+
+Please note that:
+- Use of the `FetchContent` module with *non-release* SHA1s or `master`
+  of libexpat is neither advised nor considered officially supported.
+- Pinning to a specific commit is great for robust CI.
+- Pinning to a specific commit needs updating every time there is a new
+  release of libexpat — either manually or through automation —,
+  to not miss out on libexpat security updates.
+
+For an example that pulls in libexpat via Git:
+
+```cmake
+cmake_minimum_required(VERSION 3.18)
+
+include(FetchContent)
+
+project(hello VERSION 1.0.0)
+
+FetchContent_Declare(
+    expat
+    GIT_REPOSITORY https://github.com/libexpat/libexpat/
+    GIT_TAG        000000000_GIT_COMMIT_SHA1_HERE_000000000  # i.e. Git tag R_0_Y_Z
+    SOURCE_SUBDIR  expat/
+)
+
+FetchContent_MakeAvailable(expat)
+
+add_executable(hello
+    hello.c
+)
+
+target_link_libraries(hello PUBLIC expat)
+```
+
 
 ## Building from a Git Clone
 

+ 4 - 2
contrib/libs/expat/expat.h

@@ -130,7 +130,9 @@ enum XML_Error {
   /* Added in 2.3.0. */
   XML_ERROR_NO_BUFFER,
   /* Added in 2.4.0. */
-  XML_ERROR_AMPLIFICATION_LIMIT_BREACH
+  XML_ERROR_AMPLIFICATION_LIMIT_BREACH,
+  /* Added in 2.6.4. */
+  XML_ERROR_NOT_STARTED,
 };
 
 enum XML_Content_Type {
@@ -1066,7 +1068,7 @@ XML_SetReparseDeferralEnabled(XML_Parser parser, XML_Bool enabled);
 */
 #define XML_MAJOR_VERSION 2
 #define XML_MINOR_VERSION 6
-#define XML_MICRO_VERSION 3
+#define XML_MICRO_VERSION 4
 
 #ifdef __cplusplus
 }

Some files were not shown because too many files changed in this diff