Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
305346e
update C++20 section of <yvals_core.h> for WG21-P3136R1 Retiring Nieb…
alexprabhat99 Dec 18, 2024
9082000
Add support for running only edg tests (#5194)
jgoshi Dec 18, 2024
ca2b2c6
Revert "Maybe Clang _does_ work with `ALTERNATENAME` (#5098)" (#5224)
StephanTLavavej Jan 7, 2025
76c41da
Implement LWG-3900 The `allocator_arg_t` overloads of `generator::pro…
frederick-vs-ja Jan 7, 2025
13a6479
Update N4993 to N5001 in README.md (#5196)
oceanfabreeze Jan 7, 2025
4c78eee
[test] Don't repeatedly warn about a compiler not being found (#5199)
CaseyCarter Jan 7, 2025
0408152
Update _MSVC_STL_UPDATE to January 2025 (#5217)
alexprabhat99 Jan 7, 2025
af0bd00
`<regex>`: Fix character range bounds in case-insensitive regexes (#5…
muellerj3 Jan 14, 2025
bbd15ba
`<regex>`: Limit backreference parsing to single digit for basic regu…
muellerj3 Jan 14, 2025
3b6d29c
`<regex>`: Fix integer overflow in `_Buf` and implement geometric buf…
muellerj3 Jan 14, 2025
247c51f
`<regex>`: Correct characters not matched by special character dot (#…
muellerj3 Jan 14, 2025
615ce66
`<regex>`: Simplify `regex_traits<_Elem>::translate(_Elem)` (#5209)
muellerj3 Jan 14, 2025
30dd267
`<regex>`: Fix pointer-size constructor of `basic_regex` and remove `…
frederick-vs-ja Jan 14, 2025
63fe8a2
`<regex>`: Make negated character classes not match characters not in…
muellerj3 Jan 14, 2025
91a8d4f
Categorize some failing libcxx tests (#5231)
muellerj3 Jan 14, 2025
3c31602
`<format>`: Detect some invalid contiguous ranges in `range_formatter…
frederick-vs-ja Jan 14, 2025
3a8f6c5
`<xlocale>`: Deprecate non-Standard `locale::empty()` (#5197)
frederick-vs-ja Jan 14, 2025
6d5d462
Implement LWG-4144 Disallow `unique_ptr<T&, D>` (#5201)
frederick-vs-ja Jan 14, 2025
a9861c9
Make STL components not dependent on `is_trivial(_v)` (#5202)
frederick-vs-ja Jan 14, 2025
313e1f4
`<xhash>`: Get rid of tricks for transparent overloads of hash contai…
frederick-vs-ja Jan 14, 2025
4119eb8
Implement P3323R1 `Forbid atomic<cv T>`, Specify `atomic_ref<cv T>` (…
frederick-vs-ja Jan 14, 2025
ba284eb
Implement LWG-4119 `generator::promise_type::yield_value(ranges::elem…
frederick-vs-ja Jan 14, 2025
22b5573
Implement LWG-4027 `possibly-const-range` should prefer returning `co…
frederick-vs-ja Jan 14, 2025
9ec1309
`<ranges>`: Fix dispatching for `views::counted` (#5223)
frederick-vs-ja Jan 14, 2025
8578314
Implement LWG-3886 Monad mo' problems (in `optional` and `expected`) …
frederick-vs-ja Jan 14, 2025
8124540
Update llvm-project (#5235)
StephanTLavavej Jan 15, 2025
0190042
Toolset update: VS 2022 17.13 Preview 3, Clang 19.1.1 (#5247)
StephanTLavavej Jan 24, 2025
27f936a
`<thread>`: Avoid overflow in `_To_absolute_time()` (#5237)
StephanTLavavej Jan 24, 2025
2366c08
Clarify ASan test running instructions (#5240)
davidmrdavid Jan 24, 2025
9b38fb9
Expand workaround for EDG bug in `P0323R12_expected` (#5249)
StephanTLavavej Jan 24, 2025
b68983d
Merge branch 'main' into merge-flat_map
StephanTLavavej Jan 24, 2025
9401dbc
clang-format, no manual changes: Improve CTAD.
StephanTLavavej Jan 24, 2025
85bd0d9
Update libcxx/expected_results.txt for flat_map.
StephanTLavavej Jan 24, 2025
9297219
Mark x64-specific failures as SKIPPED.
StephanTLavavej Jan 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 38 additions & 8 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# https://releases.llvm.org/18.1.8/tools/clang/docs/ClangFormatStyleOptions.html
# https://releases.llvm.org/19.1.0/tools/clang/docs/ClangFormatStyleOptions.html

# To update this .clang-format file for a new clang-format version:
# 1. Update the documentation link above.
# 2. Copy the output of `clang-format -dump-config` into a temporary file.
# 2. Copy the output of `clang-format -dump-config --style=LLVM` into a temporary file.
# a. Comment out all of its lines.
# b. Uncomment `BasedOnStyle: LLVM`.
# 3. Compare that temporary file to this .clang-format file.
# 4. Adjust this .clang-format file to record new and updated options.
# a. Read the new documentation to understand such changes.
Expand Down Expand Up @@ -56,7 +55,29 @@ AlignConsecutiveMacros: Consecutive
# Enabled: false
# AcrossEmptyLines: false
# AcrossComments: false
# AlignCaseArrows: false
# AlignCaseColons: false
# AlignConsecutiveTableGenBreakingDAGArgColons:
# Enabled: false
# AcrossEmptyLines: false
# AcrossComments: false
# AlignCompound: false
# AlignFunctionPointers: false
# PadOperators: false
# AlignConsecutiveTableGenCondOperatorColons:
# Enabled: false
# AcrossEmptyLines: false
# AcrossComments: false
# AlignCompound: false
# AlignFunctionPointers: false
# PadOperators: false
# AlignConsecutiveTableGenDefinitionColons:
# Enabled: false
# AcrossEmptyLines: false
# AcrossComments: false
# AlignCompound: false
# AlignFunctionPointers: false
# PadOperators: false
# AlignEscapedNewlines: Right
AlignEscapedNewlines: Left
# AlignOperands: Align
Expand All @@ -71,6 +92,7 @@ AlignTrailingComments:
# AllowBreakBeforeNoexceptSpecifier: Never
AllowBreakBeforeNoexceptSpecifier: OnlyWithParen
# AllowShortBlocksOnASingleLine: Never
# AllowShortCaseExpressionOnASingleLine: true
# AllowShortCaseLabelsOnASingleLine: false
# AllowShortCompoundRequirementOnASingleLine: true
# AllowShortEnumsOnASingleLine: true
Expand All @@ -80,10 +102,7 @@ AllowShortFunctionsOnASingleLine: Empty
# AllowShortLambdasOnASingleLine: All
# AllowShortLoopsOnASingleLine: false
# AlwaysBreakAfterDefinitionReturnType: None
# AlwaysBreakAfterReturnType: None
# AlwaysBreakBeforeMultilineStrings: false
# AlwaysBreakTemplateDeclarations: MultiLine
AlwaysBreakTemplateDeclarations: Yes
# AttributeMacros:
# - __capability
# BinPackArguments: true
Expand Down Expand Up @@ -112,6 +131,7 @@ AlwaysBreakTemplateDeclarations: Yes
# BreakAfterAttributes: Leave
BreakAfterAttributes: Never
# BreakAfterJavaFieldAnnotations: false
# BreakAfterReturnType: None
# BreakArrays: true
# BreakBeforeBinaryOperators: None
BreakBeforeBinaryOperators: NonAssignment
Expand All @@ -120,8 +140,11 @@ BreakBeforeBinaryOperators: NonAssignment
# BreakBeforeInlineASMColon: OnlyMultiline
# BreakBeforeTernaryOperators: true
# BreakConstructorInitializers: BeforeColon
# BreakFunctionDefinitionParameters: false
# BreakInheritanceList: BeforeColon
# BreakStringLiterals: true
# BreakTemplateDeclarations: MultiLine
BreakTemplateDeclarations: Yes
# ColumnLimit: 80
ColumnLimit: 120
# CommentPragmas: '^ IWYU pragma:'
Expand Down Expand Up @@ -202,14 +225,19 @@ InsertNewlineAtEOF: true
# HexMinDigits: 0
# JavaScriptQuotes: Leave
# JavaScriptWrapImports: true
# KeepEmptyLinesAtTheStartOfBlocks: true
# KeepEmptyLinesAtEOF: false
# KeepEmptyLines:
# AtEndOfFile: false
# AtStartOfBlock: true
# AtStartOfFile: true
KeepEmptyLines:
AtStartOfFile: false
# LambdaBodyIndentation: Signature
# LineEnding: DeriveLF
LineEnding: CRLF
# NOTE: MacroBlockBegin/MacroBlockEnd don't work with _CATCH_ALL.
# MacroBlockBegin: ''
# MacroBlockEnd: ''
# MainIncludeChar: Quote
# MaxEmptyLinesToKeep: 1
MaxEmptyLinesToKeep: 2
# NamespaceIndentation: None
Expand Down Expand Up @@ -286,6 +314,7 @@ SpaceBeforeParensOptions:
# Maximum: -1
# SpacesInParens: Never
# SpacesInParensOptions:
# ExceptDoubleParentheses: false
# InCStyleCasts: false
# InConditionalStatements: false
# InEmptyParentheses: false
Expand All @@ -310,6 +339,7 @@ StatementMacros:
- _FMT_P2286_END
- _EXTERN_C_UNLESS_PURE
- _END_EXTERN_C_UNLESS_PURE
# TableGenBreakInsideDAGArg: DontBreak
# TabWidth: 8
# UseTab: Never
# VerilogBreakBetweenInstancePorts: true
Expand Down
13 changes: 8 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ issue. The [bug tag][] and [enhancement tag][] are being populated.

# Goals

We're implementing the latest C++ Working Draft, currently [N4993][], which will eventually become the next C++
We're implementing the latest C++ Working Draft, currently [N5001][], which will eventually become the next C++
International Standard. The terms Working Draft (WD) and Working Paper (WP) are interchangeable; we often
informally refer to these drafts as "the Standard" while being aware of the difference. (There are other relevant
Standards; for example, supporting `/std:c++14` and `/std:c++17` involves understanding how the C++14 and C++17
Expand Down Expand Up @@ -141,7 +141,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem

# How To Build With The Visual Studio IDE

1. Install Visual Studio 2022 17.13 Preview 2 or later.
1. Install Visual Studio 2022 17.13 Preview 3 or later.
* Select "Windows 11 SDK (10.0.22621.0)" in the VS Installer.
* Select "MSVC v143 - VS 2022 C++ ARM64/ARM64EC build tools (Latest)" in the VS Installer
if you would like to build the ARM64/ARM64EC target.
Expand All @@ -160,7 +160,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem

# How To Build With A Native Tools Command Prompt

1. Install Visual Studio 2022 17.13 Preview 2 or later.
1. Install Visual Studio 2022 17.13 Preview 3 or later.
* Select "Windows 11 SDK (10.0.22621.0)" in the VS Installer.
* Select "MSVC v143 - VS 2022 C++ ARM64/ARM64EC build tools (Latest)" in the VS Installer
if you would like to build the ARM64/ARM64EC target.
Expand Down Expand Up @@ -412,7 +412,8 @@ set PATH=C:\STL\out\x64\out\bin\amd64;%PATH%
## Running Tests With Address Sanitizer (ASan)

You don't need any extra steps to run with test code and the code in STL headers instrumented with [ASan][].
The test matrices include both ASan and non-ASan configurations.
The test matrices include both ASan and non-ASan configurations if you don't pass `-Dtags=ASAN` or `-Dnotags=ASAN`
to exclude one or the other.

However, to instrument the separately-compiled code (the DLL, the satellites, the [Import Library][] - everything that's
in `/stl/src`), you need to build the STL with ASan. Change the build steps to add `-DSTL_ASAN_BUILD=ON`:
Expand All @@ -425,6 +426,8 @@ cmake --build --preset x64
ASan-instrumented STL binaries require that the executable be instrumented as well, so you'll have to skip the non-ASan
configurations by passing `-Dtags=ASAN` to `stl-lit.py`:

(This example assumes that your current directory is `C:\Dev\STL\out\x64`.)

```
python tests\utils\stl-lit\stl-lit.py ..\..\tests\std\tests\VSO_0000000_vector_algorithms -Dtags=ASAN -v
```
Expand Down Expand Up @@ -565,7 +568,7 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
[LWG issues]: https://cplusplus.github.io/LWG/lwg-toc.html
[LWG tag]: https://github.com/microsoft/STL/issues?q=is%3Aopen+is%3Aissue+label%3ALWG
[Microsoft Open Source Code of Conduct]: https://opensource.microsoft.com/codeofconduct/
[N4993]: https://wg21.link/N4993
[N5001]: https://wg21.link/N5001
[NOTICE.txt]: NOTICE.txt
[Ninja]: https://ninja-build.org
[STL-CI-badge]: https://dev.azure.com/vclibs/STL/_apis/build/status%2FSTL-CI?branchName=main "STL-CI"
Expand Down
2 changes: 1 addition & 1 deletion azure-devops/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

variables:
- name: poolName
value: 'StlBuild-2024-12-12T1002-Pool'
value: 'StlBuild-2025-01-22T1525-Pool'
readonly: true
- name: poolDemands
value: 'EnableSpotVM -equals false'
Expand Down
2 changes: 1 addition & 1 deletion azure-devops/provision-image.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ $PythonUrl = 'https://www.python.org/ftp/python/3.13.1/python-3.13.1-amd64.exe'
$PythonArgs = @('/quiet', 'InstallAllUsers=1', 'PrependPath=1', 'CompileAll=1', 'Include_doc=0')

$CudaUrl = 'https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_551.61_windows.exe'
$CudaArgs = @('-s')
$CudaArgs = @('-s', '-n', 'nvcc_12.4')

<#
.SYNOPSIS
Expand Down
2 changes: 1 addition & 1 deletion llvm-project
Submodule llvm-project updated 24235 files
4 changes: 2 additions & 2 deletions stl/inc/__msvc_heap_algorithms.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ _CONSTEXPR20 void _Push_heap_by_index(
_RanIt _First, _Iter_diff_t<_RanIt> _Hole, _Iter_diff_t<_RanIt> _Top, _Ty&& _Val, _Pr _Pred) {
// percolate _Hole to _Top or where _Val belongs
using _Diff = _Iter_diff_t<_RanIt>;
for (_Diff _Idx = (_Hole - 1) >> 1; // shift for codegen
_Top < _Hole && _DEBUG_LT_PRED(_Pred, *(_First + _Idx), _Val); _Idx = (_Hole - 1) >> 1) { // shift for codegen
for (_Diff _Idx = (_Hole - 1) >> 1; // shift for codegen
_Top < _Hole && _DEBUG_LT_PRED(_Pred, *(_First + _Idx), _Val); _Idx = (_Hole - 1) >> 1) { // shift for codegen
// move _Hole up to parent
*(_First + _Hole) = _STD move(*(_First + _Idx));
_Hole = _Idx;
Expand Down
3 changes: 2 additions & 1 deletion stl/inc/__msvc_int128.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
#else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv
#define _TEMPLATE_CLASS_INTEGRAL(type) template <class type, enable_if_t<is_integral_v<type>, int> = 0>
#define _ZERO_OR_NO_INIT \
{} // Trivial default initialization is not allowed in constexpr functions before C++20.
{ \
} // Trivial default initialization is not allowed in constexpr functions before C++20.
#endif // ^^^ !_HAS_CXX20 ^^^

#pragma pack(push, _CRT_PACKING)
Expand Down
7 changes: 4 additions & 3 deletions stl/inc/__msvc_string_view.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1344,9 +1344,10 @@ class basic_string_view { // wrapper for any kind of contiguous character buffer
"Bad char_traits for basic_string_view; N4950 [string.view.template.general]/1 "
"\"The program is ill-formed if traits::char_type is not the same type as charT.\"");

static_assert(!is_array_v<_Elem> && is_trivial_v<_Elem> && is_standard_layout_v<_Elem>,
"The character type of basic_string_view must be a non-array trivial standard-layout type. See N4950 "
"[strings.general]/1.");
static_assert(!is_array_v<_Elem> && is_trivially_copyable_v<_Elem> && is_trivially_default_constructible_v<_Elem>
&& is_standard_layout_v<_Elem>,
"The character type of basic_string_view must be a non-array trivially copyable standard-layout type T where "
"is_trivially_default_constructible_v<T> is true. See N5001 [strings.general]/1.");

using traits_type = _Traits;
using value_type = _Elem;
Expand Down
Loading