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
aturley has joined #ponylang
aturley has quit [Ping timeout: 244 seconds]
TwoNotes has joined #ponylang
TwoNotes has quit [Remote host closed the connection]
aturley has joined #ponylang
aturley has quit [Ping timeout: 244 seconds]
gornikm has quit [Ping timeout: 250 seconds]
gornikm has joined #ponylang
aturley has joined #ponylang
aturley has quit [Ping timeout: 276 seconds]
jemc has quit [Quit: WeeChat 1.4]
jemc has joined #ponylang
aturley has joined #ponylang
amclain has quit [Quit: Leaving]
aturley has quit [Ping timeout: 264 seconds]
aturley has joined #ponylang
aturley has quit [Ping timeout: 246 seconds]
trapped has joined #ponylang
copy` has quit [Quit: Connection closed for inactivity]
aturley has joined #ponylang
aturley has quit [Ping timeout: 276 seconds]
aturley has joined #ponylang
aturley has quit [Ping timeout: 240 seconds]
aturley has joined #ponylang
aturley has quit [Ping timeout: 252 seconds]
lispmeister has joined #ponylang
srenatus has joined #ponylang
aturley has joined #ponylang
aturley has quit [Ping timeout: 246 seconds]
Praetonus has joined #ponylang
_andre has joined #ponylang
trapped has quit [Ping timeout: 276 seconds]
<shepheb> my illegal instruction woes are resolved - it was a VirtualBox bug with some SSE instructions.
<shepheb> upgrading to VirtualBox 5.0.16 (from 4.2.something) solved it.
trapped has joined #ponylang
<SeanTAllen> Sweet
<SeanTAllen> I should have thought of that as we had that issue
aturley has joined #ponylang
aturley has quit [Ping timeout: 250 seconds]
<SeanTAllen> shepheb: can you put info about minimum vbox version on ponyc install instructions and in the tutorial?
juanjoc has joined #ponylang
Jbbouille has joined #ponylang
<Jbbouille> @all: Hello, I got a question regarding ponylang I presume that I am on the right channel? My question is: in a actor, is it possible to create a behaviour that take a random time to execute ? Someting like: https://gist.github.com/Jbbouille/8f01c514233f5ca7c038820615bc4f79
<Jbbouille> @all: Hello, I got a question regarding ponylang I presume that I am on the right channel? My question is: in a actor, is it possible to create a behaviour that take a random time to execute ? Something like: https://gist.github.com/Jbbouille/8f01c514233f5ca7c038820615bc4f79
<Jbbouille> sorry for spam
<Jbbouille> miss click
<doublec> Jbbouille: hi
<doublec> Jbbouille: the general approach for that is to use a timer to notify the actor when the time expires
<doublec> Jbbouille: here is an example of a timer set for 15 seconds https://github.com/doublec/imap-idler/blob/master/idle/main.pony#L335
<doublec> Jbbouille: pony is quite strongly non blocking so blocking within a behaviour is not possible unless you use the FFI
<doublec> Jbbouille: and if you do so you can end up blocking other actors from running
<Jbbouille> thx for the example !
<doublec> np
<doublec> Jbbouille: SeanTAllen did a post on timers too http://www.monkeysnatchbanana.com/2016/01/18/pony-patterns-waiting/
<Jbbouille> nice nice.
<Jbbouille> okay i will read that
aturley has joined #ponylang
aturley has quit [Ping timeout: 276 seconds]
<SeanTAllen> @Jbbouille that has been simplified slightly and is now in Pony Patterns http://patterns.ponylang.org/async/waiting.html
<Jbbouille> okay thanks. hmm, I dont see any difference between what u wrote in your block and the documentation, how has it been simplify ?
<SeanTAllen> I removed Sendence specific story telling bits and focused more on just the pattern
M-hrjet has quit [Ping timeout: 248 seconds]
M-hrjet has joined #ponylang
<SeanTAllen> btw welcome Jbbouille. if you get stuck, let us know or hit up the user mailing list... we still have plenty of sharp, pointy edges: https://pony.groups.io/g/user
aturley has joined #ponylang
aturley has quit [Ping timeout: 248 seconds]
aturley has joined #ponylang
<Jbbouille> Thank you SeanTAllen
aturley has quit [Ping timeout: 252 seconds]
aturley has joined #ponylang
TwoNotes has joined #ponylang
<jemc> Jbbouille: just to point out another potential issue in your gist: note that your actor type name (and all type names) should start with a capital letter
<jemc> so, `actor Barber` instead of `actor barber`
<shepheb> SeanTAllen: created a PR against the tutorial, as requested.
<jemc> shepheb: merged it :)
* shepheb hasn't checked email often enough, clearly.
<TwoNotes> My I18n package works. I was able to switch between English and Japanese messages on the fly.
<shepheb> sweet!
<TwoNotes> It loads the message texts from a JSON text file
<TwoNotes> If you address my bot as "Agador" it answers in a male English voice. If you address it as "Hiroko" it answers in a female Japanese voice.
<jemc> cool!
<TwoNotes> Input is only in Japanese for the time being. I still need an acoustic model for English input
<jemc> it would be awesome to see some video showcasing your build when it's suitably done!
<TwoNotes> I have been thinking about how to do that. There is not actually anything to see yet. It is all audio.
<TwoNotes> But I am working on X10 lamp controls
<TwoNotes> ponyc can compile for x86 32 bit, right?
<jemc> TwoNotes: yes
<jemc> or at least, ponyc master can - I think the version has not yet been released, according to the CHANGELOG
<TwoNotes> The only computer that can run the X10 interface is x86, so that part has to run there. But my program runs fully distributed over a LAN.
<TwoNotes> I have not yet done experiments to see if the speech recognizer is fast enough for my old x86 box or a RPi
<TwoNotes> But ponyc does not do cross-compilation, right? It has to be done native
<shepheb> (building ponyc on a RasPi works fine for me, though ponyc is pretty slow there)
<shepheb> (caveat: that was on the quad-core, 1GB RAM RasPi 2)
<shepheb> I'm having trouble getting a multi-actor Pony program to quit, probably because it still has things like an active input listener or some timers active.
<shepheb> what's the Right Way to do that?
<Candle> In erlang, you'd send 'exit' messages to the actors.
<shepheb> I think there's something similar in Pony, but I'm struggling to find out how it's spelled and how it works.
<Candle> (Oh, and the only machine I could successfully build ponyc on was also a pi 2 B!)
<jemc> shepheb: look for `dispose` methods on your "active input listener" actors
<shepheb> there we go. I couldn't pull the right name from my memory.
<shepheb> I skimmed the tutorial without luck, and had just grepped for "final", "destruct" and "destroy" without luck.
<jemc> if you're ever having trouble figuring out which input listener is left open, here's a method I've used with GDB: https://github.com/ponylang/ponyc/pull/644#issuecomment-200240337
<doublec> shepheb: there's a custodian actor in bureaucracy that can help
<jemc> TwoNotes: looks like maybe these PR added cross compiling, but I haven't tried it myself: https://github.com/ponylang/ponyc/pull/533
<jemc> s/these/this/
<doublec> shepheb: I use it here for example: https://github.com/doublec/imap-idler/blob/master/idle/main.pony#L55
<doublec> shepheb: in general a actor dies when it can't receive messages - no need to clean it up. But some actors set up timers or receive on network events and those need to be disposed.
<doublec> shepheb: in which case the system detects it can no longer receive messages at it is GCd
<jemc> yep, exactly - pony can only prove permanent quiescence for conventional actors which have no more messages right now, and no more references by which it can be sent messages (including detection of entire quiescent graphs of actors)
<jemc> if an actor has a "noisy" handle tied into the ASIO backend, there's no way to prove it can't receive more messages, because the messages come from outside of Pony
<jemc> so the `dispose` method in this case will signal your intent to stop receiving ASIO messages, so that the actor can be cleaned up when the "conventional" conditions for quiescence are also met
<Candle> How does pony handle dependencies and code that's publically shared? I've encountered several dependency management systems, and never really liked any of them, however, some are certainly better than others.
<shepheb> makes sense to me. I've got it exiting properly by adding dispose() behaviors to a few components and calling them properly.
<shepheb> previously I had been calling @exit[None](U32(0)) but that was always a hack.
<shepheb> and on this faster machine it exits before the last line of output was emitted.
<shepheb> so this correct cleanup is much better :)
<jemc> Candle: we don't have a package manager yet, unfortunately
<jemc> it's high on our priorities
<Candle> jemc: Ok!
<Candle> Can I suggest adopting an existing one?
<jemc> Candle: for now I use a little github-downloading hack that meets my most immediate needs: https://github.com/jemc/pony-stable
<jemc> Candle: yes, adopting an existing one is certainly an option if you have suggestions
<jemc> there's an issue ticket if you want to make your suggestion a bit more persistent than in IRC: https://github.com/ponylang/ponyc/issues/247
<jemc> the main point in contention in that thread is how the dependency specification works and how it integrates with your project and source code
<jemc> for existing package managers we could use, some have already suggested gx: https://github.com/whyrusleeping/gx
<Candle> The only one that seems to have enough flexibility and features is maven. But I know that a lot of people don't like it!
<Candle> All the existing package managers have issues of some form, just need to pick the one with the fewest and smallest problems.
<Candle> I shall have a read and add my comments there.
<Candle> heh. difficulty: 2 - medium. I'd say getting people to agree is going to be a really hard problem!
<jemc> definitely :)
Jbbouille has quit [Ping timeout: 250 seconds]
amclain has joined #ponylang
<SeanTAllen> people arent going to agree
<SeanTAllen> someone will build something and people will either adopt or not
M-hrjet has quit [Remote host closed the connection]
<SeanTAllen> i dont think there is ever going to be agreement on a package manager
<SeanTAllen> some people will love
<SeanTAllen> some people will be "good enough"
<SeanTAllen> that's the best that can be hoped for imo
<jemc> the big remaining question is the compiler integration (with use statements), which is something that one can't choose to or not to adopt
<SeanTAllen> very true
<jemc> so we want to get that one right, and I think the rest is kind of free for all for whoever wants to tackle it
<SeanTAllen> as long as its a series of bash scripts that are held together with some sed and awk, i'm happy
amclain has quit [Read error: Connection reset by peer]
amclain has joined #ponylang
copy` has joined #ponylang
aturley has quit [Ping timeout: 248 seconds]
juanjoc has quit [Remote host closed the connection]
<TwoNotes> I created a directory called "ponylib" and put all my shared packages in there. An environment symbol points to it for the compiler. Moost of the ponylib members are actually links to various git repos.
<TwoNotes> The Makefiles know to check in ponylib for any updates. So if I change any package, things that depend on them get rebuilt
<TwoNotes> Then within ponylib, there is a grouping by subject. For instance, all the database interfaces are under "db", so if I need to sqlite interface I say 'use "db/sqlite"'
M-hrjet has joined #ponylang
aturley has joined #ponylang
mcguire1 has joined #ponylang
mcguire has quit [Ping timeout: 276 seconds]
aturley has quit [Ping timeout: 260 seconds]
mcguire has joined #ponylang
mcguire1 has quit [Ping timeout: 244 seconds]
mcguire1 has joined #ponylang
mcguire has quit [Ping timeout: 250 seconds]
lispmeister has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
Praetonus has quit [Quit: Leaving]
aturley has joined #ponylang
mcguire1 has quit [Ping timeout: 240 seconds]
M-hrjet has quit [Remote host closed the connection]
M-hrjet has joined #ponylang
<TwoNotes> Trying to build on my 32bit Arch machine. LLVM 3.7.1.1 should that work?
srenatus has quit [Quit: Connection closed for inactivity]
<TwoNotes> undefined reference to `llvm::FunctionPass::createPrinterPass
<jemc> I think shepheb (or someone?) found issues with certain early versions of LLVM 3.7 that were fixed in later versions - not sure what versions though off hand - try searching issues for it
<TwoNotes> Hmm, on my 64 bbit machine I have 3.7.1.so.1 and that works
<TwoNotes> But the 64b machine is Ubuntu and the 32b is Arch
<jemc> I think shepheb uses arch linux as well (IIRC?) so that may be a common issue?
<jemc> s/common/shared/
Praetonus has joined #ponylang
_andre has quit [Quit: leaving]
Matthias247 has joined #ponylang
bb010g has joined #ponylang
<jemc> SeanTAllen: who was working on the subprocess library and is there an issue ticket for it?
trapped has quit [Read error: Connection reset by peer]
<SeanTAllen> Markus aka Lispmeister is. No ticket as it started as for internal thing. Should be landing soon.
<TwoNotes> Shell subprocesses?
<jemc> TwoNotes: yes, I believe the idea is to have a package providing a pony-idiomatic way to run subprocesses
<TwoNotes> With streams hooked to stdin and stdout too?
<jemc> being able to capture/redirect std streams, yep
<TwoNotes> oo nice. So far I have been getting by with @system.
<jemc> at least that's the picture I have of the package - I've only heard rumors
<jemc> yeah, I used @system too in pony-stable, but it ain't the prettiest pony
<TwoNotes> @system seems to stall the actor. Which can be useful in my case, but isn't Pony-ish
<jemc> yeah ideally we would have async streams with their own notifiers
<TwoNotes> Hmm, I would not be surprised if @system actually stalled the whole thread.
<TwoNotes> It blocking the actor is useful in my case, because then my actor inbox acts as a quque
<TwoNotes> queue
<TwoNotes> I can always do my own queue. Some of the commands I spawn take several seconds to execute.
Matthias247 has quit [Read error: Connection reset by peer]
mcguire has joined #ponylang
TwoNotes has quit [Quit: Leaving.]
Praetonus has quit [Quit: Leaving]