Skip to content
By using Twitter’s services you agree to our Cookies Use. We and our partners operate globally and use cookies, including for analytics, personalisation, and ads.

This is the legacy version of twitter.com. We will be shutting it down on June 1, 2020. Please switch to a supported browser, or disable the extension which masks your browser. You can see a list of supported browsers in our Help Center.

  • Home Home Home, current page.
  • About

Saved searches

  • Remove
  • In this conversation
    Verified accountProtected Tweets @
Suggested users
  • Verified accountProtected Tweets @
  • Verified accountProtected Tweets @
  • Language: English
    • Bahasa Indonesia
    • Bahasa Melayu
    • Català
    • Čeština
    • Dansk
    • Deutsch
    • English UK
    • Español
    • Filipino
    • Français
    • Hrvatski
    • Italiano
    • Magyar
    • Nederlands
    • Norsk
    • Polski
    • Português
    • Română
    • Slovenčina
    • Suomi
    • Svenska
    • Tiếng Việt
    • Türkçe
    • Ελληνικά
    • Български език
    • Русский
    • Српски
    • Українська мова
    • עִבְרִית
    • العربية
    • فارسی
    • मराठी
    • हिन्दी
    • বাংলা
    • ગુજરાતી
    • தமிழ்
    • ಕನ್ನಡ
    • ภาษาไทย
    • 한국어
    • 日本語
    • 简体中文
    • 繁體中文
  • Have an account? Log in
    Have an account?
    · Forgot password?

    New to Twitter?
    Sign up
pcwalton's profile
Patrick Walton
Patrick Walton
Patrick Walton
@pcwalton

Tweets

Patrick Walton

@pcwalton

Research engineer at Mozilla

San Francisco, CA
pcwalton.github.io
Joined November 2009

Tweets

  • © 2020 Twitter
  • About
  • Help Center
  • Terms
  • Privacy policy
  • Imprint
  • Cookies
  • Ads info
Dismiss
Previous
Next

Go to a person's profile

Saved searches

  • Remove
  • In this conversation
    Verified accountProtected Tweets @
Suggested users
  • Verified accountProtected Tweets @
  • Verified accountProtected Tweets @

Promote this Tweet

