#rust-lang

/

      • cp joined the channel
      • cp has quit
      • cp joined the channel
      • kimundi has quit
      • kimundi joined the channel
      • eijebong has quit
      • kimundi has quit
      • kimundi joined the channel
      • cp has quit
      • cp joined the channel
      • Zoxc joined the channel
      • Tobba has quit
      • Tobba joined the channel
      • Aaronepower joined the channel
      • nagisa joined the channel
      • scottmcm is now known as
      • Guest49 has quit
      • eijebong joined the channel
      • acrichto has quit
      • acrichto joined the channel
      • Aaron1011 joined the channel
      • shiro has quit
      • AstralSorcerer has quit
      • chill joined the channel
      • japaric has quit
      • japaric joined the channel
      • acrichto has quit
      • acrichto joined the channel
      • cp has quit
      • kennytm has quit
      • Rusky has quit
      • Rusky joined the channel
      • RalfJ
        eddyb: I'm definitely super-excited about all the people now coming up with safe interfaces for low-level stuff. as I keep saying, the most powerful part of rust for me is the expressivity of its type-system -- the amount of things you can give safe interfaces to. I was impressed by iterators and interior pointers, turns out that was just the start. now we have pinned memory and (likely) interior collections. what's next?
      • (that was replying to a think you hightled me in, which may have been some days ago... sorry^^)
      • I also love how "this library is safe to use" is something that both is easy to understand and has a precise formal meaning.
      • nox
        reem_: Hey there!
      • reem_: I pinged you on some of your repositories-- oh I see mbrubeck pinged you about it yesterday evening already. It would be really appreciated if you added maintainers.
      • Or we will need to fork all your stuff, which would be unfortunate.
      • centril
        RalfJ: I think GATs will be the massive new enabler here
      • I think it will even be possible to define an Arbitrary trait which you can impl for &'a T where T: Arbitrary; which will be pretty cool
      • rkruppe
        centril: GATs enable lots of things but will safe abstractions over dangerous operations be among them? Arbitrary is safe all the way down
      • centril
        rkruppe: Arbitrary for &'a T is impossible right now ;)
      • rkruppe
        sure
      • centril
        rkruppe: GATs will enable you to have a better refl encoding that works for all functors, so that is making the safe abstraction over something unsafe better
      • rkruppe
        but it seems this is partly due to a lack of expressivity _in general_ (not specifically related to making unsafe stuff safe) and insofar it's not possible to "do it safely" it's just the price we pay for having &T in the first place
      • whereas for example self-references normally require unsafety if it's possible at all, period, and now rust can do it safely
      • centril
        rkruppe: So I think GATs will mostly give you unification and flexibility for already existing safe interfaces over unsafe code
      • but it is a massive boost in expressivity of the type system in general
      • which will help low level code
      • as well =)
      • (low level == bare metal here)
      • rkruppe: in any case, yay for GATs :P
      • rkruppe
        yeah :)
      • centril
        rkruppe: HKTs would be also nice so you can have those sweet sweet adjunctions F -| G
      • centril watched a talk about adjunctions yesterday and was impressed
      • kennytm joined the channel
      • shiro joined the channel
      • aismallard has quit
      • est31: yeah no, people intentionally sticking with try! is probably not a concern of mine ;)
      • est31
        centril: thanks to attitudes like yours, rust is becoming less and less a stable language
      • and more one of those moving target crap things
      • like those javascript frameworks where if you start using one, it gets outdated the week after
      • rkruppe
        chill
      • est31
        why should I use the 2018 epoch at all
      • centril
        est31: that's... a lot of hyperbole?
      • rkruppe
        also wtf is this about? did i miss an rfc?
      • est31
      • centril
        rkruppe: try { .. } expressions
      • est31
        centril: why should I opt into the 2018 epoch
      • nox
        The current semantics of catch { … } are IMO super bad.
      • est31
        who guarantees me that it will mean anything
      • centril
        est31: do you want dyn, GATs, const generics, etc.?
      • est31
        in 1 year you might say "scrap rust, use typescript instead"
      • centril: const generics hahahaha
      • nox
        The part where catch { foo? } == foo instead of catch { foo } == foo.
      • est31
        as if they will get added to the language ever
      • and even if
      • they certainly wont make it till the 2018 epoch
      • rkruppe
        est31: i don't know what issues you have but it seems at best tangentially related to the try {} rfc
      • nox
        centril: I *really* dislike that we will need to opt in new epoch for things that shouldn't require a new epoch.
      • est31
        at least given all of the statements by people on this
      • anyway I dont want to get distracted
      • breakage = shit
      • no breakage = leet
      • 2020 epoch might have entirely different patterns altogether
      • didnt sign up for any of this shit
      • nox
        est31: I somehow read "leet" as "leek" and was super confused.
      • est31
        but its free so I better shut up I guess... not my money you are wasting
      • centril
        est31: again; this is a lot of hyperbole. given rustfix, it will hopefully be trivial to switch up to a new edition
      • est31
        not if you cant use rustfix because it introduces ? everywhere
      • & you cant turn it off
      • nox
        centril: Where is rustfix?
      • centril
        nox: what do you mean by 'where' ?
      • est31
        again, why should I switch to the 2018 epoch? Why not wait until there is a 2020 epoch with its own set of breakages?
      • or a 2022 one
      • nox
        centril: I was under water for a few weeks, so did rustfix happen when I wasn't looking?
      • rkruppe
        est31: "why should I switch to rust 1.25? why not wait until there is rust 1.28"?
      • nox
        rkruppe: That's different.
      • rkruppe
        est31: the only substantial thing I could tease out so far is that you don't want rustfix to rewrite try!() to ?, in which case it seems like a small feature to request from rustfix developers or even hack in yourself
      • centril
        nox: the status for 2 april is "not started" but it should be done by the launch of the new edition hopefully ;)
      • nox
        centril: I have trouble believing it will be ready in time, hope I'll be wrong on that.
      • centril
        nox: *crosses fingers*
      • est31
        lol nox
      • steveklabnik
        est31: don't attack other contributors nor javascript frameworks. come on.
      • nox
        est31: You should opt in Rust 2018 to have a non-broken implementation of derive(PartialOrd) /s
      • steveklabnik
        nox: what things are you thinking of re- shouldn't require an epoch?
      • nox
        steveklabnik: Everything that isn't introducing breakage.
      • steveklabnik
        then i'm confused as to what you're talking about
      • centril
        est31: honestly, if all I did was focus on what can be reasonably described as trivial lexical syntax differences, I could absolutely 100% not use Rust; it is has radically different syntax, but I am able to use both Rust and Haskell despite these differences
      • steveklabnik
        because you shouldn't have to?
      • nox
        steveklabnik: centril was implying I should.
      • steveklabnik: I was replying to "14:08 <centril> est31: do you want dyn, GATs, const generics, etc.?"
      • steveklabnik
        ah, well dyn has *some* breakage. but is still usable on 2015. the other two are also not epoch-specific as far as i know
      • centril
        nox: well, it is possible that some of these might be in edition 2015 ofc
      • rkruppe
        https://internals.rust-lang.org/t/should-we-res... implies async/await would be 2018-and-later-only
      • nox
        async/await isn't introducing any breakage, right?
      • steveklabnik
        the macros 2.0 version works right now
      • nox
        Oh, as keywords, ok.
      • centril
        rkruppe: yes; the draft keyword policy we made yesterday was that; see: https://paper.dropbox.com/doc/Keyword-policy-Sm...
      • nox: basically: new features with keywords => real keywords, old features => contextual
      • rkruppe
        but there is the option of having them as contextual keywords in the old edition
      • centril
        [union, dyn] => contextual, new stuff => real
      • nox
        centril: Current async/await uses neither for now.
      • rkruppe
        so in that sense the breakage is not inherent
      • centril
        rkruppe: right; but it seemed like we wanted to opt for less maintenance
      • rkruppe
        i'm not trying to dispute the decision
      • centril
        rkruppe: sorry, im just clarifying / relaying the info =)
      • rkruppe
        i'm just saying these are features that could work perfectly fine in 2015 but the team(s) decided not to support them there
      • nox
        I'm not either, I'm just super worried about new features landing in new epochs only just because epochs exist at all.
      • centril
        y'all stop saying epoch :P my brain is going to melt ^,-
      • centril is trying really hard to always say 'edition'
      • nox
        This is IRC.
      • rkruppe
        est31: also fwiw thanks to raw identifiers you don't *need* to rename anything for the new epoch (though the invocation does get longer, `r#try!()`)
      • est31
        that would make try a tad too ugly
      • I'll probably just end up renaming try to dry or tri or something
      • and then using that in try's stead
      • if the RFC is going through with breaking try!
      • rkruppe
        it's already ugly :P
      • est31
        steveklabnik: the web is actually quite nice. stuff is being deprecated only very cautiously and only if it doesn't break a ton of stuff
      • it is open sourced, standards based, multiple implementations exist
      • that's awesome
      • nox
        centril: Why try instead of catch anyway?
      • est31
        I just have issues with the pace of the mainstream of the ecosystem that runs on the web
      • nox
        There is precedent to use catch, and try is even more reminiscing of exceptional terminology than catch.
      • netrino joined the channel
      • steveklabnik
        est31: all of that is way better than "you are runing rust and javascript is bad"
      • that's an actual opinion, not an attack
      • centril
        nox: exceptional terminology is morally right, and familiarity is important, + brevity, + inverted order of like 27+ languages is a bad
      • nox
        No it's not.
      • And there is no inverted order given there is a single block.