Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
c5ee3b3
Downlevel standard coroutine support (#1730)
joemmett Mar 12, 2021
2d890fd
Update the Standard Library Header Units test for attributes (#1747)
StephanTLavavej Mar 16, 2021
378dcad
Implement ranges::join_view (#1436)
miscco Mar 18, 2021
038e07b
Implement ranges::split_view (#1731)
CaseyCarter Mar 18, 2021
1cca482
Define __cpp_lib_ranges (#1748)
CaseyCarter Mar 18, 2021
7570481
Port STL portion of MSVC-PR-311353 (#1759)
CaseyCarter Mar 19, 2021
ef6c1ce
Port STL portion of compiler backend changes (#1762)
StephanTLavavej Mar 22, 2021
e338329
Add STL.natvis (#1720)
AnjuDel Mar 23, 2021
a1ed5eb
<complex>: Fix warning C5219 when compiled with /Wall (#1722)
statementreply Mar 23, 2021
87fa813
Generalize the 80-bit long double in <complex> for Clang (#1728)
Mar 23, 2021
3892791
Fix make_shared with throwing destructors (#1736)
StephanTLavavej Mar 23, 2021
8e428c8
_Uglify some non-reserved names (#1743)
cpplearner Mar 23, 2021
6d5cf9c
README.md: Clarify build instructions with command line tools (#1744)
statementreply Mar 23, 2021
d3d9735
Avoid concepts when __cpp_lib_concepts isn't defined (#1749)
StephanTLavavej Mar 23, 2021
043e19a
README.md: Add a section about debugging individual tests (#1750)
miscco Mar 23, 2021
dcba13b
Optimizations for contiguous iterators (#1433)
AdamBucior Mar 23, 2021
e002186
Add escape hatch for _USE_STD_VECTOR_ALGORITHMS (#1751)
Mar 24, 2021
21dd369
Suppress warning C4640 emitted by MSVC constinit (#1611)
StephanTLavavej Mar 24, 2021
6aed1a6
Port test fix for VSO-119283 (#1778)
JonCavesMSFT Mar 24, 2021
6213792
Improve coroutine_handle visualization with intrinsics (#1785)
joemmett Mar 30, 2021
90ea364
Activate vectorized algorithms for ARM64EC (#1798)
StephanTLavavej Apr 5, 2021
b84fbcf
Update comments for February 2021 LWG issues (#1686)
StephanTLavavej Apr 5, 2021
02b238c
Use GitHub Actions to update the Status Chart (#1769)
StephanTLavavej Apr 5, 2021
cf15e49
More optimizations for contiguous iterators (#1772)
AdamBucior Apr 5, 2021
747cb8f
Add standard library header units test to parallelism group (#1776)
cbezault Apr 5, 2021
b2c0828
header-units.json: Comment out version, yvals.h, yvals_core.h. (#1781)
StephanTLavavej Apr 5, 2021
6439888
Updated working draft revision to n4885 (#1783)
fsb4000 Apr 6, 2021
eac85bf
<optional>: Fix mystery LWG issue citations (#1788)
Athira2199 Apr 6, 2021
b88c580
_MSVC_STL_UPDATE changed to current month (#1801)
2002Bishwajeet Apr 6, 2021
fb2f89f
Merging `[time.zone]`, `[time.clock]`, and `[time.parse]` pieces of P…
mnatsuhara Apr 6, 2021
258b127
Merge branch 'main' into merge_format
StephanTLavavej Apr 6, 2021
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
31 changes: 31 additions & 0 deletions .github/workflows/update-status-chart.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

name: Update Status Chart
on:
schedule:
- cron: "0 7 * * *"
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout gh-pages
uses: actions/checkout@v2
with:
ref: gh-pages
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: ">=15.12.0"
- name: Run gather_stats.js
run: |
npm ci
SECRET_GITHUB_PERSONAL_ACCESS_TOKEN="${{ github.token }}" node gather_stats.js
- name: Commit Changes
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add daily_table.js monthly_table.js
git diff-index --quiet HEAD || git commit -m "Automated update."
git push origin gh-pages
62 changes: 57 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ issue. The [bug tag][] and [enhancement tag][] are being populated.

# Goals

We're implementing the latest C++ Working Draft, currently [N4878][], which will eventually become the next C++
We're implementing the latest C++ Working Draft, currently [N4885][], 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 @@ -172,14 +172,14 @@ acquire this dependency.

To build the x86 target:

1. Open an "x86 Native Tools Command Prompt for VS 2019".
1. Open an "x86 Native Tools Command Prompt for VS 2019 Preview".
2. Change directories to the previously cloned `STL` directory.
3. `cmake -G Ninja -S . -B out\build\x86`
4. `ninja -C out\build\x86`

To build the x64 target:

1. Open an "x64 Native Tools Command Prompt for VS 2019".
1. Open an "x64 Native Tools Command Prompt for VS 2019 Preview".
2. Change directories to the previously cloned `STL` directory.
3. `cmake -G Ninja -S . -B out\build\x64`
4. `ninja -C out\build\x64`
Expand All @@ -205,7 +205,7 @@ your .exe would "win" over the versions in System32.
The compiler looks for include directories according to the `INCLUDE` environment variable, and the linker looks for
import library directories according to the `LIB` environment variable, and the Windows loader will (eventually) look
for DLL dependencies according to directories in the `PATH` environment variable. From an
"x64 Native Tools Command Prompt for VS 2019":
"x64 Native Tools Command Prompt for VS 2019 Preview":

```
C:\Users\username\Desktop>set INCLUDE=C:\Dev\STL\out\build\x64\out\inc;%INCLUDE%
Expand Down Expand Up @@ -362,6 +362,57 @@ The `SKIPPED` result code indicates that a given test was explicitly skipped by
* taking a very long time to run
* failing or passing for the incorrect reason

### Debugging Individual Tests

While `stl-lit` is super awesome in finding out that *something* is wrong or not even compiling, it is not really
helpful in debugging *what* is going wrong. However, debugging individual tests is rather simple given some additional
steps. Let's assume we want to debug a new feature with tests located in `tests\std\tests\GH_XXXX_meow`.

As always, build the STL from your branch and run the tests:
```
C:\STL\out\build\x64> ninja
C:\STL\out\build\x64> python tests\utils\stl-lit\stl-lit.py -v C:\STL\tests\std\tests\GH_XXXX_meow
```

Let's assume one of the tests fails an assert and we want to debug that configuration. `stl-lit` will conveniently print
the build command, which is far too long to provide here in full. The important part is to add the following options to
provide debug symbols: `/Zi /Fdbark.pdb`.

You can replace `bark` with any descriptive name you like. Add these before the `"-link"` option in the command line
and recompile. Example:
```
C:\STL\out\build\x64>cl "C:\STL\tests\std\tests\GH_XXXX_meow\test.cpp" [... more arguments ...]
"-FeC:\STL\out\build\x64\tests\std\tests\GH_XXXX_meow\Output\02\GH_XXXX_meow.exe" /Zi /Fdbark.pdb "-link"
[... more arguments ...]
```

You can now start debugging the test via:
```
devenv "C:\STL\out\build\x64\tests\std\tests\GH_XXXX_meow\Output\02\GH_XXXX_meow.exe"
"C:\STL\tests\std\tests\GH_XXXX_meow\test.cpp"
```

However, this might not work right away, as Visual Studio may complain about a missing `msvcp140_oss.dll`. The reason
is that the STL builds those and other DLLs itself and we should under no circumstances overwrite the installed ones.
If you are testing one of the configurations with dynamic linkage (`/MD` or `/MDd`) the easiest solution is to add the
build folder to your path:
```
set PATH=C:\STL\out\build\x64\out\bin\amd64;%PATH%
```

# Editing And Testing The Debugger Visualizer

### Modify The Visualizer

To modify how components are visualized in the debugger edit the file `stl\debugger\STL.natvis`. For more information on
how to modify this file check the [natvis documentation][].

### Test Your Changes

You can add the natvis file to any Visual Studio C++ project if you right click your project > Add > Existing Item and
select the STL.natvis file. After doing this you should be able to see your changes in a Visual Studio debugging
session.

# Block Diagram

The STL is built atop other compiler support libraries that ship with Windows and Visual Studio, like the UCRT,
Expand Down Expand Up @@ -405,7 +456,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/
[N4878]: https://wg21.link/n4878
[N4885]: https://wg21.link/n4885
[NOTICE.txt]: NOTICE.txt
[Ninja]: https://ninja-build.org
[Pipelines]: https://dev.azure.com/vclibs/STL/_build/latest?definitionId=4&branchName=main
Expand All @@ -423,3 +474,4 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
[opencode@microsoft.com]: mailto:opencode@microsoft.com
[redistributables]: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
[vcpkg]: https://github.com/microsoft/vcpkg
[natvis documentation]: https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects
12 changes: 7 additions & 5 deletions azure-devops/create-vmss.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ $Prefix = 'StlBuild-' + (Get-Date -Format 'yyyy-MM-dd')
$VMSize = 'Standard_D32ds_v4'
$ProtoVMName = 'PROTOTYPE'
$LiveVMPrefix = 'BUILD'
$WindowsServerSku = '2019-Datacenter'
$ImagePublisher = 'MicrosoftWindowsDesktop'
$ImageOffer = 'Windows-10'
$ImageSku = '20h2-ent-g2'

$ProgressActivity = 'Creating Scale Set'
$TotalProgress = 12
Expand Down Expand Up @@ -268,9 +270,9 @@ $VM = Set-AzVMOperatingSystem `
$VM = Add-AzVMNetworkInterface -VM $VM -Id $Nic.Id
$VM = Set-AzVMSourceImage `
-VM $VM `
-PublisherName 'MicrosoftWindowsServer' `
-Offer 'WindowsServer' `
-Skus $WindowsServerSku `
-PublisherName $ImagePublisher `
-Offer $ImageOffer `
-Skus $ImageSku `
-Version latest

$VM = Set-AzVMBootDiagnostic -VM $VM -Disable
Expand Down Expand Up @@ -340,7 +342,7 @@ Set-AzVM `

$VM = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $ProtoVMName
$PrototypeOSDiskName = $VM.StorageProfile.OsDisk.Name
$ImageConfig = New-AzImageConfig -Location $Location -SourceVirtualMachineId $VM.ID
$ImageConfig = New-AzImageConfig -Location $Location -SourceVirtualMachineId $VM.ID -HyperVGeneration 'V2'
$Image = New-AzImage -Image $ImageConfig -ImageName $ProtoVMName -ResourceGroupName $ResourceGroupName

####################################################################################################
Expand Down
2 changes: 1 addition & 1 deletion azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ variables:
buildOutputLocation: 'D:\build'
vcpkgLocation: '$(Build.SourcesDirectory)/vcpkg'

pool: 'StlBuild-2021-03-02'
pool: 'StlBuild-2021-03-09-win10'

stages:
- stage: Code_Format
Expand Down
4 changes: 3 additions & 1 deletion stl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
set(HEADERS
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_all_public_headers.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_system_error_abi.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/__msvc_tzdb.hpp
${CMAKE_CURRENT_LIST_DIR}/inc/algorithm
${CMAKE_CURRENT_LIST_DIR}/inc/any
${CMAKE_CURRENT_LIST_DIR}/inc/array
Expand Down Expand Up @@ -400,6 +401,7 @@ set(SOURCES_SATELLITE_ATOMIC_WAIT
${CMAKE_CURRENT_LIST_DIR}/src/atomic_wait.cpp
${CMAKE_CURRENT_LIST_DIR}/src/parallel_algorithms.cpp
${CMAKE_CURRENT_LIST_DIR}/src/syncstream.cpp
${CMAKE_CURRENT_LIST_DIR}/src/tzdb.cpp
)

set(SOURCES_SATELLITE_CODECVT_IDS
Expand Down Expand Up @@ -499,7 +501,7 @@ function(add_stl_dlls D_SUFFIX THIS_CONFIG_DEFINITIONS THIS_CONFIG_COMPILE_OPTIO
file(WRITE "${_ATOMIC_WAIT_DEF_NAME}" "${_ATOMIC_WAIT_DEF_CONTENTS}")

add_library(msvcp${D_SUFFIX}_atomic_wait SHARED "${_ATOMIC_WAIT_DEF_NAME}")
target_link_libraries(msvcp${D_SUFFIX}_atomic_wait PRIVATE msvcp${D_SUFFIX}_atomic_wait_objects msvcp${D_SUFFIX}_satellite_objects msvcp${D_SUFFIX}_implib_objects "msvcp${D_SUFFIX}" "${TOOLSET_LIB}/vcruntime${D_SUFFIX}.lib" "${TOOLSET_LIB}/msvcrt${D_SUFFIX}.lib" "ucrt${D_SUFFIX}.lib")
target_link_libraries(msvcp${D_SUFFIX}_atomic_wait PRIVATE msvcp${D_SUFFIX}_atomic_wait_objects msvcp${D_SUFFIX}_satellite_objects msvcp${D_SUFFIX}_implib_objects "msvcp${D_SUFFIX}" "${TOOLSET_LIB}/vcruntime${D_SUFFIX}.lib" "${TOOLSET_LIB}/msvcrt${D_SUFFIX}.lib" "ucrt${D_SUFFIX}.lib" "advapi32.lib")
set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES ARCHIVE_OUTPUT_NAME "msvcp140_atomic_wait${D_SUFFIX}${VCLIBS_SUFFIX}")
set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
set_target_properties(msvcp${D_SUFFIX}_atomic_wait PROPERTIES OUTPUT_NAME "${_ATOMIC_WAIT_OUTPUT_NAME}")
Expand Down
Loading