Page MenuHomePhabricator

zoecarver (Zoe Carver)
User

Projects

User does not belong to any projects.

User Details

User Since
Jan 28 2019, 10:13 PM (21 w, 1 d)

Email: zoe@zoecarver.com
Username: zoecarver (slack, IRC, github, stackoverflow)

I mostly work on libc++. Feel free to contact me above.

Recent Activity

Sun, Jun 23

zoecarver added a comment to D63230: Add observer_ptr.

I am so glad you like it :) thanks for the review @EricWF! I will add constexpr tests and fix the comments.

Sun, Jun 23, 8:21 PM

Sat, Jun 22

zoecarver added inline comments to D59886: Heterogeneous lookup for unordered containers (P0919R3).
Sat, Jun 22, 10:48 AM
zoecarver added a comment to D58879: Implement uses-allocator (P0591R4).

Please make sure that you implement LWG 3185 as part of this patch

Sat, Jun 22, 10:48 AM

Sat, Jun 15

zoecarver added inline comments to D60666: Fix some constexpr members in array<T, 0>.
Sat, Jun 15, 11:57 AM

Thu, Jun 13

zoecarver updated the diff for D63230: Add observer_ptr.
  • new header things
Thu, Jun 13, 11:52 PM
zoecarver updated the diff for D63230: Add observer_ptr.
  • fix overload resolution
Thu, Jun 13, 7:02 PM

Wed, Jun 12

zoecarver updated the diff for D62454: SFINAE on pair/tuple assignment operators 2729.
  • change name of helper struct
  • update constness and value type of type trait
Wed, Jun 12, 5:43 PM
zoecarver created D63230: Add observer_ptr.
Wed, Jun 12, 3:30 PM
zoecarver added a comment to D63154: Make GCC in C++03 Unsupported.

A few things:

  • Can / should we update lit or the lit config?
  • When I run the tests in gnu++03 mode, I don't get error "libc++ does not support using GCC with C++03. Please enable C++11". Maybe I am doing something wrong, though.
  • In all fairness, the reason (most of) the tests fail is not because of g++03 but because they are disabled for c++03 and not gnu++03.
Wed, Jun 12, 10:02 AM · Restricted Project

Mon, Jun 10

zoecarver added a comment to D61878: Change how containers are compared .

Also, here are some more benchmarks because I technically changed the comparison function (and also, why not?):

-------------------------------------------------------------------------------------
Benchmark                                          Time             CPU   Iterations
-------------------------------------------------------------------------------------
initialize_data                                0.000 ns        0.000 ns            0
test_old/OLD_compare_small_set                 72746 ns        72391 ns        10212
test_new/NEW_compare_small_set                 27201 ns        27132 ns        24270
test_old/OLD_compare_similar_set              100853 ns       100354 ns         7101
test_new/NEW_compare_similar_set               22151 ns        22101 ns        28880
test_old/OLD_compare_big_set                85456872 ns     85059167 ns            6
test_new/NEW_compare_big_set                78148398 ns     78032222 ns            9
test_old/OLD_compare_big_set_different      80389034 ns     80301000 ns            9
test_new/NEW_compare_big_set_different      76252136 ns     76169200 ns           10
test_old/OLD_compare_oposite_order_set     338906270 ns    338359500 ns            2
test_new/NEW_compare_oposite_order_set     308761215 ns    308473500 ns            2
test_old/OLD_compare_random_set             11021038 ns     11011500 ns           56
test_new/NEW_compare_random_set              3717716 ns      3710818 ns          192
test_old/OLD_compare_random_set_different       2720 ns         2718 ns       261663
test_new/NEW_compare_random_set_different       2674 ns         2671 ns       260192
test_old/OLD_compare_short_string            2381223 ns      2377644 ns          295
test_new/NEW_compare_short_string             680146 ns       679617 ns          991
test_old/OLD_compare_long_string            19782950 ns     19765727 ns           33
test_new/NEW_compare_long_string             2370050 ns      2367704 ns          301
test_old/OLD_compare_different_strings          2068 ns         2064 ns       343178
test_new/NEW_compare_different_strings          2046 ns         2043 ns       346945

and (to be fair to the times this function was slower):

