Most active commenters
  • pjmlp(5)
  • CyberDildonics(5)

←back to thread

36 points tanelpoder | 13 comments | | HN request time: 0.525s | source | bottom
1. levzettelin ◴[] No.45148093[source]

  // You are responsible for releasing the structure in the end
  arrow_array.release(&arrow_array);
This doesn't look like RAII. How is this idiomatic for C++20? Why do you have to pass a pointer to "this" again as an explicit argument.
replies(2): >>45148279 #>>45149732 #
2. rfoo ◴[] No.45148279[source]
This is the extracted Arrow C data interfaces as documented in https://arrow.apache.org/docs/format/CDataInterface.html

It's not how you interact with the data in your own C++ code, it's for passing this data to other in-process consumers (libraries etc). While in the example it calls the release function, this is usually just passed to a downstream consumer and it's their responsibility to call it.

I agree that having such an example as the first one is confusing. Given that a large part of the point of Apache Arrow is passing data columnar data between libraries in different languages in memory, it makes some sense.

replies(1): >>45150298 #
3. pjmlp ◴[] No.45149732[source]
RAII predates C++98, I was already used to it in Turbo C++ for MS-DOS, and is pity we need to keep advocating for it as something extraordinary.
replies(2): >>45150286 #>>45152465 #
4. CyberDildonics ◴[] No.45150286[source]
This doesn't have anything to do with what they said, they didn't say RAII was new.
replies(1): >>45150811 #
5. CyberDildonics ◴[] No.45150298[source]
It's not how you interact with the data in your own C++ code, it's for passing this data to other in-process consumers (libraries etc). While in the example it calls the release function, this is usually just passed to a downstream consumer and it's their responsibility to call it.

This seems like a strange rationalizations when you don't need to have explicit release to be able to pass it to something else.

6. pjmlp ◴[] No.45150811{3}[source]
Might be misunderstood by others not skilled in C++ when reading,

> This doesn't look like RAII. How is this idiomatic for C++20?

replies(1): >>45151455 #
7. CyberDildonics ◴[] No.45151455{4}[source]
You can try to be insulting if you want but if you could explain the connection I think you would have already.
replies(1): >>45152207 #
8. pjmlp ◴[] No.45152207{5}[source]
I wasn't.
replies(1): >>45153707 #
9. ender341341 ◴[] No.45152465[source]
I think you're partly making the point for them, RAII has been idiomatic C++ since before c++ was standardized. It wasn't even idiomatic c++98 to be missing it, so to be missing it in c++20 library definitely still isn't.
replies(1): >>45155469 #
10. CyberDildonics ◴[] No.45153707{6}[source]
You weren't what? Who are you saying "isn't skilled in C++" here and why would that matter?
replies(1): >>45155472 #
11. pjmlp ◴[] No.45155469{3}[source]
Indeed, that is the point.
12. pjmlp ◴[] No.45155472{7}[source]
Those that by reading that sentence think RAII is something new in C++20.
replies(1): >>45162457 #
13. CyberDildonics ◴[] No.45162457{8}[source]
Why would someone who knows what RAII and C++20 are end up thinking that?