Giter Club home page Giter Club logo

libcxx-feedstock's Introduction

About libcxx-feedstock

Feedstock license: BSD-3-Clause

Home: http://libcxx.llvm.org/

Package license: Apache-2.0 WITH LLVM-exception

Summary: LLVM C++ standard library

Development: https://github.com/llvm/llvm-project

Current build status

Azure
VariantStatus
linux_64 variant
osx_64 variant
osx_arm64 variant

Current release info

Name Downloads Version Platforms
Conda Recipe Conda Downloads Conda Version Conda Platforms
Conda Recipe Conda Downloads Conda Version Conda Platforms

Installing libcxx

Installing libcxx from the conda-forge channel can be achieved by adding conda-forge to your channels with:

conda config --add channels conda-forge
conda config --set channel_priority strict

Once the conda-forge channel has been enabled, libcxx, libcxxabi can be installed with conda:

conda install libcxx libcxxabi

or with mamba:

mamba install libcxx libcxxabi

It is possible to list all of the versions of libcxx available on your platform with conda:

conda search libcxx --channel conda-forge

or with mamba:

mamba search libcxx --channel conda-forge

Alternatively, mamba repoquery may provide more information:

# Search all versions available on your platform:
mamba repoquery search libcxx --channel conda-forge

# List packages depending on `libcxx`:
mamba repoquery whoneeds libcxx --channel conda-forge

# List dependencies of `libcxx`:
mamba repoquery depends libcxx --channel conda-forge

About conda-forge

Powered by NumFOCUS

conda-forge is a community-led conda channel of installable packages. In order to provide high-quality builds, the process has been automated into the conda-forge GitHub organization. The conda-forge organization contains one repository for each of the installable packages. Such a repository is known as a feedstock.

A feedstock is made up of a conda recipe (the instructions on what and how to build the package) and the necessary configurations for automatic building using freely available continuous integration services. Thanks to the awesome service provided by Azure, GitHub, CircleCI, AppVeyor, Drone, and TravisCI it is possible to build and upload installable packages to the conda-forge Anaconda-Cloud channel for Linux, Windows and OSX respectively.

To manage the continuous integration and simplify feedstock maintenance conda-smithy has been developed. Using the conda-forge.yml within this repository, it is possible to re-render all of this feedstock's supporting files (e.g. the CI configuration files) with conda smithy rerender.

For more information please check the conda-forge documentation.

Terminology

feedstock - the conda recipe (raw material), supporting scripts and CI configuration.

conda-smithy - the tool which helps orchestrate the feedstock. Its primary use is in the construction of the CI .yml files and simplify the management of many feedstocks.

conda-forge - the place where the feedstock and smithy live and work to produce the finished article (built conda distributions)

Updating libcxx-feedstock

If you would like to improve the libcxx recipe or build a new package version, please fork this repository and submit a PR. Upon submission, your changes will be run on the appropriate platforms to give the reviewer an opportunity to confirm that the changes result in a successful build. Once merged, the recipe will be re-built and uploaded automatically to the conda-forge channel, whereupon the built conda packages will be available for everybody to install and use from the conda-forge channel. Note that all branches in the conda-forge/libcxx-feedstock are immediately built and any created packages are uploaded, so PRs should be based on branches in forks and branches in the main repository should only be used to build distinct package versions.

In order to produce a uniquely identifiable distribution:

  • If the version of a package is not being increased, please add or increase the build/number.
  • If the version of a package is being increased, please remember to return the build/number back to 0.

Feedstock Maintainers

libcxx-feedstock's People

Contributors

beckermr avatar chrisburr avatar conda-forge-admin avatar conda-forge-curator[bot] avatar github-actions[bot] avatar h-vetinari avatar inducer avatar isuruf avatar jakirkham avatar jjhelmus avatar johanmabille avatar mattwala avatar ocefpaf avatar regro-cf-autotick-bot avatar sylvaincorlay avatar timsnyder avatar xhochy avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libcxx-feedstock's Issues

Update to version 17

Comment:

Could this be updated to version 17? llvm and clang are available in version 17 and without a matching libcxx it is not possible (out of the box) to use flags like `-stdlib=libc++.

Maybe there is also some other issue.

Running

clang++ -stdlib=libc++ test.cc
x86_64-conda-linux-gnu-ld: cannot find -lc++: No such file or directory
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

fails. The effective linker command is:

$CONDA_PREFIX/bin/x86_64-conda-linux-gnu-ld"
  --sysroot=$CONDA_PREFIX/x86_64-conda-linux-gnu/sysroot -pie --hash-style=gnu
  --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out
  $CONDA_PREFIX/x86_64-conda-linux-gnu/sysroot/usr/lib/../lib64/Scrt1.o
  $CONDA_PREFIX/x86_64-conda-linux-gnu/sysroot/usr/lib/../lib64/crti.o
  $CONDA_PREFIX/bin/../lib/gcc/x86_64-conda-linux-gnu/11.3.0/crtbeginS.o
  -L$CONDA_PREFIX/bin/../lib/gcc/x86_64-conda-linux-gnu/11.3.0
  -L$CONDA_PREFIX/x86_64-conda-linux-gnu/sysroot/lib/../lib64
  -L$CONDA_PREFIX/x86_64-conda-linux-gnu/sysroot/usr/lib/../lib64
  -L$CONDA_PREFIX/bin/../lib/gcc/x86_64-conda-linux-gnu/11.3.0/../../../../x86_64-conda-linux-gnu/lib
  -L$CONDA_PREFIX/x86_64-conda-linux-gnu/sysroot/lib
  -L$CONDA_PREFIX/x86_64-conda-linux-gnu/sysroot/usr/lib /tmp/test-b113f0.o
  -lc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc
  $CONDA_PREFIX/bin/../lib/gcc/x86_64-conda-linux-gnu/11.3.0/crtendS.o
  $CONDA_PREFIX/x86_64-conda-linux-gnu/sysroot/usr/lib/../lib64/crtn.o

Running

clang++ -L$CONDA_PREFIX/lib -stdlib=libc++ test.cc

succeeds.

I would expect the compiler to find libraries in the prefix directory without further configuration.

I have the following packages installed:

clang โžœ conda list    
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
binutils                  2.39                 hdd6e379_1    conda-forge
binutils_impl_linux-64    2.39                 he00db2b_1    conda-forge
binutils_linux-64         2.39                h5fc0e48_13    conda-forge
boost                     1.82.0               h781c19f_6    conda-forge
bzip2                     1.0.8                hd590300_5    conda-forge
c-ares                    1.21.0               hd590300_0    conda-forge
c-compiler                1.5.2                h0b41bf4_0    conda-forge
ca-certificates           2023.7.22            hbcca054_0    conda-forge
cfgv                      3.3.1                    pypi_0    pypi
clang                     17.0.4               ha0738ec_0    conda-forge
clang-17                  17.0.4          default_h1cdf331_0    conda-forge
clang-format              17.0.4          default_h1cdf331_0    conda-forge
clang-format-17           17.0.4          default_h1cdf331_0    conda-forge
clang-tools               17.0.4          default_h1cdf331_0    conda-forge
clangxx                   17.0.4          default_h1cdf331_0    conda-forge
cmake                     3.27.6               hcfe8598_0    conda-forge
compiler-rt               17.0.4               h00ab1b0_0    conda-forge
compiler-rt_linux-64      17.0.4               h00ab1b0_0    conda-forge
cxx-compiler              1.5.2                hf52228f_0    conda-forge
distlib                   0.3.6                    pypi_0    pypi
filelock                  3.12.0                   pypi_0    pypi
gcc                       11.3.0              h02d0930_13    conda-forge
gcc_impl_linux-64         11.3.0              hab1b70f_19    conda-forge
gcc_linux-64              11.3.0              he6f903b_13    conda-forge
gdb                       12.1            py311h467ab62_0    conda-forge
gf2x                      1.3.0                ha476b99_2    conda-forge
gmp                       6.2.1                h58526e2_0    conda-forge
gperftools                2.10                 h09c0d1c_0    conda-forge
greenlet                  2.0.2                    pypi_0    pypi
gxx                       11.3.0              h02d0930_13    conda-forge
gxx_impl_linux-64         11.3.0              hab1b70f_19    conda-forge
gxx_linux-64              11.3.0              hc203a17_13    conda-forge
icu                       73.2                 h59595ed_0    conda-forge
identify                  2.5.24                   pypi_0    pypi
include-what-you-use      0.20                 h59595ed_0    conda-forge
kernel-headers_linux-64   2.6.32              he073ed8_16    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
krb5                      1.21.2               h659d440_0    conda-forge
ld_impl_linux-64          2.39                 hcc3a1bd_1    conda-forge
libblas                   3.9.0           19_linux64_openblas    conda-forge
libboost                  1.82.0               h6fcfa73_6    conda-forge
libboost-devel            1.82.0               h00ab1b0_6    conda-forge
libboost-headers          1.82.0               ha770c72_6    conda-forge
libboost-python           1.82.0          py311h92ebd52_6    conda-forge
libboost-python-devel     1.82.0          py311h781c19f_6    conda-forge
libcblas                  3.9.0           19_linux64_openblas    conda-forge
libclang-cpp16            16.0.6          default_h1cdf331_1    conda-forge
libclang-cpp17            17.0.4          default_h1cdf331_0    conda-forge
libclang13                17.0.4          default_h4d60ac6_0    conda-forge
libcurl                   8.4.0                hca28451_0    conda-forge
libcxx                    16.0.6               h00ab1b0_0    conda-forge
libcxxabi                 16.0.6               ha770c72_0    conda-forge
libedit                   3.1.20191231         he28a2e2_2    conda-forge
libev                     4.33                 h516909a_1    conda-forge
libexpat                  2.5.0                hcb278e6_1    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libflint                  3.0.0           h5f2e117_ntl_100    conda-forge
libgcc-devel_linux-64     11.3.0              h210ce93_19    conda-forge
libgcc-ng                 13.2.0               h807b86a_2    conda-forge
libgfortran-ng            13.2.0               h69a702a_2    conda-forge
libgfortran5              13.2.0               ha4646dd_2    conda-forge
libgomp                   13.2.0               h807b86a_2    conda-forge
libiconv                  1.17                 h166bdaf_0    conda-forge
liblapack                 3.9.0           19_linux64_openblas    conda-forge
libllvm16                 16.0.6               h5cf9203_2    conda-forge
libllvm17                 17.0.4               h5cf9203_0    conda-forge
libnghttp2                1.58.0               h47da74e_0    conda-forge
libnsl                    2.0.1                hd590300_0    conda-forge
libopenblas               0.3.24          pthreads_h413a1c8_0    conda-forge
libsanitizer              11.3.0              h239ccf8_19    conda-forge
libsqlite                 3.44.0               h2797004_0    conda-forge
libssh2                   1.11.0               h0841786_0    conda-forge
libstdcxx-devel_linux-64  11.3.0              h210ce93_19    conda-forge
libstdcxx-ng              13.2.0               h7e041cc_2    conda-forge
libunwind                 1.6.2                h9c3ff4c_0    conda-forge
libuuid                   2.38.1               h0b41bf4_0    conda-forge
libuv                     1.46.0               hd590300_0    conda-forge
libxml2                   2.11.5               h232c23b_1    conda-forge
libzlib                   1.2.13               hd590300_5    conda-forge
lld                       17.0.4               hcfcaf08_0    conda-forge
mpfr                      4.2.1                h9458935_0    conda-forge
msgpack                   1.0.5                    pypi_0    pypi
ncurses                   6.4                  h59595ed_2    conda-forge
neovim-remote             2.5.1                    pypi_0    pypi
nodeenv                   1.8.0                    pypi_0    pypi
ntl                       11.4.3               hef3c4d3_1    conda-forge
numpy                     1.26.0          py311h64a7726_0    conda-forge
openssl                   3.1.4                hd590300_0    conda-forge
perl                      5.32.1          4_hd590300_perl5    conda-forge
pip                       23.3.1             pyhd8ed1ab_0    conda-forge
platformdirs              3.5.1                    pypi_0    pypi
pre-commit                3.3.2                    pypi_0    pypi
psutil                    5.9.5                    pypi_0    pypi
pygments                  2.16.1             pyhd8ed1ab_0    conda-forge
pynvim                    0.4.3                    pypi_0    pypi
python                    3.11.6          hab00c5b_0_cpython    conda-forge
python_abi                3.11                    4_cp311    conda-forge
pyyaml                    6.0                      pypi_0    pypi
readline                  8.2                  h8228510_1    conda-forge
rhash                     1.4.4                hd590300_0    conda-forge
setuptools                68.2.2             pyhd8ed1ab_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
sysroot_linux-64          2.12                he073ed8_16    conda-forge
tk                        8.6.13          noxft_h4845f30_101    conda-forge
tzdata                    2023c                h71feb2d_0    conda-forge
valgrind                  3.21.0               hcd5def8_0    conda-forge
virtualenv                20.23.0                  pypi_0    pypi
wheel                     0.41.3             pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
zlib                      1.2.13               hd590300_5    conda-forge
zstd                      1.5.5                hfc55251_0    conda-forge

C++ compilation fails on macOS with libcxx 15

Solution to issue cannot be found in the documentation.

  • I checked the documentation.

Issue

Since this update, I see some issues with packages compiling source code at runtime with cppyy on macOS. Here is an example:

  In file included from input_line_1:1:
  In file included from /Users/runner/miniconda3/envs/test/bin/../include/c++/v1/new:94:
  In file included from /Users/runner/miniconda3/envs/test/bin/../include/c++/v1/exception:85:
  In file included from /Users/runner/miniconda3/envs/test/bin/../include/c++/v1/type_traits:485:
  /Users/runner/miniconda3/envs/test/bin/../include/c++/v1/__type_traits/is_pod.h:29:38: error: no template named 'is_trivially_default_constructible'; did you mean 'is_nothrow_default_constructible'?
      : public integral_constant<bool, is_trivially_default_constructible<_Tp>::value   &&

The full log is here: https://github.com/flatsurf/e-antic/actions/runs/4333166222/jobs/7566119386 (expand Run flatsurf/actions/show-logs@main to see the actual errors.)

I don't understand what's going on here. How could the type_traits header be inconsistent like that?

Installed packages

antic                     0.2.5                hfef3418_2    conda-forge
appdirs                   1.4.4              pyh9f0ad1d_0    conda-forge
arb                       2.23.0               h905a977_0    conda-forge
autoconf                  2.71            pl5321hed12c24_1    conda-forge
automake                  1.16.5          pl5321h694c41f_0    conda-forge
backports                 1.0                pyhd8ed1ab_3    conda-forge
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
benchmark                 1.7.1                hf0c8a7f_0    conda-forge
boost-cpp                 1.81.0               h2942534_0    conda-forge
byexample                 10.4.0          py310h2ec42d9_1    conda-forge
bzip2                     1.0.8                h0d85af4_4    conda-forge
c-compiler                1.5.2                hbf74d83_0    conda-forge
ca-certificates           2022.12.7            h033912b_0    conda-forge
cctools                   973.0.1             h76f1dac_11    conda-forge
cctools_osx-64            973.0.1             hcc6d90d_11    conda-forge
clang                     14.0.6               h694c41f_0    conda-forge
clang-14                  14.0.6          default_h55ffa42_0    conda-forge
clang_osx-64              14.0.6               h3113cd8_4    conda-forge
clangxx                   14.0.6          default_h55ffa42_0    conda-forge
clangxx_osx-64            14.0.6               h6f97653_4    conda-forge
colorama                  0.4.6              pyhd8ed1ab_0    conda-forge
compiler-rt               14.0.6               h613da45_0    conda-forge
compiler-rt_osx-64        14.0.6               hab78ec2_0    conda-forge
coreutils                 9.1                  h5eb16cf_0    conda-forge
cppyy                     2.4.2           py310h8adbfe9_0    conda-forge
cppyy-backend             1.14.10         py310ha23aa8a_0    conda-forge
cppyy-cling               6.27.1          py310h71e7e49_0    conda-forge
cpycppyy                  1.12.12         py310ha23aa8a_0    conda-forge
cxx-compiler              1.5.2                hb8565cd_0    conda-forge
gf2x                      1.3.0                hb2a7efb_2    conda-forge
gmp                       6.2.1                h2e338ed_0    conda-forge
icu                       70.1                 h96cf925_0    conda-forge
ld64                      609                 hc6ad406_11    conda-forge
ld64_osx-64               609                 hfd63004_11    conda-forge
libclang-cpp14            14.0.6          default_h55ffa42_0    conda-forge
libcxx                    15.0.7               h71dddab_0    conda-forge
libffi                    3.4.2                h0d85af4_5    conda-forge
libflint                  2.9.0           hfd2f71f_ntl_100    conda-forge
libllvm14                 14.0.6               h5b596cc_1    conda-forge
libllvm9                  9.0.1           default_h2671707_7    conda-forge
libsqlite                 3.40.0               ha978bb4_0    conda-forge
libtool                   2.4.7                hf0c8a7f_0    conda-forge
libzlib                   1.2.13               hfd90126_4    conda-forge
llvm-openmp               15.0.7               h61d9ccf_0    conda-forge
llvm-tools                14.0.6               h5b596cc_1    conda-forge
m4                        1.4.18            haf1e3a3_1001    conda-forge
make                      4.3                  h22f3db7_1    conda-forge
mpfr                      4.1.0                h0f52abe_1    conda-forge
ncurses                   6.3                  h96cf925_1    conda-forge
ntl                       11.4.3               h0ab3c2f_1    conda-forge
openssl                   3.0.8                hfd90126_0    conda-forge
perl                      5.32.1          2_h0d85af4_perl5    conda-forge
pexpect                   4.8.0              pyh1a96a4e_2    conda-forge
pip                       23.0.1             pyhd8ed1ab_0    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
py                        1.11.0             pyh6c4a22f_0    conda-forge
pygments                  2.14.0             pyhd8ed1ab_0    conda-forge
pyte                      0.8.0                      py_0    conda-forge
python                    3.10.9          he7542f4_0_cpython    conda-forge
python_abi                3.10                    3_cp310    conda-forge
readline                  8.1.2                h3899abd_0    conda-forge
setuptools                67.4.0             pyhd8ed1ab_0    conda-forge
sigtool                   0.1.3                h88f4db0_0    conda-forge
tapi                      1100.0.11            h9ce4665_0    conda-forge
tk                        8.6.12               h5dbffcc_0    conda-forge
tqdm                      4.65.0             pyhd8ed1ab_1    conda-forge
tzdata                    2022g                h191b570_0    conda-forge
wcwidth                   0.2.6              pyhd8ed1ab_0    conda-forge
wheel                     0.38.4             pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h775f41a_0    conda-forge
zstd                      1.5.2                hbc0c0cd_6    conda-forge

Environment info

This is a macOS 11.7.4 as provided by GitHub's runners with mamba as configured by conda-incubator/setup-miniconda@v2 action.

I could also run conda info somehow in the CI if that's helpful.

Issue updating from libcxx 14.0.6 to libcxx 16.0.6 with micromamba

Comment:

I was trying to install a python stack today and it failed due to an issue with libcxx. To wit, I started with Miniconda3 23.5.2-0 for Intel Mac (Miniconda3-py311_23.5.2-0-MacOSX-x86_64.sh) and installed it. I then grabbed and installed micromamba as, for reasons I don't know, it's the only installer that works for me.

I also have a .condarc that looks like:

channels:
  - conda-forge
  - defaults
channel_priority: strict

to favor conda-forge.

After that, I first did a micromamba install libblas=*=*=mkl which worked, then micromamba install esmpy. One of the things this calls for I guess is an update to libcxx:

  Upgrade:
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

  - libcxx           14.0.6  h9765a3e_0              pkgs/main        991kB
  + libcxx           16.0.6  hd57cbcb_0              conda-forge     Cached
  - openssl           3.0.9  hca72f7f_0              pkgs/main          5MB
  + openssl           3.1.1  h8a1eda9_1              conda-forge     Cached
  - libcurl           8.1.1  hf20ceda_1              pkgs/main        369kB
  + libcurl           8.1.2  hbee3ae8_0              conda-forge     Cached

but:

critical libmamba filesystem error: in copy_file: Not a directory ["/Users/mathomp4/installed/Core/GEOSpyD/23.5.2-0_py3.11/2023-07-14/include/c++/v1/__string/char_traits.h"] ["/Users/mathomp4/micromamba/pkgs/libcxx-16.0.6-hd57cbcb_0/include/c++/v1/__string/char_traits.h"]

And this is true, that is a file, not a directory:

โฏ file /Users/mathomp4/installed/Core/GEOSpyD/23.5.2-0_py3.11/2023-07-14/include/c++/v1/__string
/Users/mathomp4/installed/Core/GEOSpyD/23.5.2-0_py3.11/2023-07-14/include/c++/v1/__string: c program text, ASCII text

And if I look at llvm, in 14.0.6 __string was a file, but in 16.0.6, it's a directory.

Is there perhaps some special command I need to pass to my package installer to allow this to work?

I can get it to work by using:

if [[ -f $INSTALLDIR/include/c++/v1/__string ]]
then
  rm $INSTALLDIR/include/c++/v1/__string
fi

before I know libcxx will be updated, but that seems ... not right to me.

libcxx >=9 needs a new version of osx

ImportError: dlopen($HOME/opt/miniconda3/envs/dgfem/lib/python3.8/site-packages/pyopencl/_cl.cpython-38-darwin.so, 2): Symbol not found: ___cxa_uncaught_exceptions
  Referenced from: $HOME/opt/miniconda3/envs/dgfem/lib/libc++.1.dylib
  Expected in: /usr/lib/libc++abi.dylib
 in $HOME/opt/miniconda3/envs/dgfem/lib/libc++.1.dylib

Shipping `std` and `std.compat` modules

This landed in LLVM 18, but it's still early days. Here's a recent thread about it. Might be good to have a separate package for it.

In any case, we need to solve the whole MacOS 10.13 situation first... ๐Ÿ˜‘

Currently Labeled as Broken?

Issue: On Anaconda Cloud all the builds for this package are now labeled as "broken" but I've been unable to find any explanation as to why? Is this intentional? What needs to be fixed?

Segfault with Boost.Serialization on conda OSX

Issue:
I'm using boost-cpp within conda for serialization purposes.
Yet, I obtain a segfault even with this simple snippet:

#include <boost/archive/text_oarchive.hpp>
#include <fstream>
#include <string>

int main()
{
  std::string filename = "output.txt";
  std::ofstream ofs(filename.c_str());
  boost::archive::text_oarchive oa(ofs);
  return -1;
}

compiled with:

clang++ test.cpp -o test -I $CONDA_PREFIX/include $CONDA_PREFIX/lib/libboost_serialization.dylib -Wl,-rpath,$CONDA_PREFIX/lib

Interestingly, there is no bug when using boost provided by Brew for instance.
Do you know where this bug is coming from?
Do you have some hints on how to solve this issue?

Thanks in advance for your kind help,
Best,

Justin


Environment (conda list):

boost-cpp                 1.76.0               hff03dee_1    conda-forge
bzip2                     1.0.8                h0d85af4_4    conda-forge
ca-certificates           2020.12.5            h033912b_0    conda-forge
certifi                   2020.12.5        py38h50d1736_1    conda-forge
icu                       68.1                 h74dc148_0    conda-forge
libcxx                    12.0.0               habf9029_0    conda-forge
libffi                    3.3                  h046ec9c_2    conda-forge
lz4-c                     1.9.3                h046ec9c_0    conda-forge
ncurses                   6.2                  h2e338ed_4    conda-forge
openssl                   1.1.1k               h0d85af4_0    conda-forge
pip                       21.1.1             pyhd8ed1ab_0    conda-forge
python                    3.8.10          h3a889e0_1_cpython    conda-forge
python_abi                3.8                      1_cp38    conda-forge
readline                  8.1                  h05e3726_0    conda-forge
setuptools                49.6.0           py38h50d1736_3    conda-forge
sqlite                    3.35.5               h44b9ce1_0    conda-forge
tk                        8.6.10               h0419947_1    conda-forge
wheel                     0.36.2             pyhd3deb0d_0    conda-forge
xz                        5.2.5                haf1e3a3_1    conda-forge
zlib                      1.2.11            h7795811_1010    conda-forge
zstd                      1.5.0                h582d3a0_0    conda-forge

Details about conda and system ( conda info ):
     active environment : pin-test
    active env location : /usr/local/Caskroom/miniconda/4.6.14/miniconda3/envs/pin-test
            shell level : 1
       user config file : /Users/jucarpen/.condarc
 populated config files : /Users/jucarpen/.condarc
          conda version : 4.10.1
    conda-build version : 3.18.11
         python version : 3.7.3.final.0
       virtual packages : __osx=10.15.7=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /usr/local/Caskroom/miniconda/4.6.14/miniconda3  (writable)
      conda av data dir : /usr/local/Caskroom/miniconda/4.6.14/miniconda3/etc/conda
  conda av metadata url : https://repo.anaconda.com/pkgs/main
           channel URLs : https://conda.anaconda.org/conda-forge/osx-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/osx-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/osx-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /usr/local/Caskroom/miniconda/4.6.14/miniconda3/pkgs
                          /Users/jucarpen/.conda/pkgs
       envs directories : /usr/local/Caskroom/miniconda/4.6.14/miniconda3/envs
                          /Users/jucarpen/.conda/envs
               platform : osx-64
             user-agent : conda/4.10.1 requests/2.25.1 CPython/3.7.3 Darwin/19.6.0 OSX/10.15.7
                UID:GID : 660720:21076
             netrc file : None
           offline mode : False

removal of deprecated `std::unary_function` in libcxx 16

Comment:

The recently released libcxx 16 causes a regression in boost 1.78 container_hash, result in errors such as:

2023-03-29T13:21:42.8417150Z /Users/runner/miniconda3/envs/test/bin/x86_64-apple-darwin13.4.0-clang++ -DBOOST_ATOMIC_DYN_LINK -DBOOST_ATOMIC_NO_LIB -DBOOST_DATE_TIME_DYN_LINK -DBOOST_DATE_TIME_NO_LIB -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_FILESYSTEM_NO_LIB -DBOOST_IOSTREAMS_DYN_LINK -DBOOST_IOSTREAMS_NO_LIB -DBOOST_PROGRAM_OPTIONS_DYN_LINK -DBOOST_PROGRAM_OPTIONS_NO_LIB -DBOOST_REGEX_DYN_LINK -DBOOST_REGEX_NO_LIB -DBOOST_SYSTEM_DYN_LINK -DBOOST_SYSTEM_NO_LIB -DBOOST_THREAD_DYN_LINK -DBOOST_THREAD_NO_LIB -DDART_ACTIVE_LOG_LEVEL=2 -DDART_HAVE_spdlog=1 -DFMT_HEADER_ONLY=1 -DFMT_SHARED -DLIBBULLET_VERSION=3.20 -DLIBBULLET_VERSION_GT_282 -DSPDLOG_FMT_EXTERNAL -Dgazebo_yarp_singleton_EXPORTS -I/Users/runner/work/gazebo-yarp-plugins/gazebo-yarp-plugins/libraries/singleton/include/GazeboYarpPlugins -I/Users/runner/work/gazebo-yarp-plugins/gazebo-yarp-plugins/libraries/singleton/include -isystem /Users/runner/miniconda3/envs/test/include/gazebo-11 -isystem /Users/runner/miniconda3/envs/test/include/bullet -isystem /Users/runner/miniconda3/envs/test/include/simbody -isystem /Users/runner/miniconda3/envs/test/include/sdformat-9.8 -isystem /Users/runner/miniconda3/envs/test/include/ignition/math6 -isystem /Users/runner/miniconda3/envs/test/include/OGRE -isystem /Users/runner/miniconda3/envs/test/include/OGRE/OSX -isystem /Users/runner/miniconda3/envs/test/include/OGRE/Bites -isystem /Users/runner/miniconda3/envs/test/include/SDL2 -isystem /Users/runner/miniconda3/envs/test/include/OGRE/HLMS -isystem /Users/runner/miniconda3/envs/test/include/OGRE/MeshLodGenerator -isystem /Users/runner/miniconda3/envs/test/include/OGRE/Overlay -isystem /Users/runner/miniconda3/envs/test/include/OGRE/Paging -isystem /Users/runner/miniconda3/envs/test/include/OGRE/Property -isystem /Users/runner/miniconda3/envs/test/include/OGRE/RTShaderSystem -isystem /Users/runner/miniconda3/envs/test/include/OGRE/Terrain -isystem /Users/runner/miniconda3/envs/test/include/OGRE/Volume -isystem /Users/runner/miniconda3/envs/test/include/ignition/transport8 -isystem /Users/runner/miniconda3/envs/test/include/ignition/msgs5 -isystem /Users/runner/miniconda3/envs/test/include/ignition/common3 -isystem /Users/runner/miniconda3/envs/test/include/ignition/fuel_tools4 -isystem /Users/runner/miniconda3/envs/test/include/eigen3 -isystem /Users/runner/miniconda3/envs/test/include/sdformat-9.8/sdf/.. -isystem /Users/runner/miniconda3/envs/test/include/ignition/cmake2 -march=core2 -mtune=haswell -mssse3 -ftree-vectorize -fPIC -fPIE -fstack-protector-strong -O2 -pipe -stdlib=libc++ -fvisibility-inlines-hidden -fmessage-length=0 -isystem /Users/runner/miniconda3/envs/test/include -O3 -DNDEBUG -std=gnu++17 -isysroot /Applications/Xcode_14.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -fPIC -mfpmath=sse -msse -msse2 -msse3 -mssse3 -MD -MT libraries/singleton/CMakeFiles/gazebo_yarp_singleton.dir/src/Handler.cc.o -MF libraries/singleton/CMakeFiles/gazebo_yarp_singleton.dir/src/Handler.cc.o.d -o libraries/singleton/CMakeFiles/gazebo_yarp_singleton.dir/src/Handler.cc.o -c /Users/runner/work/gazebo-yarp-plugins/gazebo-yarp-plugins/libraries/singleton/src/Handler.cc
2023-03-29T13:21:42.8523790Z In file included from /Users/runner/work/gazebo-yarp-plugins/gazebo-yarp-plugins/libraries/singleton/src/Handler.cc:7:
2023-03-29T13:21:42.8626500Z In file included from /Users/runner/work/gazebo-yarp-plugins/gazebo-yarp-plugins/libraries/singleton/include/GazeboYarpPlugins/Handler.hh:43:
2023-03-29T13:21:42.8728580Z In file included from /Users/runner/miniconda3/envs/test/include/gazebo-11/gazebo/common/Events.hh:23:
2023-03-29T13:21:42.8829980Z In file included from /Users/runner/miniconda3/envs/test/include/gazebo-11/gazebo/common/Console.hh:27:
2023-03-29T13:21:42.8930570Z In file included from /Users/runner/miniconda3/envs/test/include/boost/thread.hpp:13:
2023-03-29T13:21:42.9031940Z In file included from /Users/runner/miniconda3/envs/test/include/boost/thread/thread.hpp:12:
2023-03-29T13:21:42.9132430Z In file included from /Users/runner/miniconda3/envs/test/include/boost/thread/thread_only.hpp:22:
2023-03-29T13:21:42.9232970Z In file included from /Users/runner/miniconda3/envs/test/include/boost/thread/detail/thread.hpp:41:
2023-03-29T13:21:42.9334200Z In file included from /Users/runner/miniconda3/envs/test/include/boost/functional/hash.hpp:6:
2023-03-29T13:21:42.9435130Z /Users/runner/miniconda3/envs/test/include/boost/container_hash/hash.hpp:132:33: error: no template named 'unary_function' in namespace 'std'; did you mean '__unary_function'?
2023-03-29T13:21:42.9540510Z         struct hash_base : std::unary_function<T, std::size_t> {};
2023-03-29T13:21:42.9636350Z                            ~~~~~^
2023-03-29T13:21:42.9737740Z /Users/runner/miniconda3/envs/test/bin/../include/c++/v1/__functional/unary_function.h:46:1: note: '__unary_function' declared here
2023-03-29T13:21:42.9837660Z using __unary_function = __unary_function_keep_layout_base<_Arg, _Result>;
2023-03-29T13:21:42.9938690Z ^
2023-03-29T13:21:43.0039800Z 1 error generated.
2023-03-29T13:21:44.1771450Z [13/112] Building CXX object libraries/singleton/CMakeFiles/gazebo_yarp_singleton.dir/src/ConfHelpers.cc.o
2023-03-29T13:21:44.1873210Z FAILED: libraries/singleton/CMakeFiles/gazebo_yarp_singleton.dir/src/ConfHelpers.cc.o 

In a nutshell, libcxx 16 removed std::unary_function (see https://releases.llvm.org/16.0.0/projects/libcxx/docs/ReleaseNotes.html#deprecations-and-removals). boost's container_hash 1.78.0 does not compile without std::unary_function, as a fix for libcxx 16 was added just in boost 1.81 (boostorg/config#440). I tought of backporting the fix to boost 1.78, but it seems that merging any pr to boost 1.78 feedstock is blocked by https://github.com/conda-forge/boost-cpp-feedstock/pull/130/files, so I am currently out of ideas on how to proceed.

more OSX RTTI issues

Issue: I finally got this test case finished. Interestingly, it now fails completely instead of only partially like last time.

The code is here: https://github.com/beckermr/misc/tree/master/work/pybind11_conda_exceptions
The readme has a basic description of how to run the test.

On osx I get (with either the system or the conda compiler)

========================================================================== test session starts ===========================================================================
platform darwin -- Python 3.7.6, pytest-5.4.1, py-1.8.1, pluggy-0.13.0 -- /Users/beckermr/miniconda3/envs/pybind11-test/bin/python
cachedir: .pytest_cache
rootdir: /Users/beckermr/Desktop/misc/work/pybind11_conda_exceptions
collecting ... dyld: loaded: /Users/beckermr/Desktop/misc/work/pybind11_conda_exceptions/exception_test/exceptions.cpython-37m-darwin.so
dyld: loaded: /Users/beckermr/Desktop/misc/work/pybind11_conda_exceptions/tests/testLib.cpython-37m-darwin.so
collected 1 item                                                                                                                                                         

test_exception_catching_python.py::test_exception_catching_python_smoke 
==========
standard throw!
==========
FAILED

================================================================================ FAILURES ================================================================================
__________________________________________________________________ test_exception_catching_python_smoke __________________________________________________________________

    def test_exception_catching_python_smoke():
        with pytest.raises(exception_test.LSSTException):
>           testLib.fail("message1")
E           RuntimeError: message1

test_exception_catching_python.py:9: RuntimeError
======================================================================== short test summary info =========================================================================
FAILED test_exception_catching_python.py::test_exception_catching_python_smoke - RuntimeError: message1
=========================================================================== 1 failed in 0.11s ============================================================================

The runtime error is pybind11 doing its own thing with the uncaught exception in the exception translator block.

On linux, it works fine

========================================================================== test session starts ===========================================================================
platform linux -- Python 3.7.6, pytest-5.4.1, py-1.8.1, pluggy-0.12.0 -- /opt/conda/envs/pybind11-test/bin/python
cachedir: .pytest_cache
rootdir: /root/misc/work/pybind11_conda_exceptions
collected 1 item                                                                                                                                                         

test_exception_catching_python.py::test_exception_catching_python_smoke 
==========
standard throw!
==========

==========
caught
==========
PASSED

=========================================================================== 1 passed in 0.02s ============================================================================
/root/misc/work/pybind11_conda_exceptions

Environment (conda list):
$ conda list
# packages in environment at /Users/beckermr/miniconda3/envs/pybind11-test:
#
# Name                    Version                   Build  Channel
appnope                   0.1.0           py37hc8dfbb8_1001    conda-forge
attrs                     19.3.0                     py_0    conda-forge
backcall                  0.1.0                      py_0    conda-forge
binutils-meta             1.0.4                         0    conda-forge
c-compiler                1.0.4                h1239861_0    conda-forge
ca-certificates           2020.4.5.1           hecc5488_0    conda-forge
cctools                   927.0.2              h5ba7a2e_4    conda-forge
certifi                   2020.4.5.1       py37hc8dfbb8_0    conda-forge
clang                     9.0.0           default_hf57f61e_4    conda-forge
clang_osx-64              9.0.0                h22b1bf0_3    conda-forge
clangxx                   9.0.0           default_hf57f61e_4    conda-forge
clangxx_osx-64            9.0.0                h05bbb7f_6    conda-forge
compiler-rt               9.0.0                hce3ea14_0    conda-forge/label/broken
compilers                 1.0.4                         0    conda-forge
cxx-compiler              1.0.4                h707564b_0    conda-forge
decorator                 4.4.2                      py_0    conda-forge
exception-test            0.1.0                     dev_0    <develop>
fortran-compiler          1.0.4                he991be0_0    conda-forge
gfortran_impl_osx-64      7.3.0                hf4212f2_2    conda-forge
gfortran_osx-64           7.3.0                h22b1bf0_9    conda-forge
gmp                       6.2.0                h4a8c4bd_2    conda-forge
importlib-metadata        1.6.0            py37hc8dfbb8_0    conda-forge
importlib_metadata        1.6.0                         0    conda-forge
ipython                   7.13.0           py37hc8dfbb8_2    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
isl                       0.19                          0    conda-forge
jedi                      0.17.0           py37hc8dfbb8_0    conda-forge
ld64                      450.3                h3c32e8a_3    conda-forge
libcxx                    9.0.1                         1    conda-forge
libffi                    3.2.1             h4a8c4bd_1007    conda-forge
libgfortran               4.0.0                         2    conda-forge
libiconv                  1.15              h0b31af3_1006    conda-forge
libllvm9                  9.0.1                h7475705_1    conda-forge
llvm-openmp               10.0.0               h28b9765_0    conda-forge
more-itertools            8.2.0                      py_0    conda-forge
mpc                       1.1.0             h4160ff4_1007    conda-forge
mpfr                      4.0.2                h65ac59c_1    conda-forge
ncurses                   6.1               h0a44026_1002    conda-forge
openssl                   1.1.1f               h0b31af3_0    conda-forge
packaging                 20.1                       py_0    conda-forge
parso                     0.7.0              pyh9f0ad1d_0    conda-forge
pexpect                   4.8.0            py37hc8dfbb8_1    conda-forge
pickleshare               0.7.5           py37hc8dfbb8_1001    conda-forge
pip                       20.0.2                     py_2    conda-forge
pluggy                    0.13.0                   py37_0    conda-forge
prompt-toolkit            3.0.5                      py_0    conda-forge
ptyprocess                0.6.0                   py_1001    conda-forge
py                        1.8.1                      py_0    conda-forge
pybind11                  2.5.0            py37ha1cc60f_0    conda-forge
pygments                  2.6.1                      py_0    conda-forge
pyparsing                 2.4.7              pyh9f0ad1d_0    conda-forge
pytest                    5.4.1            py37hc8dfbb8_0    conda-forge
python                    3.7.6           h90870a6_5_cpython    conda-forge
python_abi                3.7                     1_cp37m    conda-forge
readline                  8.0                  hcfe32e1_0    conda-forge
setuptools                46.1.3           py37hc8dfbb8_0    conda-forge
six                       1.14.0                     py_1    conda-forge
sqlite                    3.30.1               h93121df_0    conda-forge
tapi                      1000.10.8            ha1b3eb9_4    conda-forge
tk                        8.6.10               hbbe82c9_0    conda-forge
traitlets                 4.3.3            py37hc8dfbb8_1    conda-forge
wcwidth                   0.1.9              pyh9f0ad1d_0    conda-forge
wheel                     0.34.2                     py_1    conda-forge
xz                        5.2.5                h0b31af3_0    conda-forge
zipp                      3.1.0                      py_0    conda-forge
zlib                      1.2.11            h0b31af3_1006    conda-forge

Details about conda and system ( conda info ):
$ conda info

     active environment : pybind11-test
    active env location : /Users/beckermr/miniconda3/envs/pybind11-test
            shell level : 2
       user config file : /Users/beckermr/.condarc
 populated config files : /Users/beckermr/.condarc
          conda version : 4.8.3
    conda-build version : 3.19.2
         python version : 3.7.6.final.0
       virtual packages : __osx=10.14.6
       base environment : /Users/beckermr/miniconda3  (writable)
           channel URLs : https://conda.anaconda.org/conda-forge/osx-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/osx-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/osx-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /Users/beckermr/miniconda3/pkgs
                          /Users/beckermr/.conda/pkgs
       envs directories : /Users/beckermr/miniconda3/envs
                          /Users/beckermr/.conda/envs
               platform : osx-64
             user-agent : conda/4.8.3 requests/2.23.0 CPython/3.7.6 Darwin/18.7.0 OSX/10.14.6
                UID:GID : 501:20
             netrc file : /Users/beckermr/.netrc
           offline mode : False


cc @isuruf

libc++abi.dylib: terminating with uncaught exception of type std::out_of_range

Hello,

I'm investigating a migration PR for openturns (conda-forge/openturns-feedstock#66) and some osx/clangxx jobs (https://travis-ci.org/conda-forge/openturns-feedstock/jobs/447025412) use libcxx 4.0.1:

...
clang:           4.0.1-h662ec87_0           conda-forge/label/gcc7
clang_osx-64:    4.0.1-h1ce6c1d_11          conda-forge/label/gcc7
clangxx:         4.0.1-hc9b4283_0           defaults              
    clangxx_osx-64:  4.0.1-h22b1bf0_11          defaults              
libcxx:          4.0.1-h579ed51_0                       conda-forge/label/gcc7
libcxxabi:       4.0.1-hebd6815_0                       conda-forge/label/gcc7
...
llvm:            4.0.1-hc748206_0           conda-forge/label/gcc7
    llvm-lto-tapi:   4.0.1-h6701bc3_0           conda-forge/label/gcc7

The reason my build fails comes down to the out_of_bound exception not being caught properly. On this example it goes to the catch(...) path instead of the first catch.:

std::vector<double> mesh(3);
try {
    double v = mesh.at(8);
    std::cout << "v=" << v << std::endl; 
  }
  catch(std::out_of_range & ex) {
    std::cout << "CAUGHT out_of_range="<<ex.what() << std::endl; 
  }
  catch(...) {
    std::cout << "CAUGHT*" << std::endl; 
  throw;
  }

If not caught it errors out with the message:
libc++abi.dylib: terminating with uncaught exception of type std::out_of_range

Building on Windows

Is it possible to build libcxx on Windows? Are there any known issues that were encountered that blocked this previously?

libcxx didn't get an autotick for llvm release 10.0

Issue:

llvm-project released llvmorg-10.0.0 a few weeks back. libcxx didn't get an autotick PR.

Suspected Cause:

recipe/meta.yaml fails to use {{ version }} in two places where it needs to.

source:
  - url: https://github.com/llvm/llvm-project/releases/download/llvmorg-9.0.1/libcxx-{{ version }}.src.tar.xz
    sha256: 0981ff11b862f4f179a13576ab0a2f5530f46bd3b6b4a90f568ccc6a62914b34
    patches:
      # See https://bugs.llvm.org/show_bug.cgi?id=39696
      - ppc64le-constexpr.patch  # [ppc64le]

  - url: https://github.com/llvm/llvm-project/releases/download/llvmorg-9.0.1/libcxxabi-{{ version }}.src.tar.xz  # [linux]
    sha256: e8f978aa4cfae2d7a0b4d89275637078557cca74b35c31b7283d4786948a8aac  # [linux]
    folder: libcxxabi  # [linux]

The URL lines need to use llvmorg-{{ version }} where they currently use llvmorg-9.0.1 and I think the autotick bot will figure out the autotick PR.

Proposed Fix:

Rather than have a separate PR to fix this and wait for an autotick for 10.0, I'm going to just submit a manual bump to 10.0 that also fixes this.

tests were not running and now fail

Due to conda build not running the tests (!!!), it appears that version 10 is somewhat broken.

On linux, we cannot even solve for the test env

Output in format: Requested package -> Available versions

Package libstdcxx-ng conflicts for:
clang -> libstdcxx-ng[version='>=7.3.0']
gxx_linux-64=7 -> libstdcxx-ng==7.2.0=h24385c6_1

Package libcxxabi conflicts for:
libcxxabi==10.0.0=2
libcxx==10.0.0=hc9558a2_2 -> libcxxabi==10.0.0=2

on OSX we are hitting a variety of errors due to the linker not recgonizing -platform-version flags and if you try a hack to fix that, you get

clang++ -stdlib=libc++ -O2 -g test_sources/test_exceptions.cpp -Wl,-rpath,/Users/travis/miniconda3/conda-bld/libcxx_and_libcxxabi_1587728061005/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pla/lib -L/Users/travis/miniconda3/conda-bld/libcxx_and_libcxxabi_1587728061005/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pla/lib -mlinker-version=0
Assertion failed: (!"Unknown operand"), function LinkLocation, file /SourceCache/dwarf_utilities/dwarf_utilities-121.1/source/DWARFdSYM.cpp, line 1818.
clang-10: error: unable to execute command: Abort trap: 6
clang-10: error: dsymutil command failed due to signal (use -v to see invocation)

cc @conda-forge/libcxx @isuruf

cxx_compilergxxpython builds failing

The most recent commit on master has failing cxx_compilergxxpython builds. I assume that this results in the package missing for conda-forge feedstocks that depend on libcxx, such as hoomd: https://github.com/conda-forge/hoomd-feedstock .

Root cause of the issue appears to be a failing test: https://circleci.com/gh/conda-forge/libcxx-feedstock/108?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link

test_sources/hello_world.c:1:10: fatal error: 'stdio.h' file not found

libcxx15 version?

Comment:

Hi, sorry if this the wrong place to ask, but is there a reason this doesn't have an llvm 15 version yet? clang, clang-format, lld all have updated versions, but libcxx doesn't.

Thanks!

TODOs for libcxx 19

This is somewhat premature, but I expect us to unblock the builds here in 1-2 months (๐Ÿคž), well before the release of libcxx 19.

Also, I don't want to remember every relevant tidbit I come across, so here's a list mainly for myself.

  • Probably most of <chrono> will land by libcxx 19, and we'll have to patch in support for our tzdata. Currently, upstream only enables it on linux anyway, but since we have a consistent location $CONDA_PREFIX/share/zoneinfo (note that package is noarch), it should be pretty easy to get going on osx, assuming the rest works as-is
    • Windows will probably run into yet more edge cases, but not a primary platform for our libcxx, so whatever...
  • We'll have to fundamentally overhaul our _LIBCPP_DISABLE_AVAILABILITY implementation once this lands.
  • llvm/llvm-project#87778

clangxx 9 is missing some C++17 features

I just installed clangxx9 on macOS with conda install clangxx. Strangely, some C++17 features seem to be missing:

$ cat test.cc
#include <memory>
 
using std::uninitialized_move; // since C++17
using std::reinterpret_pointer_cast; // since C++17
 
$ clang++ -std=c++17 -c test.cc
test.cc:4:12: error: no member named 'reinterpret_pointer_cast' in namespace 'std'
using std::reinterpret_pointer_cast;
      ~~~~~^
1 error generated.

However, this works with a clang9 elsewhere: https://godbolt.org/z/wAnnBE

Did I somehow manage to install the wrong header files?

Here's some more info about my system.

$ conda info
 
     active environment : base
    active env location : /Users/ci/minimamba
            shell level : 1
       user config file : /Users/ci/.condarc
 populated config files : /Users/ci/.condarc
          conda version : 4.7.12
    conda-build version : 3.18.3
         python version : 3.7.3.final.0
       virtual packages :
       base environment : /Users/ci/minimamba  (writable)
           channel URLs : https://conda.anaconda.org/conda-forge/osx-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/osx-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/osx-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /Users/ci/minimamba/pkgs
                          /Users/ci/.conda/pkgs
       envs directories : /Users/ci/minimamba/envs
                          /Users/ci/.conda/envs
               platform : osx-64
             user-agent : conda/4.7.12 requests/2.22.0 CPython/3.7.3 Darwin/16.7.0 OSX/10.12.6
                UID:GID : 501:20
             netrc file : None
           offline mode : False

$ conda list
# packages in environment at /Users/ci/minimamba:
#
# Name                    Version                   Build  Channel
asn1crypto                0.24.0                py37_1003    conda-forge
beautifulsoup4            4.7.1                 py37_1001    conda-forge
bzip2                     1.0.6             h1de35cc_1002    conda-forge
ca-certificates           2019.9.11            hecc5488_0    conda-forge
certifi                   2019.9.11                py37_0    conda-forge
cffi                      1.12.3           py37hccf1714_0    conda-forge
chardet                   3.0.4                 py37_1003    conda-forge
clang                     9.0.0                h28b9765_0    conda-forge
clangxx                   9.0.0                         0    conda-forge
conda                     4.7.12                   py37_0    conda-forge
conda-build               3.18.3                   py37_0    conda-forge
conda-package-handling    1.3.10                   py37_0    conda-forge
cryptography              2.7              py37h212c5bf_0    conda-forge
filelock                  3.0.10                     py_0    conda-forge
glob2                     0.7                        py_0    conda-forge
icu                       58.2              h0a44026_1000    conda-forge
idna                      2.8                   py37_1000    conda-forge
jinja2                    2.10.1                     py_0    conda-forge
libarchive                3.3.3             h5c473cc_1005    conda-forge
libcxx                    9.0.0                         0    conda-forge
libcxxabi                 9.0.0                         0    conda-forge
libffi                    3.2.1             h6de7cb9_1006    conda-forge
libiconv                  1.15              h01d97ff_1005    conda-forge
liblief                   0.9.0                h2a1bed3_1    conda-forge
libllvm9                  9.0.0                h770b8ee_2    conda-forge
libsolv                   0.7.6                hfbae3c0_0    conda-forge
libxml2                   2.9.9                hd80cff7_0    conda-forge
lz4-c                     1.8.3             h6de7cb9_1001    conda-forge
lzo                       2.10              h1de35cc_1000    conda-forge
mamba                     0.0.10           py37h770b8ee_1    conda-forge
markupsafe                1.1.1            py37h1de35cc_0    conda-forge
ncurses                   6.1               h0a44026_1002    conda-forge
openssl                   1.1.1c               h01d97ff_0    conda-forge
pip                       19.1.1                   py37_0    conda-forge
pkginfo                   1.5.0.1                    py_0    conda-forge
psutil                    5.6.3            py37h01d97ff_0    conda-forge
py-lief                   0.9.0            py37h6d6d4d2_1    conda-forge
pycosat                   0.6.3           py37h1de35cc_1001    conda-forge
pycparser                 2.19                     py37_1    conda-forge
pyopenssl                 19.0.0                   py37_0    conda-forge
pysocks                   1.7.0                    py37_0    conda-forge
python                    3.7.3                h93065d6_1    conda-forge
python-libarchive-c       2.8                   py37_1004    conda-forge
pytz                      2019.1                     py_0    conda-forge
pyyaml                    5.1.1            py37h01d97ff_0    conda-forge
readline                  8.0                  hcfe32e1_0    conda-forge
requests                  2.22.0                   py37_0    conda-forge
ruamel_yaml               0.15.71         py37h1de35cc_1000    conda-forge
setuptools                41.0.1                   py37_0    conda-forge
six                       1.12.0                py37_1000    conda-forge
soupsieve                 1.9.2                    py37_0    conda-forge
sqlite                    3.28.0               hb7d70f7_1    conda-forge
tk                        8.6.9             h2573ce8_1002    conda-forge
tqdm                      4.32.2                     py_0    conda-forge
urllib3                   1.24.3                   py37_0    conda-forge
wheel                     0.33.4                   py37_0    conda-forge
xz                        5.2.4             h1de35cc_1001    conda-forge
yaml                      0.1.7             h1de35cc_1001    conda-forge
zlib                      1.2.11            h1de35cc_1004    conda-forge
zstd                      1.4.0                ha9f0a20_0    conda-forge

Enable `_LIBCPP_HARDENING_MODE_FAST`?

As of libcxx 18, the libcxx hardening got an extensive overhaul. The supported modes are now

  • _LIBCPP_HARDENING_MODE_NONE
  • _LIBCPP_HARDENING_MODE_FAST
  • _LIBCPP_HARDENING_MODE_EXTENSIVE
  • _LIBCPP_HARDENING_MODE_DEBUG

The goal of the fast mode is to do only critical checks and not cost (basically) any performance. This is the one that I think we should consider enabling, as users (and maintainers) would get better debug information rather than a crash.

Note that this also affects (by default) code built with libcxx, but doesn't affect the ABI. Details

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.