-------------------------------------------------------------------------------------
Benchmark                                          Time             CPU   Iterations
-------------------------------------------------------------------------------------
initialize_data                                0.000 ns        0.000 ns            0
test_old/OLD_compare_small_set                 72221 ns        71934 ns         8892
test_new/NEW_compare_small_set                 30014 ns        29660 ns        25674
test_old/OLD_compare_similar_set              107336 ns       106814 ns         6611
test_new/NEW_compare_similar_set               23795 ns        23757 ns        29510
test_old/OLD_compare_big_set                87814006 ns     87564750 ns            8
test_new/NEW_compare_big_set                77258477 ns     77124000 ns            9
test_old/OLD_compare_big_set_different      86371487 ns     86087222 ns            9
test_new/NEW_compare_big_set_different      79709931 ns     79506000 ns            8
test_old/OLD_compare_oposite_order_set     351100203 ns    349060500 ns            2
test_new/NEW_compare_oposite_order_set     312774516 ns    312366000 ns            2
test_old/OLD_compare_random_set             11675568 ns     11655017 ns           58
test_new/NEW_compare_random_set              3614458 ns      3611199 ns          196
test_old/OLD_compare_random_set_different       2807 ns         2802 ns       229585
test_new/NEW_compare_random_set_different       3031 ns         3022 ns       241292
test_old/OLD_compare_short_string            2557198 ns      2545343 ns          274
test_new/NEW_compare_short_string             739160 ns       736574 ns          976
test_old/OLD_compare_long_string            17619450 ns     17561594 ns           32
test_new/NEW_compare_long_string             2347907 ns      2343063 ns          284
test_old/OLD_compare_different_strings           134 ns          133 ns      5265256
test_new/NEW_compare_different_strings           147 ns          146 ns      4736707
Mon, Jun 10, 8:47 PM
zoecarver updated the diff for D61878: Change how containers are compared .
  • updated based on Eric's suggestions
Mon, Jun 10, 8:42 PM
zoecarver added inline comments to D61878: Change how containers are compared .
Mon, Jun 10, 8:36 PM
zoecarver added inline comments to D44865: [libc++] Implement P0608R3 - A sane variant converting constructor.
Mon, Jun 10, 8:23 PM · Restricted Project
zoecarver added inline comments to D63053: Add nullptr output operator overload (2221).
Mon, Jun 10, 7:59 PM
zoecarver updated the diff for D63053: Add nullptr output operator overload (2221).
  • update status
  • fix operator implementation
Mon, Jun 10, 7:59 PM
zoecarver updated the diff for D63053: Add nullptr output operator overload (2221).
  • fix inlining
  • fix visibility
  • fix "nullptr" output value
  • update tests
Mon, Jun 10, 11:47 AM
zoecarver added inline comments to D63053: Add nullptr output operator overload (2221).
Mon, Jun 10, 8:06 AM

Sun, Jun 9

zoecarver added a comment to D44865: [libc++] Implement P0608R3 - A sane variant converting constructor.

A few minor things:

  • the spacing is different from the rest of libc++ (a lot of it was that way before).
  • since this is a paper it should probably be guarded with #if _LIBCPP_STD_VER > 17
  • update the status in www.
Sun, Jun 9, 8:54 PM · Restricted Project

Sat, Jun 8

zoecarver created D63053: Add nullptr output operator overload (2221).
Sat, Jun 8, 4:35 PM
zoecarver created D63051: Test regex match ambiguity (2273).
Sat, Jun 8, 2:18 PM
zoecarver added a comment to D63050: Test that correct value category is used in scoped_allocator_adaptor::construct.

It doesn't compile because Alloc1 is convertible to Alloc2, and when it makes the conversion it can turn into either value category (thanks to Eric for explaining). Anyhow, given that bit of information I do not see how the pair portion of this issue can be tested (or how the change matters for pairs).

Sat, Jun 8, 1:56 PM
zoecarver added a comment to D63047: [libc++] Fix leading zeros in std::to_chars.

The example in the bug doesn't work: std::to_chars(buf, buf + 100, (unsigned long)0xffffffff).

Edit: it outputs 0004294967295.

Hi,

Hmm, are you sure?
I've just tested fixed version of std::to_chars and std::to_chars(buf, buf + 100, (unsigned long)0xffffffff) produces 4294967295 as expected.

May be you didn't recompile implementation before run lit tests?

Sat, Jun 8, 1:50 PM · Restricted Project
zoecarver added a comment to D63047: [libc++] Fix leading zeros in std::to_chars.

The example in the bug doesn't work: std::to_chars(buf, buf + 100, (unsigned long)0xffffffff).

