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
atk has quit [Quit: Well this is unexpected.]
atk has joined #ponylang
nitbix has quit [Ping timeout: 250 seconds]
nitbix has joined #ponylang
polypus74 has quit [Remote host closed the connection]
c355e3b has quit [Quit: Connection closed for inactivity]
jemc has joined #ponylang
unbalanced has quit [Read error: Network is unreachable]
unbalanced has joined #ponylang
sjums has quit [Quit: Connection reset by beer]
sjums has joined #ponylang
pyon has quit [Quit: Fix config.]
pyon has joined #ponylang
mvzink has joined #ponylang
mvzink has quit [Ping timeout: 252 seconds]
jemc has quit [Ping timeout: 264 seconds]
jemc has joined #ponylang
jemc has quit [Ping timeout: 244 seconds]
jemc has joined #ponylang
jemc has quit [Ping timeout: 272 seconds]
runehog_ has joined #ponylang
puzza007_ has joined #ponylang
kushalp_ has joined #ponylang
NhanH__ has joined #ponylang
kajstrom_ has joined #ponylang
cquinn_ has joined #ponylang
mankyKitty_ has joined #ponylang
Fuuzetsu_ has joined #ponylang
bodie__ has joined #ponylang
irx[m]1 has joined #ponylang
irx[m] has quit [*.net *.split]
M-hrjet has quit [*.net *.split]
mcguire1 has quit [*.net *.split]
cquinn has quit [*.net *.split]
emilbayes has quit [*.net *.split]
NhanH_ has quit [*.net *.split]
kushalp has quit [*.net *.split]
runehog has quit [*.net *.split]
mankyKitty has quit [*.net *.split]
kajstrom has quit [*.net *.split]
bodie_ has quit [*.net *.split]
Xe has quit [*.net *.split]
puzza007 has quit [*.net *.split]
BweeZ has quit [*.net *.split]
Fuuzetsu has quit [*.net *.split]
bodie__ is now known as bodie_
Fuuzetsu_ is now known as Fuuzetsu
cquinn_ is now known as cquinn
M-hrjet has joined #ponylang
Xe has joined #ponylang
kushalp_ is now known as kushalp
puzza007_ is now known as puzza007
mankyKitty_ is now known as mankyKitty
BweeZ has joined #ponylang
mcguire1 has joined #ponylang
emilbayes has joined #ponylang
wgf_ has joined #ponylang
TonyLo has joined #ponylang
rurban has joined #ponylang
dinfuehr has quit [Ping timeout: 244 seconds]
dinfuehr has joined #ponylang
rurban has left #ponylang [#ponylang]
wgf_ has left #ponylang ["Leaving"]
c355e3b has joined #ponylang
<malthe> SeanTAllen: is it an entirely incorrect intuition that an "atomic" region construct would allow `TCPConnection` to provide a synchronous API.
<malthe> since `write` for example could easily be synchronous due to the non-blocking nature of the actual call, except `TCPConnection` may be shutting down etc and so we currently need to run the calls in a behavior.
<malthe> that said, in the case of `write`, there are other failure modes than just a closed or full socket -- the data might not make it to the destination for other reasons.
<malthe> so perhaps the one-way message is a good thing since it forces you to think about the other failure modes that are inherently asynchronous.
TonyLo_ has joined #ponylang
TonyLo_ has quit [Ping timeout: 264 seconds]
<SeanTAllen> I don't know what you are saying malthe. Could you try rephrasing?
<malthe> the reason why `write` can't be a function is that write needs to first check for 'connected', then 'writeable', and then finally make the system call. that's why this is all behind behaviors, so that our state changes atomatically, and we have the ordering guarantees as well.
<malthe> err s/atomatically/atomically
<malthe> i'm saying ... couldn't we just have functions that behave atomically, but are still functions?
<malthe> (in a way that avoids deadlocks).
<malthe> sort of like 'await' -- this is not what i'm proposing because it obviously won't work due to possibility of deadlock -- in a very controlled setting.
<SeanTAllen> this doesnt make any sense to me... the reason why `write` can't be a function is that write needs to first check for 'connected', then 'writeable',
<SeanTAllen> that has nothing to do with `write` not being a function.
<SeanTAllen> its not a function because TCPConnection is an actor that manages a resource
rurban has joined #ponylang
<SeanTAllen> you can remove the writeable and connected checks and it still cant be a function
<malthe> I can make a `write_ex` function that allows me to just write to the fd.
<malthe> ok not if it's an actor I guess. it would have to be a class instance.
<SeanTAllen> yes
<SeanTAllen> and then you arent using async io
<malthe> the fd is non-blocking though
TonyLo has left #ponylang [#ponylang]
<SeanTAllen> i dont want to work with that system
<malthe> it is async even if we're not using the actor system.
<SeanTAllen> managing non blocking io sucks
<SeanTAllen> if its async you are back to the same issue
<SeanTAllen> close, connected will happen as an event
<SeanTAllen> if your write is async
<SeanTAllen> then you have the exact same issue
<SeanTAllen> your solution has to be sync
<SeanTAllen> and that creates entirely new issues
<malthe> oh I see, you won't anyway get an error if its non-blocking.
<SeanTAllen> Yes
<SeanTAllen> you can only get notifications
<SeanTAllen> and if you get notifications and ignore them
<SeanTAllen> it should do the least awful thing
<malthe> the compiler can't really help much
<SeanTAllen> s/really help much/at all/
<malthe> right :-) .. thanks for explaining.
<SeanTAllen> the only thing you could do is to force people to implement most/all of the notifier interface which has a whole other set of issues
<malthe> the RFC makes good sense
<malthe> yeah you could force the implementation to acknowledge an event.
<malthe> if the compiler can't enforce it then it's not really workable.
_andre has joined #ponylang
<lisael_> Hi!
lisael_ is now known as lisael
<lisael> I'm working on codespeed, i've just uploaded the first results on my local instance.
<lisael> looks great, I clean up the code and all and I push the project to github.
<lisael> (first result, though: llvm 3.8 is faster than llvm 3.6. No surprise, but, now it's benched)
montanonic has joined #ponylang
trapped has joined #ponylang
montanonic has quit [Ping timeout: 265 seconds]
Praetonus has joined #ponylang
<Praetonus> lisael: That's great
<lisael> Praetonus: i plan to test llvm-3.9 and 4.0 but for now it's not available on my debian testing. The real runner will probably be on a debian sid.
mcguire1 has quit [Ping timeout: 265 seconds]
trapped has quit [Read error: Connection reset by peer]
jemc has joined #ponylang
toblux has joined #ponylang
rurban has left #ponylang [#ponylang]
jemc has quit [Quit: WeeChat 1.4]
jemc has joined #ponylang
runehog_ has quit [Remote host closed the connection]
_whitelogger has joined #ponylang
_whitelogger_ has joined #ponylang
<SeanTAllen> very cool lisael
runehog has joined #ponylang
amclain has joined #ponylang
<malthe> here's a pprof text output from 100 seconds of examples/httpserver with 1 pony-thread: https://gist.github.com/malthe/47e98e53dc568c1ddc5b33a56603793b
<malthe> it's kind of funky-looking and i need to attempt this on linux too, to confirm the validity.
<malthe> has anyone else tried gperftools-profiling?
xshuiniu has joined #ponylang
xshuiniu has quit [Remote host closed the connection]
rurban has joined #ponylang
rurban has left #ponylang [#ponylang]
xshuiniu has joined #ponylang
Matthias247 has joined #ponylang
runehog_ has joined #ponylang
runehog has quit [Ping timeout: 264 seconds]
<SeanTAllen> i havent on httpserver malthe but i know from the work we've done on tuning our code base that there are a lot of slowwwww things done in httpserver
graaff has joined #ponylang
graaff has quit [Quit: Leaving]
polypus74 has joined #ponylang
Praetonus has quit [Quit: Leaving]
<jemc> SeanTAllen: I'm looking forward to hearing more from you and/or your team in the future about pony patterns for performance-oriented pony code
<jemc> that is, when you get some breathing room and time for it
<jemc> it would be great to have some more pony patterns in the "performance" section
<SeanTAllen> yeah jemc agreed. i am planning on writing up some pony performance tips. i just dont have time til november.
<SeanTAllen> if anyone is looking for a good issue to help out with: https://github.com/ponylang/ponyc/issues/1268
<SeanTAllen> when to use error and when to use a union type is a fun one
<SeanTAllen> short version is "if the error rarely happens, use error. if it happens often, you a union type that represents success | failure"
atk has quit [Quit: Well this is unexpected.]
atk has joined #ponylang
<jemc> to be honest I'm surprised to hear there is a performance difference between those two paradigms- I was under the impression it was largely a wash
<jemc> I'm interested to hear more about it
<jemc> (but I know you're too busy to write about it at the moment)
<SeanTAllen> i have 13 minutes til a call...
<SeanTAllen> while error is much faster than counterparts in java, c++, its still relatively slow, you want to call it as little as possible
<SeanTAllen> and while match is relatively fast, also want to call that as little as possible
_andre has quit [Quit: leaving]
<SeanTAllen> so if you are expecting to signal errors a lot, avoid error and use match, at some point the match on a union type is going to be faster.
<SeanTAllen> and in the opposite direction, if the error rarely happens, dont pay for the match every time through a section of code when the error will only happen once in a blue moon
runehog_ has quit [Remote host closed the connection]
<jemc> interesting
<jemc> unfortunate that the other concern of carrying data with the error is coupled to that performance concern
<jemc> for example, I may have a situation where I want to use a union type because I want to convey data with the failure value, but I expect it to happen rarely and don't want to pay the match cost every time
<SeanTAllen> jemc is this fixes our intermittent net test failures, i will be so happy
montanonic has joined #ponylang
<SeanTAllen> that's the 2nd time in a row appveyor passed jemc
<SeanTAllen> good sign
<jemc> SeanTAllen: if it's passing feel free to merge
<SeanTAllen> ok
<SeanTAllen> im waiting on travis
<SeanTAllen> im most excited by the idea that this might fix the intermittent network test failures
runehog has joined #ponylang
polypus74 has quit [Remote host closed the connection]
<SeanTAllen> man sometimes github picks the worse commit messages to do for a merge
nitbix has quit [Quit: Lost terminal]
Matthias247 has quit [Read error: Connection reset by peer]
dinfuehr has quit [Ping timeout: 260 seconds]
dinfuehr has joined #ponylang
montanonic has quit [Ping timeout: 272 seconds]