ClickHouse v21.12 Release Notes

Release Date: 2021-12-15 // over 2 years ago
  • Backward Incompatible Change

    • A fix for a feature that previously had unwanted behaviour. Do not allow direct select for Kafka/RabbitMQ/FileLog. Can be enabled by setting stream_like_engine_allow_direct_select. Direct select will be not allowed even if enabled by setting, in case there is an attached materialized view. For Kafka and RabbitMQ direct selectm if allowed, will not commit massages by default. To enable commits with direct select, user must use storage level setting kafka{rabbitmq}_commit_on_select=1 (default 0). #31053 (Kseniia Sumarokova).
    • A slight change in behaviour of a new function. Return unquoted string in JSON_VALUE. Closes #27965. #31008 (Kseniia Sumarokova).
    • Setting rename. Add custom null representation support for TSV/CSV input formats. Fix deserialing Nullable(String) in TSV/CSV/JSONCompactStringsEachRow/JSONStringsEachRow input formats. Rename output_format_csv_null_representation and output_format_tsv_null_representation to format_csv_null_representation and format_tsv_null_representation accordingly. #30497 (Kruglov Pavel).
    • πŸ—„ Further deprecation of already unused code. This is relevant only for users of ClickHouse versions older than 20.6. A "leader election" mechanism is removed from ReplicatedMergeTree, because multiple leaders are supported since 20.6. If you are upgrading from an older version and some replica with an old version is a leader, then server will fail to start after upgrade. Stop replicas with old version to make new version start. After that it will not be possible to downgrade to version older than 20.6. #32140 (tavplubix).

    πŸ†• New Feature

    • Implemented more of the ZooKeeper Four Letter Words commands in clickhouse-keeper: https://zookeeper.apache.org/doc/r3.4.8/zookeeperAdmin.html#sc_zkCommands. #28981 (JackyWoo). Now clickhouse-keeper is feature complete.
    • πŸ‘Œ Support for Bool data type. #31072 (kevin wan).
    • πŸ‘Œ Support for PARTITION BY in File, URL, HDFS storages and with INSERT INTO table function. Closes #30273. #30690 (Kseniia Sumarokova).
    • βž• Added CONSTRAINT ... ASSUME ... (without checking during INSERT). Added query transformation to CNF (https://github.com/ClickHouse/ClickHouse/issues/11749) for more convenient optimization. Added simple query rewriting using constraints (only simple matching now, will be improved to support <,=,>... later). Added ability to replace heavy columns with light columns if it's possible. #18787 (Nikita Vasilev).
    • Basic access authentication for http/url functions. #31648 (michael1589).
    • πŸ‘Œ Support INTERVAL type in STEP clause for WITH FILL modifier. #30927 (Anton Popov).
    • βž• Add support for parallel reading from multiple files and support globs in FROM INFILE clause. #30135 (Filatenkov Artur).
    • βž• Add support for Identifier table and database query parameters. Closes #27226. #28668 (Nikolay Degterinsky).
    • TLDR: Major improvements of completeness and consistency of text formats. Refactor formats TSV, TSVRaw, CSV and JSONCompactEachRow, JSONCompactStringsEachRow, remove code duplication, add base interface for formats with -WithNames and -WithNamesAndTypes suffixes. Add formats CSVWithNamesAndTypes, TSVRawWithNames, TSVRawWithNamesAndTypes, JSONCompactEachRowWIthNames, JSONCompactStringsEachRowWIthNames, RowBinaryWithNames. Support parallel parsing for formats TSVWithNamesAndTypes, TSVRaw(WithNames/WIthNamesAndTypes), CSVWithNamesAndTypes, JSONCompactEachRow(WithNames/WIthNamesAndTypes), JSONCompactStringsEachRow(WithNames/WIthNamesAndTypes). Support columns mapping and types checking for RowBinaryWithNamesAndTypes format. Add setting input_format_with_types_use_header which specify if we should check that types written in WIthNamesAndTypes format matches with table structure. Add setting input_format_csv_empty_as_default and use it in CSV format instead of input_format_defaults_for_omitted_fields (because this setting should not control csv_empty_as_default). Fix usage of setting input_format_defaults_for_omitted_fields (it was used only as csv_empty_as_default, but it should control calculation of default expressions for omitted fields). Fix Nullable input/output in TSVRaw format, make this format fully compatible with inserting into TSV. Fix inserting NULLs in LowCardinality(Nullable) when input_format_null_as_default is enabled (previously default values was inserted instead of actual NULLs). Fix strings deserialization in JSONStringsEachRow/JSONCompactStringsEachRow formats (strings were parsed just until first '\n' or '\t'). Add ability to use Raw escaping rule in Template input format. Add diagnostic info for JSONCompactEachRow(WithNames/WIthNamesAndTypes) input format. Fix bug with parallel parsing of -WithNames formats in case when setting min_chunk_bytes_for_parallel_parsing is less than bytes in a single row. #30178 (Kruglov Pavel). Allow to print/parse names and types of colums in CustomSeparated input/output format. Add formats CustomSeparatedWithNames/WithNamesAndTypes similar to TSVWithNames/WithNamesAndTypes. #31434 (Kruglov Pavel).
    • πŸ‘ Aliyun OSS Storage support. #31286 (cfcz48).
    • πŸ”¦ Exposes all settings of the global thread pool in the configuration file. #31285 (TomΓ‘Ε‘ Hromada).
    • 🏁 Introduced window functions exponentialTimeDecayedSum, exponentialTimeDecayedMax, exponentialTimeDecayedCount and exponentialTimeDecayedAvg which are more effective than exponentialMovingAverage for bigger windows. Also more use-cases were covered. #29799 (Vladimir Chebotarev).
    • βž• Add option to compress logs before writing them to a file using LZ4. Closes #23860. #29219 (Nikolay Degterinsky).
    • πŸ‘Œ Support JOIN ON 1 = 1 that have CROSS JOIN semantic. This closes #25578. #25894 (Vladimir C).
    • βž• Add Map combinator for Map type. - Rename old sum-, min-, max- Map for mapped arrays to sum-, min-, max- MappedArrays. #24539 (Ildus Kurbangaliev).
    • πŸ‘‰ Make reading from HTTP retriable. Closes #29696. #29894 (Kseniia Sumarokova).

    Experimental Feature

    • WINDOW VIEW to enable stream processing in ClickHouse. #8331 (vxider).
    • ⬇️ Drop support for using Ordinary databases with MaterializedMySQL. #31292 (Stig Bakken).
    • βͺ Implement the commands BACKUP and RESTORE for the Log family. This feature is under development. #30688 (Vitaly Baranov).

    🐎 Performance Improvement

    • Reduce memory usage when reading with s3 / url / hdfs formats Parquet, ORC, Arrow (controlled by setting input_format_allow_seeks, enabled by default). Also add setting remote_read_min_bytes_for_seek to control seeks. Closes #10461. Closes #16857. #30936 (Kseniia Sumarokova).
    • βž• Add optimizations for constant conditions in JOIN ON, ref #26928. #27021 (Vladimir C).
    • πŸ‘Œ Support parallel formatting for all text formats, except JSONEachRowWithProgress and PrettyCompactMonoBlock. #31489 (Kruglov Pavel).
    • Speed up count over nullable columns. #31806 (RaΓΊl MarΓ­n).
    • Speed up avg and sumCount aggregate functions. #31694 (RaΓΊl MarΓ­n).
    • πŸ‘Œ Improve performance of JSON and XML output formats. #31673 (alexey-milovidov).
    • πŸ‘Œ Improve performance of syncing data to block device. This closes #31181. #31229 (zhanglistar).
    • πŸ›  Fixing query performance issue in LiveView tables. Fixes #30831. #31006 (vzakaznikov).
    • πŸ“œ Speed up query parsing. #31949 (RaΓΊl MarΓ­n).
    • πŸ‘ Allow to split GraphiteMergeTree rollup rules for plain/tagged metrics (optional rule_type field). #25122 (Michail Safronov).
    • βœ‚ Remove excessive DESC TABLE requests for remote() (in case of remote('127.1', system.one) (i.e. identifier as the db.table instead of string) there was excessive DESC TABLE request). #32019 (Azat Khuzhin).
    • Optimize function tupleElement to reading of subcolumn with enabled setting optimize_functions_to_subcolumns. #31261 (Anton Popov).
    • Optimize function mapContains to reading of subcolumn key with enabled settings optimize_functions_to_subcolumns. #31218 (Anton Popov).
    • Add settings merge_tree_min_rows_for_concurrent_read_for_remote_filesystem and merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem. #30970 (Kseniia Sumarokova).
    • Skipping mutations of different partitions in StorageMergeTree. #21326 (Vladimir Chebotarev).

    πŸ‘Œ Improvement

    • Do not allow to drop a table or dictionary if some tables or dictionaries depend on it. #30977 (tavplubix).
    • πŸ‘ Allow versioning of aggregate function states. Now we can introduce backward compatible changes in serialization format of aggregate function states. Closes #12552. #24820 (Kseniia Sumarokova).
    • πŸ‘Œ Support PostgreSQL style ALTER MODIFY COLUMN syntax. #32003 (SuperDJY).
    • βž• Added update_field support for RangeHashedDictionary, ComplexKeyRangeHashedDictionary. #32185 (Maksim Kita).
    • The murmurHash3_128 and sipHash128 functions now accept an arbitrary number of arguments. This closes #28774. #28965 (小路).
    • πŸ‘Œ Support default expression for HDFS storage and optimize fetching when source is column oriented. #32256 (ζŽζ‰¬).
    • πŸ‘Œ Improve the operation name of an opentelemetry span. #32234 (Frank Chen).
    • πŸ‘‰ Use Content-Type: application/x-ndjson (http://ndjson.org/) for output format JSONEachRow. #32223 (Dmitriy Dorofeev).
    • πŸ‘Œ Improve skipping unknown fields with quoted escaping rule in Template/CustomSeparated formats. Previously you could skip only quoted strings, now you can skip values with any type. #32204 (Kruglov Pavel).
    • πŸ”§ Now clickhouse-keeper refuses to start or apply configuration changes when they contain duplicated IDs or endpoints. Fixes #31339. #32121 (alesapin).
    • Set Content-Type in HTTP packets issued from URL engine. #32113 (Frank Chen).
    • Return Content-Type as 'application/json' for JSONEachRow format if output_format_json_array_of_rows is enabled. #32112 (Frank Chen).
    • πŸ‘ Allow to parse + before Float32/Float64 values. #32079 (Kruglov Pavel).
    • πŸ‘ Allow a user configured hdfs_replication parameter for DiskHDFS and StorageHDFS. Closes #32039. #32049 (leosunli).
    • βž• Added ClickHouse exception and exception_code fields to opentelemetry span log. #32040 (Frank Chen).
    • πŸ‘Œ Improve opentelemetry span log duration - it was is zero at the query level if there is a query exception. #32038 (Frank Chen).
    • πŸ›  Fix the issue that LowCardinality of Int256 cannot be created. #31832 (alexey-milovidov).
    • 🌲 Recreate system.*_log tables in case of different engine/partition_by. #31824 (Azat Khuzhin).
    • MaterializedMySQL: Fix issue with table named 'table'. #31781 (HΓ₯vard KvΓ₯len).
    • πŸ‘ ClickHouse dictionary source: support predefined connections. Closes #31705. #31749 (Kseniia Sumarokova).
    • πŸ‘ Allow to use predefined connections configuration for Kafka and RabbitMQ engines (the same way as for other integration table engines). #31691 (Kseniia Sumarokova).
    • Always re-render prompt while navigating history in clickhouse-client. This will improve usability of manipulating very long queries that don't fit on screen. #31675 (alexey-milovidov) (author: Amos Bird).
    • βž• Add key bindings for navigating through history (instead of lines/history). #31641 (Azat Khuzhin).
    • Improve the max_execution_time checks. Fixed some cases when timeout checks do not happen and query could run too long. #31636 (RaΓΊl MarΓ­n).
    • πŸ‘ Better exception message when users.xml cannot be loaded due to bad password hash. This closes #24126. #31557 (Vitaly Baranov).
    • πŸ‘‰ Use shard and replica name from Replicated database arguments when expanding macros in ReplicatedMergeTree arguments if these macros are not defined in config. Closes #31471. #31488 (tavplubix).
    • Better analysis for min/max/count projection. Now, with enabled allow_experimental_projection_optimization, virtual min/max/count projection can be used together with columns from partition key. #31474 (Amos Bird).
    • βž• Add --pager support for clickhouse-local. #31457 (Azat Khuzhin).
    • πŸ›  Fix waiting of the editor during interactive query edition (waitpid() returns -1 on SIGWINCH and EDITOR and clickhouse-local/clickhouse-client works concurrently). #31456 (Azat Khuzhin).
    • πŸ‘» Throw an exception if there is some garbage after field in JSONCompactStrings(EachRow) format. #31455 (Kruglov Pavel).
    • Default value of http_send_timeout and http_receive_timeout settings changed from 1800 (30 minutes) to 180 (3 minutes). #31450 (tavplubix).
    • MaterializedMySQL now handles CREATE TABLE ... LIKE ... DDL queries. #31410 (Stig Bakken).
    • Return artificial create query when executing show create table on system's tables. #31391 (SuperDJY).
    • Previously progress was shown only for numbers table function. Now for numbers_mt it is also shown. #31318 (Kseniia Sumarokova).
    • πŸŽ‰ Initial user's roles are used now to find row policies, see #31080. #31262 (Vitaly Baranov).
    • ⚠ If some obsolete setting is changed - show warning in system.warnings. #31252 (tavplubix).
    • Improved backoff for background cleanup tasks in MergeTree. Settings merge_tree_clear_old_temporary_directories_interval_seconds and merge_tree_clear_old_parts_interval_seconds moved from users settings to merge tree settings. #31180 (tavplubix).
    • Now every replica will send to client only incremental information about profile events counters. #31155 (Dmitry Novik). This makes --hardware_utilization option in clickhouse-client usable.
    • 0️⃣ Enable multiline editing in clickhouse-client by default. This addresses #31121 . #31123 (Amos Bird).
    • πŸ“‡ Function name normalization for ALTER queries. This helps avoid metadata mismatch between creating table with indices/projections and adding indices/projections via alter commands. This is a follow-up PR of https://github.com/ClickHouse/ClickHouse/pull/20174. Mark as improvements as there are no bug reports and the senario is somehow rare. #31095 (Amos Bird).
    • πŸ‘Œ Support IF EXISTS modifier for RENAME DATABASE/TABLE/DICTIONARY query. If this directive is used, one will not get an error if the DATABASE/TABLE/DICTIONARY to be renamed doesn't exist. #31081 (victorgao).
    • πŸ”€ Cancel vertical merges when partition is dropped. This is a follow-up of https://github.com/ClickHouse/ClickHouse/pull/25684 and https://github.com/ClickHouse/ClickHouse/pull/30996. #31057 (Amos Bird).
    • The local session inside a Clickhouse dictionary source won't send its events to the session log anymore. This fixes a possible deadlock (tsan alert) on shutdown. Also this PR fixes flaky test_dictionaries_dependency_xml/. #31013 (Vitaly Baranov).
    • Less locking in ALTER command. #31010 (Amos Bird).
    • πŸ›  Fix --verbose option in clickhouse-local interactive mode and allow logging into file. #30881 (Kseniia Sumarokova).
    • βž• Added \l, \d, \c commands in clickhouse-client like in MySQL and PostgreSQL. #30876 (Pavel Medvedev).
    • For clickhouse-local or clickhouse-client: if there is --interactive option with --query or --queries-file, then first execute them like in non-interactive and then start interactive mode. #30851 (Kseniia Sumarokova).
    • πŸ›  Fix possible "The local set of parts of X doesn't look like the set of parts in ZooKeeper" error (if DROP fails during removing znodes from zookeeper). #30826 (Azat Khuzhin).
    • Avro format works against Kafka. Setting output_format_avro_rows_in_file added. #30351 (Ilya Golshtein).
    • πŸ‘ Allow to specify one or any number of PostgreSQL schemas for one MaterializedPostgreSQL database. Closes #28901. Closes #29324. #28933 (Kseniia Sumarokova).
    • 0️⃣ Replaced default ports for clickhouse-keeper internal communication from 44444 to 9234. Fixes #30879. #31799 (alesapin).
    • Implement function transform with Decimal arguments. #31839 (ζŽεΈ…).
    • Fix abort in debug server and DB::Exception: std::out_of_range: basic_string error in release server in case of bad hdfs url by adding additional check of hdfs url structure. #31042 (Kruglov Pavel).
    • πŸ›  Fix possible assert in hdfs table function/engine, add test. #31036 (Kruglov Pavel).

    πŸ› Bug Fixes

    • πŸ›  Fix group by / order by / limit by aliases with positional arguments enabled. Closes #31173. #31741 (Kseniia Sumarokova).
    • πŸ›  Fix usage of Buffer table engine with type Map. Fixes #30546. #31742 (Anton Popov).
    • Fix reading from MergeTree tables with enabled use_uncompressed_cache. #31826 (Anton Popov).
    • Fixed the behavior when mutations that have nothing to do are stuck (with enabled setting empty_result_for_aggregation_by_empty_set). #32358 (Nikita Mikhaylov).
    • πŸ›  Fix skipping columns while writing protobuf. This PR fixes #31160, see the comment #31160#issuecomment-980595318. #31988 (Vitaly Baranov).
    • πŸ›  Fix bug when remove unneeded columns in subquery. If there is an aggregation function in query without group by, do not remove if it is unneeded. #32289 (dongyifeng).
    • πŸ›  Quota limit was not reached, but the limit was exceeded. This PR fixes #31174. #31337 (sunny).
    • πŸ›  Fix SHOW GRANTS when partial revokes are used. This PR fixes #31138. #31249 (Vitaly Baranov).
    • Memory amount was incorrectly estimated when ClickHouse is run in containers with cgroup limits. #31157 (Pavel Medvedev).
    • πŸ›  Fix ALTER ... MATERIALIZE COLUMN ... queries in case when data type of default expression is not equal to the data type of column. #32348 (Anton Popov).
    • πŸ›  Fixed crash with SIGFPE in aggregate function avgWeighted with Decimal argument. Fixes #32053. #32303 (tavplubix).
    • πŸ›  Server might fail to start with Cannot attach 1 tables due to cyclic dependencies error if Dictionary table looks at XML-dictionary with the same name, it's fixed. Fixes #31315. #32288 (tavplubix).
    • πŸ›  Fix parsing error while NaN deserializing for Nullable(Float) for Quoted escaping rule. #32190 (Kruglov Pavel).
    • ⬆️ XML dictionaries: identifiers, used in table create query, can be qualified to default_database during upgrade to newer version. Closes #31963. #32187 (Maksim Kita).
    • Number of active replicas might be determined incorrectly when inserting with quorum if setting replicated_can_become_leader is disabled on some replicas. It's fixed. #32157 (tavplubix).
    • Dictionaries: fix cases when {condition} does not work for custom database queries. #32117 (Maksim Kita).
    • Fix CAST from Nullable with cast_keep_nullable (PARAMETER_OUT_OF_BOUND error before for i.e. toUInt32OrDefault(toNullable(toUInt32(1)))). #32080 (Azat Khuzhin).
    • πŸ›  Fix CREATE TABLE of Join Storage in some obscure cases. Close #31680. #32066 (SuperDJY).
    • πŸ›  Fixed Directory ... already exists and is not empty error when detaching part. #32063 (tavplubix).
    • MaterializedMySQL (experimental feature): Fix misinterpretation of DECIMAL data from MySQL. #31990 (HΓ₯vard KvΓ₯len).
    • FileLog (experimental feature) engine unnesessary created meta data directory when create table failed. Fix #31962. #31967 (flynn).
    • πŸ›  Some GET_PART entry might hang in replication queue if part is lost on all replicas and there are no other parts in the same partition. It's fixed in cases when partition key contains only columns of integer types or Date[Time]. Fixes #31485. #31887 (tavplubix).
    • πŸ›  Fix functions empty and notEmpty with arguments of UUID type. Fixes #31819. #31883 (Anton Popov).
    • Change configuration path from keeper_server.session_timeout_ms to keeper_server.coordination_settings.session_timeout_ms when constructing a KeeperTCPHandler. Same with operation_timeout. #31859 (JackyWoo).
    • πŸ›  Fix invalid cast of Nullable type when nullable primary key is used. (Nullable primary key is a discouraged feature - please do not use). This fixes #31075. #31823 (Amos Bird).
    • πŸ›  Fix crash in recursive UDF in SQL. Closes #30856. #31820 (Maksim Kita).
    • πŸ›  Fix crash when function dictGet with type is used for dictionary attribute when type is Nullable. Fixes #30980. #31800 (Maksim Kita).
    • πŸ›  Fix crash with empty result of ODBC query (with some ODBC drivers). Closes #31465. #31766 (Kseniia Sumarokova).
    • Fix disabling query profiler (In case of query_profiler_real_time_period_ns>0/query_profiler_cpu_time_period_ns>0 query profiler can stayed enabled even after query finished). #31740 (Azat Khuzhin).
    • πŸ›  Fixed rare segfault on concurrent ATTACH PARTITION queries. #31738 (tavplubix).
    • πŸ›  Fix race in JSONEachRowWithProgress output format when data and lines with progress are mixed in output. #31736 (Kruglov Pavel).
    • πŸ›  Fixed there are no such cluster here error on execution of ON CLUSTER query if specified cluster name is name of Replicated database. #31723 (tavplubix).
    • πŸ›  Fix exception on some of the applications of decrypt function on Nullable columns. This closes #31662. This closes #31426. #31707 (alexey-milovidov).
    • πŸ›  Fixed function ngrams when string contains UTF-8 characters. #31706 (yandd).
    • Settings input_format_allow_errors_num and input_format_allow_errors_ratio did not work for parsing of domain types, such as IPv4, it's fixed. Fixes #31686. #31697 (tavplubix).
    • πŸ›  Fixed null pointer exception in MATERIALIZE COLUMN. #31679 (Nikolai Kochetov).
    • πŸ›  RENAME TABLE query worked incorrectly on attempt to rename an DDL dictionary in Ordinary database, it's fixed. #31638 (tavplubix).
    • πŸ‘€ Implement sparkbar aggregate function as it was intended, see: #26175#issuecomment-960353867, comment. #31624 (小路).
    • πŸ›  Fix invalid generated JSON when only column names contain invalid UTF-8 sequences. #31534 (Kevin Michel).
    • πŸ”€ Disable partial_merge_join_left_table_buffer_bytes before bug in this optimization is fixed. See #31009). Remove redundant option partial_merge_join_optimizations. #31528 (Vladimir C).
    • πŸ›  Fix progress for short INSERT SELECT queries. #31510 (Azat Khuzhin).
    • πŸ›  Fix wrong behavior with group by and positional arguments. Closes #31280#issuecomment-968696186. #31420 (Kseniia Sumarokova).
    • Resolve nullptr in STS credentials provider for S3. #31409 (Vladimir Chebotarev).
    • βœ‚ Remove notLike function from index analysis, because it was wrong. #31169 (sundyli).
    • πŸ›  Fix bug in Keeper which can lead to inability to start when some coordination logs was lost and we have more fresh snapshot than our latest log. #31150 (alesapin).
    • Rewrite right distributed table in local join. solves #25809. #31105 (abel-cheng).
    • πŸ›  Fix Merge table with aliases and where (it did not work before at all). Closes #28802. #31044 (Kseniia Sumarokova).
    • Fix JSON_VALUE/JSON_QUERY with quoted identifiers. This allows to have spaces in json path. Closes #30971. #31003 (Kseniia Sumarokova).
    • Using formatRow function with not row-oriented formats led to segfault. Don't allow to use this function with such formats (because it doesn't make sense). #31001 (Kruglov Pavel).
    • πŸ›  Fix bug which broke select queries if they happened after dropping materialized view. Found in #30691. #30997 (Kseniia Sumarokova).
    • Skip max_partition_size_to_drop check in case of ATTACH PARTITION ... FROM and MOVE PARTITION ... #30995 (Amr Alaa).
    • πŸ›  Fix some corner cases with INTERSECT and EXCEPT operators. Closes #30803. #30965 (Kseniia Sumarokova).

    πŸ— Build/Testing/Packaging Improvement

    • πŸ›  Fix incorrect filtering result on non-x86 builds. This closes #31417. This closes #31524. #31574 (alexey-milovidov).
    • πŸ— Make ClickHouse build fully reproducible (byte identical on different machines). This closes #22113. #31899 (alexey-milovidov). Remove filesystem path to the build directory from binaries to enable reproducible builds. This needed for #22113. #31838 (alexey-milovidov).
    • πŸ‘· Use our own CMakeLists for zlib-ng, cassandra, mariadb-connector-c and xz, re2, sentry, gsasl, arrow, protobuf. This is needed for #20151. Part of #9226. A small step towards removal of annoying trash from the build system. #30599 (alexey-milovidov).
    • πŸ— Hermetic builds: use fixed version of libc and make sure that no source or binary files from the host OS are using during build. This closes #27133. This closes #21435. This closes #30462. #30011 (alexey-milovidov).
    • βž• Adding function getFuzzerData() to easily fuzz particular functions. This closes #23227. #27526 (Alexey Boykov).
    • 🐳 More correct setting up capabilities inside Docker. #31802 (Constantine Peresypkin).
    • Enable clang -fstrict-vtable-pointers, -fwhole-program-vtables compile options. #20151 (Maksim Kita).
    • Avoid downloading toolchain tarballs for cross-compiling for FreeBSD. #31672 (alexey-milovidov).
    • πŸŽ‰ Initial support for risc-v. See development/build-cross-riscv for quirks and build command that was tested. #31309 (Vladimir Smirnov).
    • πŸ‘Œ Support compile in arm machine with parameter "-DENABLE_TESTS=OFF". #31007 (zhanghuajie).