Sat, Jun 8, 10:55 AM · Restricted Project
zoecarver created D63050: Test that correct value category is used in scoped_allocator_adaptor::construct.
Sat, Jun 8, 10:28 AM
zoecarver added a comment to D63050: Test that correct value category is used in scoped_allocator_adaptor::construct.

For the pair section of the issue, I ran into a few problems. The genesis of the problem is the fact that this compiles (and I can't figure out why):

Sat, Jun 8, 10:28 AM
zoecarver added inline comments to D58879: Implement uses-allocator (P0591R4).
Sat, Jun 8, 9:10 AM

Fri, Jun 7

zoecarver added inline comments to D58879: Implement uses-allocator (P0591R4).
Fri, Jun 7, 5:21 PM
zoecarver added a comment to D58879: Implement uses-allocator (P0591R4).

As I have worked through fixing all the issues around this patch, I think I have come to the two root problems. First, using forward_as_tuple makes it so that the tuple cannot be copied (rightfully so) and are therefore useless in make_from_tuple. Here is an example. This should probably be fixed with an LWG issue (either to change what tuples can be copied or update make_from_tuple). Second, and more important, the expression forward_as_tuple(move(p).second) is unable to preserve rvalueness of a type. Here is an example. I think the paper either needs to be updated or an issue needs to be presented to fix this (I am happy to write that issue). What are your thoughts @mclow.lists, @EricWF, and @Quuxplusone?

Fri, Jun 7, 5:08 PM

Thu, Jun 6

zoecarver abandoned D60371: Add lerp function to cmath (P0811R3).

Already implemented (better) by Marshall.

Thu, Jun 6, 8:16 PM
zoecarver abandoned D60032: Add execution header.

@ldionne's got this :)

Thu, Jun 6, 8:15 PM
zoecarver abandoned D57403: Extending make_shared to Support Arrays (Partially) - P0674R1.

Abandoned in favor of D62641

Thu, Jun 6, 8:09 PM
zoecarver planned changes to D58879: Implement uses-allocator (P0591R4).
Thu, Jun 6, 8:09 PM
zoecarver added inline comments to D58879: Implement uses-allocator (P0591R4).
Thu, Jun 6, 8:06 PM
zoecarver added inline comments to D62259: shared_ptr changes from library fundamentals (P0414R2).
Thu, Jun 6, 8:01 PM
zoecarver updated the diff for D62259: shared_ptr changes from library fundamentals (P0414R2).
  • fix test issues
  • fix diff issues
  • fix void issues
Thu, Jun 6, 8:01 PM
zoecarver added inline comments to D62259: shared_ptr changes from library fundamentals (P0414R2).
Thu, Jun 6, 7:39 PM
zoecarver added a comment to D62641: Support arrays in make_shared and allocate_shared (P0674R1).

I think D62760 is a good stepping stone for this patch because of the implementation similarities. Once it has been reviewed, I can update this patch with the changes.

Thu, Jun 6, 6:45 PM
zoecarver updated the diff for D62103: Update shared_ptr tests to match the standard.
  • update tests based on the review
  • general test fixes
Thu, Jun 6, 6:38 PM
zoecarver added inline comments to D62103: Update shared_ptr tests to match the standard.
Thu, Jun 6, 6:35 PM
zoecarver added a comment to D61878: Change how containers are compared .

Any more thoughts on this? Friendly ping if you have time to look over it again.

Thu, Jun 6, 6:13 PM
zoecarver updated the diff for D61170: Use std::move in numeric algorithms.
  • general fixes
  • update test versions
  • update c++03 issue
Thu, Jun 6, 6:13 PM
zoecarver added a comment to D60666: Fix some constexpr members in array<T, 0>.

@EricWF do you still have issues with this patch?

Thu, Jun 6, 5:41 PM

Wed, Jun 5

zoecarver added inline comments to D62928: Constrain function assignment operator (2574).
Wed, Jun 5, 2:51 PM
zoecarver added a comment to D62932: Update status.

@ldionne I talked with @mclow.lists about this because I was wondering the same thing. He is looking into it.

Wed, Jun 5, 2:45 PM
zoecarver updated the diff for D62932: Update status.
  • mark another issue complete
Wed, Jun 5, 2:43 PM
zoecarver added inline comments to D62928: Constrain function assignment operator (2574).
Wed, Jun 5, 2:34 PM
zoecarver updated the diff for D62932: Update status.
  • updated wrong issue (oops)
Wed, Jun 5, 2:27 PM
zoecarver created D62932: Update status.
Wed, Jun 5, 2:23 PM
zoecarver added inline comments to D62928: Constrain function assignment operator (2574).
Wed, Jun 5, 12:55 PM
zoecarver created D62928: Constrain function assignment operator (2574).
Wed, Jun 5, 12:55 PM
zoecarver created D62921: Constrain shared_ptr(Y*) - 2874.
Wed, Jun 5, 11:01 AM
zoecarver updated the diff for D62454: SFINAE on pair/tuple assignment operators 2729.
  • remove fail tests
  • update pass tests
Wed, Jun 5, 9:21 AM

Tue, Jun 4

zoecarver added inline comments to D62889: rvalue stream operators (1203 and 2534).
Tue, Jun 4, 9:11 PM
zoecarver updated the diff for D62889: rvalue stream operators (1203 and 2534).
  • update status
Tue, Jun 4, 9:11 PM
zoecarver created D62889: rvalue stream operators (1203 and 2534).
Tue, Jun 4, 9:04 PM

Sat, Jun 1

zoecarver abandoned D61293: Fix make_from_tuple when given a tuple containing rvalues.
Sat, Jun 1, 9:49 AM
zoecarver added inline comments to D43159: Modernize: Use nullptr more..
Sat, Jun 1, 9:13 AM

Fri, May 31

zoecarver added inline comments to D62259: shared_ptr changes from library fundamentals (P0414R2).
Fri, May 31, 7:18 PM
zoecarver added inline comments to D62233: General shared_ptr cleanup.
Fri, May 31, 6:46 PM
zoecarver updated the diff for D62760: allocate_shared should call allocator_traits::construct.
  • update fail tests
Fri, May 31, 4:37 PM
zoecarver created D62760: allocate_shared should call allocator_traits::construct.
Fri, May 31, 4:36 PM

Thu, May 30

zoecarver added inline comments to D62641: Support arrays in make_shared and allocate_shared (P0674R1).
Thu, May 30, 8:26 PM

Wed, May 29

zoecarver added inline comments to D62641: Support arrays in make_shared and allocate_shared (P0674R1).
Wed, May 29, 7:30 PM
zoecarver created D62641: Support arrays in make_shared and allocate_shared (P0674R1).
Wed, May 29, 7:25 PM

May 27 2019

zoecarver added a comment to D62451: Regex backreference [1/3] Fixes backreferences for extended grammar..

Ah yes, I didn't see that patch. I will defer to the code-owners on this, but my $0.02 are, if this patch were a feature or added/removed functionality I would say add the tests to this patch. But, because this patch only fixes a small bug, it should be OK if the tests come later. If for whatever reason the other patch does not make it, you will have to remember to make another patch with the tests.

May 27 2019, 3:05 PM · Restricted Project
zoecarver added inline comments to D62259: shared_ptr changes from library fundamentals (P0414R2).
May 27 2019, 11:42 AM
zoecarver updated the diff for D62259: shared_ptr changes from library fundamentals (P0414R2).
  • Add unsupported and _NOEXCEPT. Now works in C++03.
May 27 2019, 11:37 AM
zoecarver updated the diff for D62233: General shared_ptr cleanup.
  • fix, so it works in c++03
May 27 2019, 11:29 AM
zoecarver updated the diff for D62259: shared_ptr changes from library fundamentals (P0414R2).
  • fully implement the paper
  • add tests
May 27 2019, 11:20 AM
zoecarver closed D62468: String tests include "test_macros.h".
May 27 2019, 9:50 AM
zoecarver added a comment to D62468: String tests include "test_macros.h".

Sorry if you spent a lot of time looking over this. I meant to close it (and forgot). Marshall and I talked a bit about this, and he is going to "take over" and commit the other ~3200 files that need changes.

May 27 2019, 9:45 AM

May 26 2019

zoecarver created D62468: String tests include "test_macros.h".
May 26 2019, 12:02 PM
zoecarver updated the diff for D62233: General shared_ptr cleanup.
  • fix typedef order (sorry for repetitive updates).
May 26 2019, 9:14 AM
zoecarver updated the diff for D62233: General shared_ptr cleanup.
  • remove static member functions shared_ptr::make_shared and shared_ptr::allocate_shared (and move their contents to the correct place).
May 26 2019, 9:09 AM
zoecarver added a comment to D62451: Regex backreference [1/3] Fixes backreferences for extended grammar..

Maybe add a test to ensure that the correct error is thrown?

May 26 2019, 9:00 AM · Restricted Project

May 25 2019

zoecarver created D62454: SFINAE on pair/tuple assignment operators 2729.
May 25 2019, 12:13 PM

May 23 2019

zoecarver added inline comments to D62228: Make `vector` unconditionally move elements when exceptions are disabled..
May 23 2019, 5:47 PM · Restricted Project
zoecarver added inline comments to D60491: Fix fpos requirements & cleanup .
May 23 2019, 5:13 PM
zoecarver added a comment to D55840: P0722R3: Implement library support for destroying delete.

I don't think P0722 got checked off in the 2a status.

May 23 2019, 5:01 PM
zoecarver updated the diff for D62274: shared_ptr deleter requirements (2802).
  • fix static asserts
  • make compliant with C++11
  • fix 2875
  • update tests
May 23 2019, 4:53 PM
zoecarver added inline comments to D62103: Update shared_ptr tests to match the standard.
May 23 2019, 11:24 AM
zoecarver updated the diff for D62103: Update shared_ptr tests to match the standard.
  • remove spacing only changes
  • fix versioning
  • fix based on review
May 23 2019, 11:24 AM
zoecarver added a comment to D62103: Update shared_ptr tests to match the standard.

This patch is not the quality I would have liked. When I rolled back some of the changes I made, it left only whitespace changes which were not intentional. I also should have run the tests for 11, 14, and 17. When I updated this patch, I did not understand what versions of C++ shared_ptr was supported in. That is why I removed many of the C++11 checks and support for C++03 test cases. I will fix the issues around versioning and white space.

May 23 2019, 9:48 AM

May 22 2019

zoecarver updated the diff for D62233: General shared_ptr cleanup.
  • re-add functions for _LIBCPP_HAS_NO_VARIADICS
May 22 2019, 7:56 PM
zoecarver created D62274: shared_ptr deleter requirements (2802).
May 22 2019, 5:04 PM
zoecarver updated the diff for D62103: Update shared_ptr tests to match the standard.
  • white space
  • a few test issues
May 22 2019, 10:45 AM
zoecarver created D62259: shared_ptr changes from library fundamentals (P0414R2).
May 22 2019, 8:45 AM
zoecarver added a comment to D62233: General shared_ptr cleanup.

I thought shared_ptr was not introduced until C++11?

May 22 2019, 8:35 AM
zoecarver updated the diff for D62233: General shared_ptr cleanup.
  • remove changes to control block around compressed_pair
May 22 2019, 8:26 AM
zoecarver updated the diff for D60491: Fix fpos requirements & cleanup .
  • remove changes to fpos
May 22 2019, 8:19 AM
zoecarver added inline comments to D60491: Fix fpos requirements & cleanup .
May 22 2019, 7:41 AM
zoecarver added a comment to D62233: General shared_ptr cleanup.

Thanks for the explanation @mclow.lists I didn't fully understand the importance of using compressed_pair (or that removing it would cause an ABI break). I don't have a "good" reason for removing compressed_pair other than, I got tired of typing out .second().second() and remembering which child class uses which order of elements (which is not a good reason). I will remove that change.

May 22 2019, 7:36 AM

May 21 2019

zoecarver created D62233: General shared_ptr cleanup.
May 21 2019, 10:05 PM

May 18 2019

zoecarver created D62103: Update shared_ptr tests to match the standard.
May 18 2019, 1:31 PM

May 16 2019

zoecarver updated the diff for D60491: Fix fpos requirements & cleanup .
  • remove unneeded assignment operator
  • move tests to correct location
May 16 2019, 6:03 PM
zoecarver added inline comments to D60491: Fix fpos requirements & cleanup .
May 16 2019, 5:52 PM
zoecarver updated the diff for D60491: Fix fpos requirements & cleanup .
  • update & add tests
  • update synopsis
  • clean up members / operators
May 16 2019, 5:49 PM
zoecarver abandoned D58789: Add polymorphic_allocator methods (P0339r5).

I am closing this patch until std::pmr is implemented.

May 16 2019, 3:55 PM
zoecarver updated the diff for D61878: Change how containers are compared .

I made a mistake and did not update the comparison function correctly, so most of the optimizations were not applied. No wonder it was giving such a weird benchmark score. Now that I have updated the comparison function, it is faster every time (with the exception of the last string test which goes back and forth):

May 16 2019, 11:58 AM
zoecarver added inline comments to D61878: Change how containers are compared .
May 16 2019, 11:36 AM