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]