jemc changed the topic of #ponylang to: Welcome! Please check out our Code of Conduct => https://github.com/ponylang/ponyc/blob/master/CODE_OF_CONDUCT.md | Public IRC logs are available => http://irclog.whitequark.org/ponylang | Please consider participating in our mailing lists => https://pony.groups.io/g/pony
droman has quit [Quit: WeeChat 2.1]
_whitelogger has joined #ponylang
xD34 has joined #ponylang
xD34 has quit [Client Quit]
jaro has quit [Ping timeout: 268 seconds]
jaro has joined #ponylang
_whitelogger has joined #ponylang
endformationage has quit [Quit: WeeChat 1.9.1]
sheerluck has joined #ponylang
<srenatus> vaninwagen: nice! looks like kcov would give you instant support for coveralls and codecov
SenasOzys has quit [Ping timeout: 248 seconds]
user10032 has joined #ponylang
SenasOzys has joined #ponylang
<SeanTAllen> Vaninwagen: you should rework that so it works on the website along side the lldb cheatsheet and performance cheatsheet.
SenasOzys has quit [Remote host closed the connection]
SenasOzys has joined #ponylang
acarrico has quit [Ping timeout: 240 seconds]
jemc has joined #ponylang
<jemc> SeanTAllen: sorry I missed your "howdy" - it's been a crazy week of travel
<jemc> but now am safely back home
<SeanTAllen> nice
<SeanTAllen> welcome back jemc.
<jemc> thanks
<SeanTAllen> where were you traveling? are you normally up this early over there in greenspace?
<SeanTAllen> unrelated to all that, are you attending OSCON this year?
<jemc> it was a set of client visits
<jemc> yeah, I commonly wake up early here in greenspace, as I'm used to working on EST hours
<SeanTAllen> i did not know that
<SeanTAllen> interesting
<SeanTAllen> One pony related thing: if you have time to check out this PR... its my first real "compiler PR", i'd appreciate it: https://github.com/ponylang/ponyc/pull/2763
<jemc> regarding OSCON, no I had not been planning to as of yet
<jemc> okay, will check out the PR now
<jemc> another pony related thing: I seem to be hitting a bug with `File` while stress-testing my application
<SeanTAllen> that's odd
<SeanTAllen> we never got that with wallaroo
<jemc> I'm potentially writing very large and poorly optimized iovecs
<jemc> after reviewing your PR, I'll try to reproduce again and get some info about how many arrays and how many total bytes I'm writing
<SeanTAllen> cool
<jemc> okay, so in my repro case, `_pending_writev` has a `_size == 50354` and I have `_pending_writev_total == 87650`
<jemc> which is, yeah, a rather poorly optimized iovec ;)
<jemc> but still, need to figure out what to do when `File._write_to_disk` gets `EAGAIN`
<jemc> what's odd is that the docs say that `EAGAIN` should only be reached when the `O_NONBLOCK` flag is set on the file descriptor
<jemc> and we don't seem to be doing that for `File`
<jemc> so maybe there's an incorrectness to the assumption in `_pending_writes` that an error in `_write_to_disk` implies that `errno` must be fetched
<SeanTAllen> could be
<SeanTAllen> could be
<jemc> there's two ways that `_write_to_disk` can error:
<jemc> 2b. `len` is some other number there less than what we wanted, which means we need to try again to write the rest of the bytes
khan has joined #ponylang
<jemc> (but not write bytes that have already been written)
acarrico has joined #ponylang
<SeanTAllen> I wonder if memory is getting freed prematurely
<jemc> just ran in a debugger after some modifications to allow me to breakpoint in the right places, and I'm finding that I'm hitting the out-of-bounds array access case
<SeanTAllen> If we give up a reference to the memory early in pony code, that would free the memory
<jemc> you're talking about the point where we convert the `cpointer` to a `USize` to go in `_pending_writev`? yeah, I was meaning to ask about the memory safety of that...
<SeanTAllen> As long as you don't let go of the reference in pending early, it would be good
<SeanTAllen> It's possible there is a bug there
<jemc> when you say "the reference in pending", you mean the `USize` instances in `_pending_writev`?
<jemc> (by the way, there's definitely a bug in that loop for the case where `_pending_writev.size() / 2 > IOV_MAX` - I'm working on the fix now
user10032 has quit [Quit: Leaving]
acarrico has quit [Ping timeout: 240 seconds]
acarrico has joined #ponylang
denus has joined #ponylang
<SeanTAllen> Not at home
<SeanTAllen> Will be soon
<SeanTAllen> And will look at it
<SeanTAllen> ok
<SeanTAllen> jemc
<SeanTAllen> yeah it will free memory early
<SeanTAllen> this is the bug that used to be in TCPConnection
<SeanTAllen> there might be an open issue for this
<SeanTAllen> let me look
<SeanTAllen> yeah its the #2 from this issue: https://github.com/ponylang/ponyc/issues/2526
<SeanTAllen> hasnt been done
<SeanTAllen> today is stephanie's birthday so i cant work on it today but if you dont assign yourself this weekend, ill tackle it tomorrow.
<SeanTAllen> and do a release sunday night
<SeanTAllen> jemc, the solution in TCPConnection is pretty hacky.
<SeanTAllen> for a longer term solution what about... and this could be a really bad idea.
<SeanTAllen> exposing acquire and release object via a primitive that you need a capability for that says "hey, i want to add an extra reference to this thing" (probably because you are giving it to ffi) and then can later say "ok all done with that".
<SeanTAllen> actually... i guess that wouldnt matter as you'd still have to track it
<SeanTAllen> that said, this seems like a pattern that we could move into a class somehow
<SeanTAllen> "writev buffer" or something like htat
denus has quit [Ping timeout: 260 seconds]
sheerluck has quit [Quit: KVIrc 4.9.3 Aria http://www.kvirc.net/]
<jemc> possible clean solution: does an Array[(USize, USize)] in pony have the same memory layout as an `Array[USize]` of twice the length?
<jemc> if so, then we could use `Array[(Pointer[U8], USize)]`
<SeanTAllen> not sure
acarrico has quit [Ping timeout: 264 seconds]
acarrico has joined #ponylang
<SeanTAllen> i have an itch to create a new file library outside of the stdlib where it can be worked on outside of the RFC process and modeling after what we need. Would you be interested in collaborating on something like that with the idea of eventually trying to get it into the stdlib?
<jemc> yes
<jemc> although I think this particular issue can be solved without breaking changes - just a bugfix
acarrico has quit [Ping timeout: 248 seconds]
<SeanTAllen> ya
dipin has joined #ponylang
<dipin> jemc: iirc, I had initially tried something along the lines of `Array[(Pointer[U8], USize)]` without much success but it's been a while and I could be remembering wrong...
<SeanTAllen> i seem to remember that as well dipin
SenasOzys has quit [Ping timeout: 245 seconds]
SenasOzys has joined #ponylang
denus has joined #ponylang
denus has quit [Client Quit]
khan has quit [Quit: khan]
khan has joined #ponylang
khan has quit [Client Quit]
khan has joined #ponylang
infinitary has joined #ponylang
dipin has quit [Quit: dipin]
khan has quit [Quit: khan]
khan has joined #ponylang
infinitary has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
khan has quit [Client Quit]
khan has joined #ponylang
bb010g has quit [Ping timeout: 245 seconds]
irx[m] has quit [Ping timeout: 240 seconds]
M-hrjet has quit [Ping timeout: 240 seconds]
Miikka[m] has quit [Ping timeout: 260 seconds]
srenatus has quit [Ping timeout: 256 seconds]
dtz has quit [Ping timeout: 260 seconds]
khan has quit [Ping timeout: 264 seconds]
khan has joined #ponylang
bannerets has joined #ponylang
bannerets has quit [Quit: Page closed]
bannerets has joined #ponylang
bannerets has quit [Client Quit]
infinitary has joined #ponylang
vaninwagen has joined #ponylang
bannerets has joined #ponylang
bannerets has quit [Quit: Page closed]
bb010g has joined #ponylang
jemc has quit [Ping timeout: 240 seconds]
infinitary has quit [Quit: Textual IRC Client: www.textualapp.com]
vaninwagen has quit [Quit: WeeChat 2.1]
M-hrjet has joined #ponylang
irx[m] has joined #ponylang
Miikka[m] has joined #ponylang
srenatus has joined #ponylang
dtz has joined #ponylang
rkallos has joined #ponylang
droman has joined #ponylang
droman has quit [Quit: WeeChat 2.1]
khan has quit [Ping timeout: 255 seconds]