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
stjepang's profile
Stjepan Glavina
Stjepan Glavina
Stjepan Glavina
@stjepang

Tweets

Stjepan Glavina

@stjepang

async runtimes and concurrency primitives in @rustlang he/they (available for hire)

Berlin, Germany
stjepang.github.io
Joined October 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. Stjepan Glavina‏ @stjepang Mar 25
      • Report Tweet
      • Report NetzDG Violation

      Let's replace JoinHandle<T> with a new type simply called Task<T> that is very similar except it also acts like a guard that cancels the task when dropped. Task<T> is an awaitable future that resolves to a value of type T, which is the task's result. 11/29

      2 replies 0 retweets 6 likes
      Show this thread
    2. Stjepan Glavina‏ @stjepang Mar 25
      • Report Tweet
      • Report NetzDG Violation

      When a task is cancelled, it gets immediately woken and the next time the executor takes it out from the task queue, it will be simply dropped. Automatic cancellation is one of the core tenets of structured concurrency. 12/29

      1 reply 0 retweets 3 likes
      Show this thread
    3. Stjepan Glavina‏ @stjepang Mar 25
      • Report Tweet
      • Report NetzDG Violation

      Task<T> is also marked with #[must_use], so if you accidentally drop it without ever using it, the compiler warns you. That aligns closely with how futures typically work - dropping a future implies its cancellation. 13/29pic.twitter.com/dqAI9mWFUY

      1 reply 0 retweets 6 likes
      Show this thread
    4. Stjepan Glavina‏ @stjepang Mar 25
      • Report Tweet
      • Report NetzDG Violation

      If you want to keep the task running in the background with no strings attached, forget() its Task<T> handle. 14/29pic.twitter.com/USMwYCt1pL

      2 replies 0 retweets 2 likes
      Show this thread
    5. Stjepan Glavina‏ @stjepang Mar 25
      • Report Tweet
      • Report NetzDG Violation

      But here's the catch: you can only forget() tasks that resolve to (), which means you can't accidentally forget() a task that resolves to a Result or some other type. Now spawn(process(stream)) doesn't even compile - problem solved! 15/29

      2 replies 0 retweets 9 likes
      Show this thread
    6. Stjepan Glavina‏ @stjepang Mar 25
      • Report Tweet
      • Report NetzDG Violation

      The compiler now requires us to unwrap results in spawned tasks. But it'd be nice to have some API sugar here that is not as verbose as this... 16/29pic.twitter.com/YB7eLhDSgh

      1 reply 0 retweets 2 likes
      Show this thread
    7. Stjepan Glavina‏ @stjepang Mar 25
      • Report Tweet
      • Report NetzDG Violation

      What if there were unwrap() and expect() methods on Task<Result<T,E>> that transform it into Task<T> and panic on error? Those methods spawn a new task that simply unwraps the result and returns the success value. 17/29pic.twitter.com/7eQfRDqSN8

      1 reply 0 retweets 2 likes
      Show this thread
    8. Stjepan Glavina‏ @stjepang Mar 25
      • Report Tweet
      • Report NetzDG Violation

      Now we can do spawn(process(stream)).unwrap().forget(), which is pretty nice! This is what the entire TCP echo server looks like in my new runtime I'm working on. 18/29pic.twitter.com/H9Z2Nm9TOJ

      3 replies 0 retweets 11 likes
      Show this thread
    9. kero‏ @Kerollmops Mar 25
      • Report Tweet
      • Report NetzDG Violation
      Replying to @stjepang

      I was wondering about how the Async type works internally, as you said in another thread it is only a wrapper around anything Read + Write, so in definitive it can't use the power of poll/kqueue/select and every Async type must but used in a given thread or something?

      2 replies 0 retweets 1 like
    10. kero‏ @Kerollmops Mar 25
      • Report Tweet
      • Report NetzDG Violation
      Replying to @Kerollmops @stjepang

      What I am saying is that if the Async struct can accept anything Read + Write wihtout knowing the internal type it cannot force the type to be nonblocking or anything, and it cannot ask for the rawsocket to use it in any system polling function (poll/kqueue/select).

      1 reply 0 retweets 1 like
      Stjepan Glavina‏ @stjepang Mar 25
      • Report Tweet
      • Report NetzDG Violation
      Replying to @Kerollmops

      The Async::nonblocking() constructor that converts a T into Async<T> requires you to promise that T has been set into non-blocking mode. Take a look at this implementation of Async<UdpSocket>::bind() to see how that works in practice.pic.twitter.com/qKcOgUA29G

      10:00 AM - 25 Mar 2020
      • 1 Like
      • kero
      0 replies 0 retweets 1 like

      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