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
theodus has joined #ponylang
theodusbutler has joined #ponylang
theodus has quit [Ping timeout: 250 seconds]
theodusbutler has quit [Ping timeout: 252 seconds]
jemc has quit [Ping timeout: 276 seconds]
aturley has joined #ponylang
aturley has quit [Ping timeout: 240 seconds]
trapped has quit [Ping timeout: 246 seconds]
aturley has joined #ponylang
aturley has quit [Ping timeout: 244 seconds]
aturley has joined #ponylang
SilverKey has joined #ponylang
aturley has quit [Ping timeout: 250 seconds]
Perelandric has quit [Ping timeout: 250 seconds]
SilverKey has quit [Quit: Halted.]
SilverKey has joined #ponylang
mrkishi has quit [Ping timeout: 258 seconds]
graaff has joined #ponylang
mrkishi has joined #ponylang
aturley has joined #ponylang
SilverKey has quit [Quit: Halted.]
aturley has quit [Ping timeout: 276 seconds]
mrkishi has quit [Read error: Connection reset by peer]
nyarumes has quit [Ping timeout: 276 seconds]
jemc has joined #ponylang
jemc has quit [Ping timeout: 246 seconds]
jemc has joined #ponylang
aturley has joined #ponylang
aturley has quit [Ping timeout: 276 seconds]
amclain has quit [Quit: Leaving]
jemc has quit [Ping timeout: 240 seconds]
copy` has quit [Quit: Connection closed for inactivity]
aturley has joined #ponylang
aturley has quit [Ping timeout: 272 seconds]
Applejack_ has joined #ponylang
nyarum has joined #ponylang
aturley has joined #ponylang
tm-exa has joined #ponylang
aturley has quit [Ping timeout: 272 seconds]
Applejack_ has quit [Ping timeout: 246 seconds]
aturley has joined #ponylang
nyarumes has joined #ponylang
aturley has quit [Ping timeout: 240 seconds]
nyarum has quit [Ping timeout: 252 seconds]
nyarum has joined #ponylang
nyarumes has quit [Ping timeout: 252 seconds]
nyarumes has joined #ponylang
nyarum has quit [Read error: Connection reset by peer]
nyarum has joined #ponylang
nyarumes has quit [Read error: Connection reset by peer]
aturley has joined #ponylang
kushalp has quit [Ping timeout: 250 seconds]
gornikm has quit [Ping timeout: 250 seconds]
gornikm has joined #ponylang
aturley has quit [Ping timeout: 250 seconds]
kushalp has joined #ponylang
Perelandric has joined #ponylang
Perelandric has quit [Ping timeout: 250 seconds]
Perelandric has joined #ponylang
<Perelandric> IMO, it would be nice if Pony had a loop equivalent to a `while true` loop without the `else`.
<Perelandric> Reason being that it seems awkward to include an `else` that can never be reached just to avoid `None` being included in its result.
<Perelandric> Something like `repeat ... end`
<Perelandric> Or have I missed some construct or technique?
<doublec> Perelandric: that issues pops up in other places too. Like match expressions that are exhaustive. They still need an 'else' or None becomes part of the Match type.
<SeanTAllen> The match issue is a little different. The compiler currently can't prove that None isn't a possibility
<SeanTAllen> Perelandric: while true would be very dangerous in Pony because it would prevent garbage collection and the actor would take over a scheduler thread.
<Perelandric> SeanTAllen: I could certainly see it as being potentially dangerous, but it isn't necessarily a long-running loop.
<Perelandric> ...at least in my cases.
<doublec> Maybe pony should remove while/for
* doublec hides his recursion badge obtained from other languages
<doublec> (I wasn't serious if you were wondering)
<SeanTAllen> while/for can be very dangerous in pony. how to address is an interesting and open question. you can cause the same issue with recursion that doesn't trigger new behaviors.
_andre has joined #ponylang
<doublec> Maybe behaviours could be preemptible internally by pony. But other behaviours don't run until the current behaviour completes.
<doublec> I guess that doesn't solve the gc issue
<SeanTAllen> doublec: any chance I can get you to take on writing a generics section for the tutorial? You did a bang up job w your post a while back...
<doublec> This is why I don't design languages
<doublec> SeanTAllen: I'm keen to do that, sure
<SeanTAllen> Awesome
<SeanTAllen> And ya the preemptive behaviors raise a whole new set of issues
<SeanTAllen> Thanks double.
<doublec> np
<SeanTAllen> Damn autocorrect
<doublec> I like the way pony works at the moment as it's easy(-ish) to reason about what's going on
<doublec> but I do see the GC issue and blocking/long running behaviours as a pain point
<SeanTAllen> Erlang has the same issue w NIFs
<SeanTAllen> It's a pain point there as well
<doublec> Yeah, similar issue with other event based langauges and extensions
trapped has joined #ponylang
<sylvanc> eventually i think i will implement a stack map in the compiler
<sylvanc> and use that to specify additional GC roots
<sylvanc> to allow GC during behaviour execution
<sylvanc> orthogonal to that
<sylvanc> i think it might be interesting to investigate spinning up new scheduler threads when an actor is "long running"
<sylvanc> so that such an actor is effectively deprioritised by having another scheduler thread on the same core
<sylvanc> with pending work on the "tied up" thread siphoned out by work stealing
<sylvanc> and if the "long running" actor eventually finishes, cleaning up that scheduler thread
<sylvanc> which effectively leverages the kernel to do actor-level preemption without capturing stacks as continuations
aturley has joined #ponylang
<doublec> nice
<wizeman> sylvanc: I think golang does something like that for long-running (i.e. blocking) C calls -> if a scheduler thread is blocked on a C call for more than 20us, it won't count anymore against the max number of scheduler threads (i.e., it will spin-up another scheduler thread if necessary). This allows programs to use the CPU more efficiently in case a program
<wizeman> calls blocking C libraries or does synchronous I/O syscalls (e.g. stat(), fsync(), ...)
aturley has quit [Ping timeout: 272 seconds]
Applejack_ has joined #ponylang
<sylvanc> wizeman: ah, thanks, i didn't know the Go scheduler did that, I'll have a look
aturley has joined #ponylang
Unit158 has joined #ponylang
copy` has joined #ponylang
aturley has quit [Ping timeout: 264 seconds]
infinity_ has joined #ponylang
SilverKey has joined #ponylang
SilverKey has quit [Client Quit]
SilverKey has joined #ponylang
infinity_ has quit [Quit: Page closed]
SilverKey has quit [Client Quit]
SilverKey has joined #ponylang
aturley has joined #ponylang
unbalancedparen has joined #ponylang
SilverKey has quit [Quit: Halted.]
fluttershy_ has joined #ponylang
fluttershy_ has quit [Client Quit]
Applejack_ has quit [Ping timeout: 240 seconds]
SilverKey has joined #ponylang
gsteed has joined #ponylang
jemc has joined #ponylang
SilverKey has quit [Quit: Halted.]
SilverKey has joined #ponylang
SilverKey has quit [Client Quit]
nyarumes has joined #ponylang
nyarum has quit [Ping timeout: 252 seconds]
Perelandric has quit [Ping timeout: 250 seconds]
Applejack_ has joined #ponylang
runehog has quit [Remote host closed the connection]
amclain has joined #ponylang
Applejack_ has quit [Ping timeout: 272 seconds]
runehog has joined #ponylang
runehog has quit [Remote host closed the connection]
graaff has quit [Quit: Leaving]
tm-exa has quit [Quit: Computer has gone to sleep]
theodus has joined #ponylang
Applejack_ has joined #ponylang
<theodus> I have noticed that many APIs have the methods write, print, writev, printv, etc. Is there any interface that wraps these methods in the standard library?
theodus has quit []
theo has joined #ponylang
theodus_ has joined #ponylang
theodus_ has quit [Client Quit]
theodus has joined #ponylang
theo has quit [Ping timeout: 250 seconds]
theo has joined #ponylang
theodus has quit [Read error: Connection reset by peer]
theodus has joined #ponylang
theo has quit [Read error: Connection reset by peer]
theo has joined #ponylang
Perelandric has joined #ponylang
theo has quit [Read error: Connection reset by peer]
theodusbutler has joined #ponylang
theodusbutler has quit [Read error: Connection reset by peer]
theodus_ has joined #ponylang
trapped has quit [Read error: Connection reset by peer]
theodus has quit [Ping timeout: 250 seconds]
Applejack_ has quit [Ping timeout: 252 seconds]
Applejack_ has joined #ponylang
runehog has joined #ponylang
shepheb has quit [Ping timeout: 260 seconds]
shepheb has joined #ponylang
tm-exa has joined #ponylang
Perelandric has quit [Ping timeout: 250 seconds]
theodus_ has quit []
theodus has joined #ponylang
Perelandric has joined #ponylang
Applejack_ has quit [Ping timeout: 244 seconds]
<SeanTAllen> Theodus: at the moment no.
<SeanTAllen> but you could add an interface that encompasses those and start using as such if you needed in your own code
<theodus> SeanTAllen: alright
<SeanTAllen> adding interfaces of that sort to the standard library is something that i would encourage
<SeanTAllen> it would make the standard library more flexible and extensible
<SeanTAllen> its something that sylvanc and i have talked about
<SeanTAllen> where you see opportunities for that, please open RFCs.
<theodus> will do.
tm-exa has quit [Quit: Computer has gone to sleep]
mrkishi has joined #ponylang
<theodus> Nevermind, OutStream covers it.
theodus has quit []
theodus has joined #ponylang
theodus has quit [Client Quit]
<SeanTAllen> o that is right, its an interface
<SeanTAllen> and StdStream implements it
<SeanTAllen> dur
theodus has joined #ponylang
theodus has quit [Client Quit]
zaquest has quit [Read error: Connection reset by peer]
zaquest has joined #ponylang
_andre has quit [Quit: leaving]
theodus has joined #ponylang
theodus has quit [Client Quit]
TwoNotes has joined #ponylang
Applejack_ has joined #ponylang
Applejack_ has quit [Quit: Lost terminal]
jemc has quit [Read error: Connection reset by peer]
jemc has joined #ponylang
runehog has quit [Remote host closed the connection]
TwoNotes has quit [Quit: Leaving.]
runehog has joined #ponylang
unbalancedparen has quit [Quit: WeeChat 1.5]
gsteed has quit [Quit: Leaving]