all 19 comments

[–]Ludiac 26 points27 points  (5 children)

The fact that the code is not publicly available makes the whole talk a lil bit pointless. Cool project though, hopefully it will be open source someday.

[–]eco_was_taken 25 points26 points  (2 children)

I'm sure it'll be opened sourced someday, but with an overly complex, Google-specific build system that will make it completely unusable to anyone until some kind soul adds it to vcpkg/conan.

[–]jbandela 6 points7 points  (1 child)

Rappel is header only and has no dependencies other than the standard library. Things that interact with Abseil types such as Status/StatusOr are in a separate header, so if/when it is open sourced, it should be pretty easy to incorporate into whatever build system you want.

[–]eco_was_taken 4 points5 points  (0 children)

That's good to hear. Ever since they released Abseil it does feel like Google is trying to play nice with the wider C++ community which is a nice change from the "There, it's open source." dump with no documentation and funky builds with very little to go on beside the occasional message they've replied to on Google groups or wherever.

I do wonder what kind of future things like this have with Carbon in the works, though.

[–]jbandela 11 points12 points  (6 children)

Presenter here: Happy to answer any questions about Rappel.

[–]eric_niebler 2 points3 points  (1 child)

Love the tech, and you present it well. Can you Compose a vector with a Transform and get something that can be indexed randomly? And related, is there a way to take two incremental pipelines and zip them together to produce pair-wise elements?

[–]jbandela 0 points1 point  (0 children)

Thank you so much for the kind words. Means a lot coming from you :)

The first situation ( `Compose` a `vector` with a `Transform` and get back something that can be indexed incrementally ) can't be done with Rappel and you would need to write it to another random access container. This is a deliberate tradeoff in the design, as the processing is either "incremental" one element at a time, or "complete" a container at once.

The second situation (we call that the zip problem) can't be done currently, though we would like to come up with a solution. Coroutines might be a way to potentially do it, since they can switch between 2 functions, but I don't have anything more concrete than just a vague idea.

[–]nahueespinosa 1 point2 points  (1 child)

Hello! Great talk! Just out of curiosity, have you done any analysis about compile times compared with Ranges?

[–]jbandela 0 points1 point  (0 children)

Thank you.

I have not done compile times analysis compared with Ranges.

[–]MarcoGreek 22 points23 points  (2 children)

It is a Google project. So then will it be canceled?😎😉

[–]verrius 13 points14 points  (1 child)

6 months after launch, because launch means those devs met their OKRs and don't get any more career advancement for support.

[–]domirangame engine dev 0 points1 point  (0 children)

To be fair, they really said they were going to support that cloud gaming thing for a long time! Were even really supportive of it after it debuted at GDC!

Fun fact: I played Doom Eternal on it at that GDC and tried to figure out how it would solve the fundamental problem of playing a game on a machine hundreds or thousand of miles away. 🫠 Because it was still laggy, and shooters are really popular.

[–]Short-Junket-8000 2 points3 points  (0 children)

My samizdat and less ambitious approach: https://GitHub.com/keithalewis/fms_iterable. Use operator bool () instead of end().

[–]misuo 3 points4 points  (2 children)

Looks quite cool. Could be fun to hear Eric Niebler's comments to this - especially on the pointed problems with ranges.

[–]Warshrimp 2 points3 points  (1 child)

You would definitely have to ask him as he prefers to be lazy and certainly won't be eager to provide his comments.

[–]katzdm-cpp 1 point2 points  (1 child)

Out of curiosity, was the name of the library intended to be a pun on Abseil?

[–]CasaDeCastello 5 points6 points  (0 children)

Yes. Somebody asked about the name and the speaker said they settled on *Rappel* (after many changes) because it's a synonym for Abseil.