<vegasje>
hi there. is there any established release schedule for pony?
<SeanTAllen>
vegasje: not at the moment. we have some build pipeline issues that are getting straightened out. once that is done, we plan on getting nightly builds done and from that, we'll do occassional (probably monthly) releases
<SeanTAllen>
hopefully that is all worked out within a few weeks at the most
<vegasje>
SeanTAllen: thank you for the information. i hope your build pipeline issues can be resolved without too much difficulty.
vegasje has quit [Quit: Page closed]
<SeanTAllen>
thanks vegasje. at the moment, the recommendation is to build from source.
aturley has joined #ponylang
aturley has quit [Ping timeout: 260 seconds]
aturley has joined #ponylang
aturley has quit [Ping timeout: 252 seconds]
M-hrjet has quit [Ping timeout: 268 seconds]
M-hrjet has joined #ponylang
<DanC_>
does pony have variadics?
aturley has joined #ponylang
<SeanTAllen>
DanC_: no
aturley has quit [Ping timeout: 260 seconds]
<DanC_>
if I have (Int | Int), can I tell whether the value is in the left or right part?
<DanC_>
compilation is pleasantly quick (at least: in flycheck)
<DanC_>
is atoi() in the pony stdlib somewhere?
<DanC_>
ah... String.i64() and such
aturley has joined #ponylang
aturley has quit [Ping timeout: 252 seconds]
amclain has quit [Quit: Leaving]
srenatus has joined #ponylang
aturley has joined #ponylang
aturley has quit [Ping timeout: 248 seconds]
copy` has quit [Quit: Connection closed for inactivity]
trapped has joined #ponylang
aturley has joined #ponylang
aturley has quit [Ping timeout: 252 seconds]
trapped has quit [Read error: Connection reset by peer]
lispmeister has joined #ponylang
bb010g has quit [Quit: Connection closed for inactivity]
aturley has joined #ponylang
aturley has quit [Ping timeout: 246 seconds]
aturley has joined #ponylang
aturley has quit [Ping timeout: 248 seconds]
<SeanTAllen>
(Int | Int) DanC_ ? I'm confused. Can you ask that another way?
_andre has joined #ponylang
jemc has quit [Ping timeout: 244 seconds]
aturley has joined #ponylang
aturley has quit [Ping timeout: 244 seconds]
Praetonus has joined #ponylang
<shepheb>
I do use Arch Linux FWIW but I haven't seen TwoNotes' compilation errors on ARMv7l (RasPi 2) or x86_64.
juanjoc has joined #ponylang
aturley has joined #ponylang
aturley has quit [Ping timeout: 244 seconds]
BrotherLy has joined #ponylang
<BrotherLy>
why on earth would i use ponylang instead of rust
<SeanTAllen>
given your tone, BrotherLy, i doubt you would. if you have specific, polite questions, i'd be happy to answer them.
<sylvanc>
this is your second time trolling, BrotherLy
jemc has joined #ponylang
trapped has joined #ponylang
<ohir>
BrotherLy: use vba, should fit your attitudes well :>
<BrotherLy>
well i need a GUI debugger
<BrotherLy>
and intellisense
<BrotherLy>
if you dont have that, why should i trust that this language is going to make my life easier
<SeanTAllen>
if that is your criteria, you shouldn't.
BrotherLy was kicked from #ponylang by sylvanc [BrotherLy]
BrotherLy has joined #ponylang
<BrotherLy>
whats going on, why kick
<sylvanc>
for trolling. next is a ban.
<BrotherLy>
im not trolling, i really need a language with a debugger
<SeanTAllen>
"why should i trust that this language is going to make my life easier" is trolling
<SeanTAllen>
"why on earth would i use ponylang instead of rust"
<SeanTAllen>
that is not an attempt to engage in conversation
<SeanTAllen>
its wandering into a room and acting like an ass
<BrotherLy>
its provocative but most people never answer if i dont ask like this
<SeanTAllen>
cut the provocative crap
<SeanTAllen>
read the code of conduct
<BrotherLy>
they just say "use the tool for the job" and other non answers like this
<SeanTAllen>
i dont care about your excuses
<SeanTAllen>
be polite or go somewhere else
<BrotherLy>
ok, i have a question then
<BrotherLy>
Can we expect a debugger from the official developers, is it on the todo list?
<jemc>
BrotherLy: in this community we *always* answer polite questions that show some minimal effort to engage with the topic
<jemc>
no need to take on a "provocative" tone to get answers here
<BrotherLy>
ok sorry
<jemc>
honestly I think the answer in this case is that what you are looking for is not on the roadmap for the forseeable future
<SeanTAllen>
i would agree
<jemc>
so if you really need a feature like this, it's probably up to you to build it yourself for pony (this is the best way to get things done in open source) or look to other languages for what you need
<SeanTAllen>
if you want intellisense and a visual debugger that isnt a front end to lldb, that is a ways off, we have plenty of other things to do first.
<BrotherLy>
is there an official roadmap somewhere?
<SeanTAllen>
not yet BrotherLy, working on it. there is handwave-y email from me that i am digging up the link to now
<BrotherLy>
is it alpha, beta? what is the status of the language?
<jemc>
in general, open source is not about coercing people to build what you need - it's more about finding others who need the same things as you and have already started building them
<SeanTAllen>
BrotherLy: that depends on what you mean by alpha, beta etc. we are using it at Sendence to build our product. that said, there's lots around the core language that needs to be done
<SeanTAllen>
if you are looking for a level of maturity to match Rust, I think you need to come back and take a look in a couple years. it takes a while to catch up in terms of tooling etc.
<BrotherLy>
Rust doesnt have good tooling either
<BrotherLy>
it always gets neglected when it's not an initial focus :(
<SeanTAllen>
it going to take at least 3-4 years to start to catch up to java and other things
<BrotherLy>
even golang still doesnt have tooling
<SeanTAllen>
we welcome people who are interested in being part of the community and want to work on things that scratch their itch like tooling
<BrotherLy>
is there gdb support at all, what are the plans to support debugging?
<SeanTAllen>
yes
<SeanTAllen>
you can use gdb and lldb
<SeanTAllen>
although there is a bit of irregularity with stepping pony code that needs to be worked out
<SeanTAllen>
as well as documentation about how you use lldb to debug pony
<Praetonus>
There are open issues about gdb/lldb integration
<SeanTAllen>
i use lldb constantly when debugging pony
<SeanTAllen>
at the moment, i'm focused on documentation. so that there is documentation that tells people "yes we have lldb integration, here is how you do it, here is what you need to look out for"
<SeanTAllen>
my focus after that is going to be around "tooling"
<SeanTAllen>
but documentation takes a while
<BrotherLy>
how are you using ponylang already if it's not finished yet even at the language level? why not just use c++?
<SeanTAllen>
because it makes what is hard about what we are doing easy for us and it makes the trade off in terms of pain we take on worth it
<jemc>
BrotherLy: pony is not c++ - I suggest you read the tutorial and get a feeling for what pony is and is not
<BrotherLy>
rust doesnt have a GC, doesnt that make it always go faster than pony?
<SeanTAllen>
no
<SeanTAllen>
it doesnt make it go slower either
<Praetonus>
The Pony GC is quite awesome
<SeanTAllen>
that like most engineering questions is a "it depends"
<jemc>
BrotherLy: your questions aren't really demonstrating a willingness to engage with the topic
<BrotherLy>
ok sorry jemc
<SeanTAllen>
most manual memory management is actually pretty inefficient, unless you allocate and manage large blocks of memory and then, you are part way to a garbage collector
<SeanTAllen>
gc has a bad reputation because of how gc's like those in the JVM operate
<BrotherLy>
i read an article that said that dropbox stopped using golang because of the GC pauses
<SeanTAllen>
if you are interested in GC as a general topic, I'd suggest checking out how Pony's GC works or BEAM's.
<SeanTAllen>
Each GC has its own characteristics
<jemc>
BrotherLy: one of the interesting features about pony is that GC is done on the actor level - no global pauses
aturley has joined #ponylang
aturley has quit [Ping timeout: 244 seconds]
juanjoc has quit [Remote host closed the connection]
<Praetonus>
What is the name of the finaliser function for primitives? I can't remember it...
<SeanTAllen>
is it dispose @Praetonus ?
<Praetonus>
Tried it, doesn't seem to be this
<Praetonus>
Maybe there is no such function and I'm getting crazy
<Praetonus>
This is strange though, (I think) I clearly remember using a function like this
<sylvanc>
_final
<Praetonus>
sylvanc: So that's a bug, it is not called for me
<sylvanc>
yup, nice catch, that's a regression!
<sylvanc>
pushing a fix now
<sylvanc>
done
<sylvanc>
pushed to master since it was a trivial fix
<ohir>
BrotherLy: how old are you?
<ohir>
BrotherLy: and why you do insist on learning how to program using young languages?
<BrotherLy>
i need to have the best technology to succeed
<ohir>
BrotherLy: so you plan to use cutting-edge technology to get it fast and earn plenty?
<SeanTAllen>
Hey, lets reign this conversation in. BrotherLy has apologized.
<SeanTAllen>
everyone move on
<ohir>
SeanTAllen: I'm trying to get some truth through :)
<SeanTAllen>
Nothing good is going to come from that.
<SeanTAllen>
Move on
<ohir>
BrotherLy: you cannot jump into F1 car straight from the city compact
<ohir>
SeanTAllen: ok
<jemc>
ohir: as far as I'm concerned we shouldn't judge people based on their age, but by how they act - if you already don't like how someone is acting, it's not helpful to the situation to ask "how old are you?"
<ohir>
jemc: of course, we should not
<ohir>
jemc: but if I am to get some behaviour as not plain trolling I must assume a childish behavior
<ohir>
jemc: so my question about age wasnt mean, was just plain
<jemc>
okay
<ohir>
jemc: its good to know sometimes, there are bright kids everywhere
M-hrjet has quit [Remote host closed the connection]
<Praetonus>
sylvanc: Looks like the _final regressions are everywhere. I just tested _final on actors, it doesn't seem to work
<Praetonus>
Works for classes though
aturley has joined #ponylang
<jemc>
Praetonus: thanks for bringing this up - we need to find some way to test for _final regressions
<jemc>
probably as some sort of integration test where we run the compiled program in a subprocess and use @printf in the _final function
aturley has quit [Ping timeout: 260 seconds]
<jemc>
so we can read from stdout and be sure that the @printf output happens
<jemc>
might be a good project for someone with some integration-testing know-how and a desire to help stabilize the language and prevent regressions
<Praetonus>
git bisect points to the code generator rewrite for _final on actors
copy` has joined #ponylang
<jemc>
I was going to say maybe a simple shell script system would be nice for integration testing, but I guess that would exclude testing on non-cygwin windows
<jemc>
(at least I think so - I haven't actually done any development on windows in about 10 years)
<jemc>
so I suppose we'd want to do the test runner process in pony - meaning that we really want to wait until that subprocesss package is ready
<jemc>
so we can read cleanly from stdout and such
<SeanTAllen>
yeah at the moment, ive been manually running minimal-cases that aint pretty
<SeanTAllen>
def make that part of travis build
<SeanTAllen>
want to write up an issue for that jemc? i'm knee deep in docgen.c right now
<jemc>
SeanTAllen: yep, but I'm also going to make a ticket for the subprocess package so I can mark the relation between the two
<sylvanc>
thanks again Praetonus
<sylvanc>
i've got a fix for the actor finalisers too
<sylvanc>
another small one, will push to master
<sylvanc>
pushed
M-hrjet has joined #ponylang
<jemc>
SeanTAllen: should we add another "degree" of labels for blocked issues?
<jemc>
for example, I think "ready for work" is the best description of this integration test enhancement ticket, other than the fact that its blocked by the subprocess package
<jemc>
so maybe we need an "enhancement: blocked" label for such things
<SeanTAllen>
ok
<SeanTAllen>
makes sense
<SeanTAllen>
can you add? (i put those numbers in there purely to get them ordered in a non alphabetical fashion btw)
<jemc>
yep, will add - just wanted to check in with you first since those labels were your baby
<DanC>
so... how do I do a for loop over an Array[T ref] iso?
aturley has quit [Ping timeout: 248 seconds]
aturley has joined #ponylang
<DanC>
and how do I push a T ref onto an Array[T ref]? .push() takes T val
aturley has quit [Ping timeout: 250 seconds]
<DanC>
hm. docs say it takes A, i.e. T ref
<DanC>
but compiler message suggests otherwise
<DanC>
array.pony:186:16: parameter type: MTObject val
<DanC>
fun ref push(value: A): Array[A]^ =>
<DanC>
oops. I see what I did
<Praetonus>
DanC: If you need to keep your isolated Array after the loop, I think you can loop on the indices of the array rather than on the values directly
<DanC>
and if not?
<Praetonus>
Consuming the array to ref before looping seems to be the most straightforward way
<DanC>
so just for x in (consume arr).values() do ... end?
<Praetonus>
I tested that, it doesn't work. You need an intermediate reference
<DanC>
bother. ok
<shepheb>
I have to remember that it's not that you /can't/ alias an iso, just that iso! == tag
<shepheb>
and in particular I can create a Timer iso, alias it into an instance variable, then still consume the iso as I pass it to my Timers instance
aturley has joined #ponylang
<jemc>
I'm also finding tags to be useful for when I need to pass references into the C FFI but make sure they won't be GCd
<jemc>
I can pass the references as tags to a `_Retainer` actor that holds on to those tags as long as I hold a reference to the actor itself
<jemc>
when I'm sure FFI is done with all the references I gave, I can drop the reference to the `_Retainer` actor and leave the pony GC to finally clean them up
<jemc>
this is nice for when an FFI needs to "borrow" string references for example
bb010g has joined #ponylang
<jemc>
but yeah, I can't really do anything with a `String tag`, but holding it makes sure that the underlying string buffer won't be freed
aturley has quit [Ping timeout: 260 seconds]
juanjoc has joined #ponylang
juanjoc has quit [Ping timeout: 264 seconds]
juanjoc has joined #ponylang
aturley has joined #ponylang
aturley has quit [Ping timeout: 250 seconds]
srenatus has quit [Quit: Connection closed for inactivity]
<shepheb>
how easily can I detect ctrl-c and run some disposers?
<shepheb>
alternatively, can I do something from _final like _env.out.write("\x1b[?25h") to un-hide the cursor?
<jemc>
shepheb: did you see the `signals` package in the standard library already?
<shepheb>
I had not seen that! cool, that should work nicely.
<jemc>
I haven't used it, but it seems like it should do what you want with Ctrl+C
<SeanTAllen>
its working well for us
<shepheb>
cool. I'm not sure what I need to keep a pointer to to keep the thing from getting GC'd; it doesn't seem to be firing for me.
<shepheb>
but I should be doing somethign else, anyway; I'll fiddle with this over the weekend.
<DanC>
do we have WeakMaps?
<jemc>
DanC: not that I know of
juanjoc has quit [Quit: Leaving]
<SeanTAllen>
that would basically be a Map where the key is a `tag` no?
<SeanTAllen>
actually no
<SeanTAllen>
that very much wouldnt
<shepheb>
Signals claims not to hang onto the pointer, but it probably just hands off to the FFI.
<jemc>
shepheb: if Signals doesn't hang onto the pointer, but you want to keep it from being GC'd you need to hold on to it yourself
<jemc>
and keep it reachable from some actor that isn't going to be GC'd itself
<jemc>
SeanTAllen: yeah, holding on to the tag should keep things from being GC'd (or at least I have FFI code banking on that as I described above with my `_Retainer` actor)
<SeanTAllen>
i'm a little tired. this documentation layout change took a lot out of me.
<SeanTAllen>
baby steps towards much more readable autogenerated documentation
<SeanTAllen>
jemc: i'm going to start work in splitting into different backends soon for documentation. i can convert to Pony later.
<SeanTAllen>
in the meantime, C it will be.
|jemc-bot| has quit [Ping timeout: 276 seconds]
_andre has quit [Quit: leaving]
|jemc-bot| has joined #ponylang
<jemc>
SeanTAllen: the AST parser is almost done (just need to write some tests) - but I think the subprocess package is the other blocker for the pony tooling work
<jemc>
since we'll need to coordinate between ponyc and whatever documentation plugin
<SeanTAllen>
wherein sean finds an error in the documentation generator that predated him
Praetonus has quit [Ping timeout: 260 seconds]
Praetonus has joined #ponylang
trapped has quit [Read error: Connection reset by peer]
prettyvanilla has quit [Ping timeout: 246 seconds]