Block

  • Tweet with a location

    You can add location information to your Tweets, such as your city or precise location, from the web and via third-party applications. You always have the option to delete your Tweet location history. Learn more

    Your lists

    Create a new list


    Under 100 characters, optional

    Privacy

    Copy link to Tweet

    Embed this Tweet

    Embed this Video

    Add this Tweet to your website by copying the code below. Learn more

    Add this video to your website by copying the code below. Learn more

    Hmm, there was a problem reaching the server.

    By embedding Twitter content in your website or app, you are agreeing to the Twitter Developer Agreement and Developer Policy.

    Preview

    Why you're seeing this ad

    Log in to Twitter

    · Forgot password?
    Don't have an account? Sign up »

    Sign up for Twitter

    Not on Twitter? Sign up, tune into the things you care about, and get updates as they happen.

    Sign up
    Have an account? Log in »

    Two-way (sending and receiving) short codes:

    Country Code For customers of
    United States 40404 (any)
    Canada 21212 (any)
    United Kingdom 86444 Vodafone, Orange, 3, O2
    Brazil 40404 Nextel, TIM
    Haiti 40404 Digicel, Voila
    Ireland 51210 Vodafone, O2
    India 53000 Bharti Airtel, Videocon, Reliance
    Indonesia 89887 AXIS, 3, Telkomsel, Indosat, XL Axiata
    Italy 4880804 Wind
    3424486444 Vodafone
    » See SMS short codes for other countries

    Confirmation

     

    Welcome home!

    This timeline is where you’ll spend most of your time, getting instant updates about what matters to you.

    Tweets not working for you?

    Hover over the profile pic and click the Following button to unfollow any account.

    Say a lot with a little

    When you see a Tweet you love, tap the heart — it lets the person who wrote it know you shared the love.

    Spread the word

    The fastest way to share someone else’s Tweet with your followers is with a Retweet. Tap the icon to send it instantly.

    Join the conversation

    Add your thoughts about any Tweet with a Reply. Find a topic you’re passionate about, and jump right in.

    Learn the latest

    Get instant insight into what people are talking about now.

    Get more of what you love

    Follow more accounts to get instant updates about topics you care about.

    Find what's happening

    See the latest conversations about any topic instantly.

    Never miss a Moment

    Catch up instantly on the best stories happening as they unfold.

    1. DanielMicay‏ @DanielMicay 17 Apr 2019
      • Report Tweet
      • Report NetzDG Violation
      Replying to @DanielMicay @elazarl and

      Similarly, for std::shared_ptr, you are still going to be using references to it, including mutable references, which are extremely dangerous in C++ since they can invalidate other references to the contents by changing the length of a container, a dynamic type, variant type, etc

      1 reply 0 retweets 0 likes
    2. DanielMicay‏ @DanielMicay 17 Apr 2019
      • Report Tweet
      • Report NetzDG Violation
      Replying to @DanielMicay @elazarl and

      The std::shared_ptr design also encourages data races, since it goes out of the way to provide thread safety with extremely inefficient atomic reference counting, but doesn't provide a locking mechanism paired with it.

      1 reply 0 retweets 0 likes
    3. DanielMicay‏ @DanielMicay 17 Apr 2019
      • Report Tweet
      • Report NetzDG Violation
      Replying to @DanielMicay @elazarl and

      Weak pointers also make things even more unsafe for similar reasons as the baseline with unique pointers and shared pointers. Same applies to types like std::string. You have automatic free at end of scope, even after you've taken references / string views. Fundamental issue.

      1 reply 0 retweets 0 likes
    4. Elazar Leibovich‏ @elazarl 17 Apr 2019
      • Report Tweet
      • Report NetzDG Violation
      Replying to @DanielMicay @RichFelker @pcwalton

      And yet, with no get(), and only using the uniq_ptr directly, you avoid a whole class of problem, and you still convey the ownership information to the reader. You can still move ownership to other class. I can't see how it happen when using raw ptr only at the uniq_ptr scope.

      2 replies 0 retweets 0 likes
    5. Elazar Leibovich‏ @elazarl 17 Apr 2019
      • Report Tweet
      • Report NetzDG Violation
      Replying to @elazarl @DanielMicay and

      In fact I never ever used uniq_ptr::get() directly. I only used uptr->type. (shared_ptr has its issues, but its still better than C ptr generally speaking, rust gives a better scope compile time analysis, but C++ gives you some of that. It's not as good, but better than 0 of C)

      1 reply 0 retweets 0 likes
    6. DanielMicay‏ @DanielMicay 17 Apr 2019
      • Report Tweet
      • Report NetzDG Violation
      Replying to @elazarl @RichFelker @pcwalton

      C++ doesn't provide any compile-time safety from use-after-free, since references have no safety and are even implicit. Where are you even using std::unique_ptr? I don't find that there are many use cases for unique pointers other than implementing tree data structures.

      1 reply 0 retweets 0 likes
    7. DanielMicay‏ @DanielMicay 17 Apr 2019
      • Report Tweet
      • Report NetzDG Violation
      Replying to @DanielMicay @elazarl and

      A std::unique_ptr is no safer than a value on the stack, which is unsafe in C++. It only introduces the additional problems of having null pointer dereferences and encouraging use-after-move. The fundamental problem is that it frees when there are still active references.

      1 reply 0 retweets 0 likes
    8. DanielMicay‏ @DanielMicay 17 Apr 2019
      • Report Tweet
      • Report NetzDG Violation
      Replying to @DanielMicay @elazarl and

      Having that free as automatic / implicit certainly makes it harder to leak memory, but in the real world I don't think it improves safety. Many of the memory corruption bugs that I find are due to use-after-free largely missed due to implicit C++ destruction at the end of scope.

      1 reply 0 retweets 0 likes
    9. DanielMicay‏ @DanielMicay 17 Apr 2019
      • Report Tweet
      • Report NetzDG Violation
      Replying to @DanielMicay @elazarl and

      The most common bugs that I run into are issues like std::string going out of scope and an active reference still being used. https://en.cppreference.com/w/cpp/string/basic_string_view … is going to make that worse by offering an important performance feature used extensively in Rust, but it's totally unsafe in C++.

      1 reply 0 retweets 0 likes
    10. Elazar Leibovich‏ @elazarl 17 Apr 2019
      • Report Tweet
      • Report NetzDG Violation
      Replying to @DanielMicay @RichFelker @pcwalton

      Can you please explain how would you have references to uniq_ptr if you keep the idiom of never using get()? Yes, iterators are evil b/c use after free. With string or vector. This is not the case in uniq_ptr. (Tree structure is immensely useful.)

      1 reply 0 retweets 0 likes
      Patrick Walton‏ @pcwalton 17 Apr 2019
      • Report Tweet
      • Report NetzDG Violation
      Replying to @elazarl @DanielMicay @RichFelker

      vector<unique_ptr<Foo>> v; v.push_back(std::make_unique(Foo())); Foo& foo = v[0]; v.clear(); http://foo.bar (); // UB

      1:38 PM - 17 Apr 2019
      • 2 Likes
      • Syahmi SHM Elazar Leibovich
      2 replies 0 retweets 2 likes
        1. DanielMicay‏ @DanielMicay 17 Apr 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @pcwalton @elazarl @RichFelker

          Generally std::unique_ptr isn't really the problem itself, it just doesn't do anything to help, and makes things slightly worse by introducing null pointer dereferences as an issue. Most modern C++ code doesn't need std::unique_ptr just like Box<T> is rarely used in Rust.

          0 replies 0 retweets 2 likes
          Thanks. Twitter will use this to make your timeline better. Undo
          Undo
        1. New conversation
        2. Elazar Leibovich‏ @elazarl 17 Apr 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @pcwalton @DanielMicay @RichFelker

          Um, yeah. You leaked reference to the vector. You could've put anything in the vector. uniq_ptr is just a red herring here That's my point, @DanielMicay 's point about references (=raw ptr) are evil is great. Not relevant to uniq_ptr w/o get(), which is the common use case AFAIK

          1 reply 0 retweets 0 likes
        3. DanielMicay‏ @DanielMicay 17 Apr 2019
          • Report Tweet
          • Report NetzDG Violation
          Replying to @elazarl @pcwalton @RichFelker

          All I'm saying is std::unique_ptr does nothing to help. It's slightly less safe to have `std::unique_ptr<T> foo` than `T foo` since it can be null and encourages moving, but other than that it makes little difference. It's best avoided unless you really need lighter moves/swaps.

          1 reply 0 retweets 0 likes
        4. 4 more replies

      Loading seems to be taking a while.

      Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.

        Promoted Tweet

        false

        • © 2020 Twitter
        • About
        • Help Center
        • Terms
        • Privacy policy
        • Imprint
        • Cookies
        • Ads info