<phlebas>
i might not have time to formulate answers today, but i'll try in the evening, unless someone else would like to respond already :)
<cfbolz>
let's brainstorm a good answer maybe
_0az3 has quit [Remote host closed the connection]
_0az3 has joined #hpy
* Hodgestar
reads Mark's reply.
<Hodgestar>
I think this really needs a conversation with Mark more than a reply.
<Hodgestar>
We can go backwards and forwards critiquing unfinished solutions on both our sides or Mark's for ages.
<Hodgestar>
The real question is would Mark like to work with us?
<Hodgestar>
Working together will be a bit painful for everyone at the start, because we have different sets of ideas right now, but it would be really good for the implementation.
_0az3 has quit [Remote host closed the connection]
_0az3 has joined #hpy
_0az3 has quit [Remote host closed the connection]
<mattip>
for quite some time now. Could someone ban them?
_0az3 has quit [Remote host closed the connection]
_0az3 has joined #hpy
_0az3 has quit [Remote host closed the connection]
_0az3 has joined #hpy
_0az3 has quit [Remote host closed the connection]
_0az3 has joined #hpy
<Hodgestar>
mattip: Chanserv says that the channel founder is cfbolz.
<cfbolz>
Who woulda thunk
_0az3 was kicked from #hpy by cfbolz [_0az3]
_0az3 has joined #hpy
_0az3 has quit [Remote host closed the connection]
_0az3 has joined #hpy
_0az3 has quit [Read error: Connection reset by peer]
_0az3 has joined #hpy
_0az3 has quit [Remote host closed the connection]
_0az3 has joined #hpy
_0az3 has quit [Remote host closed the connection]
_0az3 has joined #hpy
<phlebas>
cfbolz: well that didn
<phlebas>
+'t work
<cfbolz>
yeah, sorry, only kicked him so far
_0az3 was banned on #hpy by ChanServ [_0az3!*@*]
_0az3 was kicked from #hpy by ChanServ [Banned: please stop leaving and rejoining the channel, it spams our logs]
<phlebas>
Hodgestar: yes, i think we should try to have a call with mark to just talk about how we can work together
<phlebas>
i think Petr Viktorin would also be good to have as part of the conversation
<phlebas>
> Where are the design principles of HPy listed? I couldn't find an explicit list.
<phlebas>
> What is it specifically about subinterpreters that is of concern?
<phlebas>
Indeed we haven't created an exhaustive list, mostly because we keep discovering issues while porting packages like NumPy (which exposes it's own C API for consumption by other packages). There is https://github.com/hpyproject/hpy/wiki/c-api-next-level-manifesto and in that wiki a lot of resources we collected while porting things over time.
<phlebas>
Ah, I had overlooked that. This is indeed our thinking in HPy, too, to avoid global state as much as possible. The additional `HPyContext` argument was inspired by APIs such as JNI or SDL2, which have something similar. SDL2 in particular uses this (implicit) global function table to be forward binary compatible. However, for Python there is an issue, since multiple extensions may be compiled against different versions, years apart, and
<phlebas>
still need to run in the same process. Without an explicit context that means any time any API needs to change we need a new global method, whereas with a context, this can be handled by the runtime passing the right context to each module.
<phlebas>
> All code written to the API will continue to work on future versions of Python without recompilation. Recompilation using newer versions may be more efficient, but code compiled to older versions of the API will continue to work.
<phlebas>
> [...]
<phlebas>
> Once added to the API, a feature will be removed only if there is a very strong reason to do so.
<phlebas>
So we do want to be binary compatible forever, but still under important circumstances need to be able to change the API. With global functions, this would imply a new function, with a context argument, just a different context for the newer binaries.
<phlebas>
> C globals are not supported as they are unsafe.
<phlebas>
We have found dozens of usages of plain C structures stored globally or reachable from other global variables in NumPy, for example. It seemed to us quite a burden to force extensions having to find completely different solutions to this. The thoughts around `HPyGlobal` aren't all fleshed out, but https://github.com/hpyproject/hpy/wiki/dev-call-20220303#hpyglobal has some notes, as this was driven by the NumPy port.
<phlebas>
ahhh
<phlebas>
i was trying to paste this into the pastebin tab and failed miserably
<phlebas>
Also added this at the end: "I think it would be useful if we (the current HPy devs, you, @encukou) could have a direct conversation about this, maybe you would have time for a call? The people working on HPy would love to see a better future C API and would be glad to help with the experience we gained from HPy."
<phlebas>
what do you think about the answer? just post it? just wondering because mark is thinking about the context argument now, and I would like to give him some links to our wiki before he makes up his mind ;)
dalley has joined #hpy
Techcable has quit [Ping timeout: 256 seconds]
<Hodgestar>
The technical arguments look great.
<Hodgestar>
At the end I would avoid offering to help Mark. We would like us and Mark to work together, which is an subtle but important difference.
<Hodgestar>
I'd like to understand why Mark didn't talk to us before starting. Maybe he just wanted to get his own thoughts down first?
<Hodgestar>
phlebas: I'm also fine with you posting it as is. Tip toeing around things too much on our side isn't helpful either. We should just be open and honest and keen to collaborate if we can.