These are chat archives for dropbox/pyston

4th
Jun 2015
andrewchambers
@andrewchambers
Jun 04 2015 02:42
Gitters rendering could make for some interesting bots
Can it do images? A bot could plot graphs etc which might be cool
Chris Toshok
@toshok
Jun 04 2015 04:20
so close to 5 seconds:
real    0m6.095s
Chris Toshok
@toshok
Jun 04 2015 05:56
thoughts? toshok/pyston@d053a56
been thinking we could probably shrink down the code in runtime quite a bit using some template functions. hopefully without any perf hit
Travis Hance
@tjhance
Jun 04 2015 05:59
what do you mean by “shrink down the code in runtime”?
is this just better code quality/maintainability, or is there supposed to be some runtime improvement?
An Long
@aisk
Jun 04 2015 06:00
Hi, should I make true make sure make check returns 0 before make PR?
Chris Toshok
@toshok
Jun 04 2015 06:01
i don’t think there’ll be any runtime improvement
@aisk: most of us run make quick_check before making a pr and let travis-ci worry about the longer running tests
@tjhance: that change is +73, -142. we just have a lot of very big functions that would be more easily digestible if they were smaller imo. so maintainability, not performance
Travis Hance
@tjhance
Jun 04 2015 06:04
yeah that’s what it looked like, I was just confused by your wording
sounds good to me :)
An Long
@aisk
Jun 04 2015 06:08
In my machine make check and make quick_check always failed even on the master branch...
Chris Toshok
@toshok
Jun 04 2015 07:07
real    0m5.987s
Marius Wachtler
@undingen
Jun 04 2015 13:10
@aisk what error are you getting?
Chris Toshok
@toshok
Jun 04 2015 17:01
I almost think we should do our performance comparisons with stats turned off completely
even the counters
Travis Hance
@tjhance
Jun 04 2015 17:03
why wouldn’t we?
Chris Toshok
@toshok
Jun 04 2015 17:03
there’s the argument to be made that we’ll need/want some sort of performance counters in production
Travis Hance
@tjhance
Jun 04 2015 17:04
ah
Chris Toshok
@toshok
Jun 04 2015 17:06
it might just be a matter of having too many stat counters now, and the closer we get we can start turning some off, and that might help
disabling them drops runtime by .2 seconds, though, so it’s not insignificant
Travis Hance
@tjhance
Jun 04 2015 17:10
.2 seconds out of how much?
Chris Toshok
@toshok
Jun 04 2015 17:11
  1. drops from 6.073 to 5.852
err, that’s a "6"
gitter thought I wanted a markdown list
probably just another symptom of hitting the slowpaths too often, and fixing that will lessen the difference
Chris Toshok
@toshok
Jun 04 2015 18:24
ugh, crap. I changed BoxedTracebacks to be more like cpython in that they have a tb_next link (actually user visible if you re-raise with the same traceback object), to avoid having to copy the lines vector to the new traceback object
but that means we’re not gc allocating from inside the unwinder
s/not/now
actually, @kmod - why is that a problem again?
Chris Toshok
@toshok
Jun 04 2015 18:29
we definitely don’t want user code running while unwinding, but i don’t know how that would happen (until the begin_catch that is)
Marius Wachtler
@undingen
Jun 04 2015 18:39
can't we just disable the collector while unwinding?
Chris Toshok
@toshok
Jun 04 2015 18:48
I don't think that disabling it would be safe either, given that it's also allocating
Kevin Modzelewski
@kmod
Jun 04 2015 19:44
the issue I was running into is that we don't register the intermediate unwinding state with the gc
I think if we do that it's ok to do gcs from the unwinder as far as I know
Chris Toshok
@toshok
Jun 04 2015 19:46
hm, what intermediate state needs registering? the exception ferry (type/value/traceback)?
Marius Wachtler
@undingen
Jun 04 2015 20:39
demn this whole multidict (+ storing int,float,str keys unboxed) is harder than I thought....
Marius Wachtler
@undingen
Jun 04 2015 20:46
I also just realized that there is a very strong implicit relation between the value __hash__ return and the __eq__. For example if we have d = { 2: "zwei" }; print d[2L] won't work currently. Because it's very important that 2L, 2, 2.0 return the same hash. I changed float lately so I think long is the only one which needs to be changed.
Chris Toshok
@toshok
Jun 04 2015 20:51
ugh, thread local variables aren’t propagated to subprocesses
even (it seems) the thread that does the forking :/
Rudi Chen
@rudi-c
Jun 04 2015 22:54
So the stack can contain lingering references to unreachable objects, causing them to end up getting marked during the conservative scan of the stack. Are there other places that can have lingering references? Like can there be in the heap?
Chris Toshok
@toshok
Jun 04 2015 22:55
they can be in generator stacks if the generators are still alive
those are on the heap and scanned conservatively