01:17
jcea has quit [Remote host closed the connection]
01:29
jcea has joined #pypy
01:35
zmt01 has quit [Quit: Leaving]
01:44
zmt00 has joined #pypy
01:49
jcea has quit [Remote host closed the connection]
01:50
jcea has joined #pypy
02:40
jcea has quit [Quit: jcea]
02:46
fryguybob has quit [Remote host closed the connection]
03:12
Garen has quit [Read error: Connection reset by peer]
03:13
Garen has joined #pypy
03:49
dddddd has quit [Quit: Hasta otra..]
05:20
oberstet has joined #pypy
05:23
marky1991 has joined #pypy
05:23
marky1991 has quit [Remote host closed the connection]
05:28
toad_poloest has joined #pypy
05:29
user24 has quit [Quit: Leaving]
05:30
toad_poloer has quit [Read error: Connection reset by peer]
05:54
<
mattip >
ronan: any idea why "with pytest.raises(Execption)" fails on py3.6?
05:54
<
mattip >
in -A tests
06:03
darkman66 has joined #pypy
06:13
darkman66 has quit [Remote host closed the connection]
06:27
darkman66 has joined #pypy
06:47
altendky has quit [Quit: Connection closed for inactivity]
06:58
darkman66 has quit [Remote host closed the connection]
07:02
darkman66 has joined #pypy
07:06
petronny has quit [Read error: Connection reset by peer]
07:06
kcr has quit [Read error: Connection reset by peer]
07:06
petronny has joined #pypy
07:06
kcr has joined #pypy
08:32
darkman66 has quit [Remote host closed the connection]
08:37
Ai9zO5AP has joined #pypy
08:37
jacob22_ has quit [Ping timeout: 245 seconds]
08:39
andi- has quit [Ping timeout: 258 seconds]
08:44
darkman66 has joined #pypy
08:47
andi- has joined #pypy
08:48
<
kenaan >
stevie_92 cpyext-gc-cycle 0b7ae798b964 /: Clear weakref callbacks in rawrefcounted garbage to avoid resurrection
08:55
andi- has quit [Excess Flood]
09:09
<
arigato >
Alex_Gaynor: hey, you here?
09:24
darkman66 has quit [Remote host closed the connection]
09:24
darkman66 has joined #pypy
09:26
darkman66 has quit [Remote host closed the connection]
09:26
darkman66 has joined #pypy
09:30
<
fijal >
I think it's 5:30 am for him
09:34
<
arigato >
just trying :-)
09:36
andi- has joined #pypy
09:56
danchr_ has joined #pypy
10:01
jacob22 has joined #pypy
10:02
danchr has joined #pypy
10:03
<
danchr >
listclients
10:03
<
danchr >
oops, sorry
10:31
ronan has quit [Ping timeout: 252 seconds]
10:44
ronan has joined #pypy
10:55
dddddd has joined #pypy
11:16
<
RemoteFox >
what are you using when you try to profile interpreter in rpython?
11:16
<
RemoteFox >
I have some success with callgrind and perf
11:17
<
RemoteFox >
but often I have to just blindly change and try a lot of things until I get some sense of what specific line is causing trouble
11:17
<
RemoteFox >
for example, to rewrite if something to if something is not None resulted in huge performance gains
11:18
<
RemoteFox >
is there any tool which would visualise how much costly is each line?
11:31
<
cfbolz >
RemoteFox: which language is that?
11:33
darkman66 has quit [Remote host closed the connection]
11:34
<
RemoteFox >
you mean my language?
11:35
altendky has joined #pypy
11:48
<
cfbolz >
RemoteFox: cool!
11:49
<
cfbolz >
What we usually do is to study the traces that the jit produces for small programs, and look at how efficient they are
11:57
darkman66 has joined #pypy
11:57
<
cfbolz >
RemoteFox: the process switching looks pretty hard for rpython
11:58
<
cfbolz >
RemoteFox: also, are loops primitives?
12:01
<
cfbolz >
Ah, not even, they are implemented with recursion, correct?
12:01
<
cfbolz >
If yes, does the language have tail recursion elimination?
12:06
<
RemoteFox >
yeah, I've added tail call elimination
12:06
<
RemoteFox >
they are not primitives, they are .. recursive messages between objects
12:06
<
RemoteFox >
I will probably do the process switching differently
12:07
<
RemoteFox >
I was trying to get into some at-least-partially-working version of proof of concept and then I've spent few months by speedups
12:08
<
RemoteFox >
it is now almost usably fast, so I will focus more on the architecture and stdlib
12:08
<
RemoteFox >
I have no complang theory, so it may all be inefficient and amateur-ish
12:09
<
RemoteFox >
right now I am at process of elimination of lists and dicts everywhere where it makes any sense
12:10
<
RemoteFox >
I've had frames and stacks implemented as lists and I've rewritten stack to linked list and saved like 1 bilion of instructions per 1M while cycles
12:10
<
RemoteFox >
so.. yeah, huge space for improvements
12:13
xcm has quit [Remote host closed the connection]
12:14
<
cfbolz >
RemoteFox: the reason why rpython's jit is not doing so great is that the model is quite different than python, where loops are really explicit in the bytecode
12:14
<
cfbolz >
I can try to look whether it's possible to teach the jit about loops in your model
12:15
<
RemoteFox >
wow, that would be great
12:15
xcm has joined #pypy
12:22
<
cfbolz >
RemoteFox: can you give the command I need to run to execute the while loop benchmark?
12:23
fryguybob has joined #pypy
12:24
<
Alex_Gaynor >
arigato: I am now
12:26
<
RemoteFox >
I am using "pypy src/target.py tests/scripts/while_true_benchmark.self", but it expects export PYTHONPATH="src/:$HOME/Plocha/src/testy/packages/pypy:$PYTHONPATH";
12:27
<
RemoteFox >
compilation works by running ./compile.py with export RPYTHON_PATH="$HOME/Plocha/src/testy/packages/pypy/rpython/bin"
12:28
<
RemoteFox >
while_true_benchmark.self is really not greatly named, it is more unittest than benchmark, it just counts to 500
12:28
<
RemoteFox >
simple_while_benchmark.self is while count to 1 milion
12:29
<
cfbolz >
ok, will take a look
12:35
nunatak has joined #pypy
12:35
darkman66 has quit [Remote host closed the connection]
12:40
darkman66 has joined #pypy
12:45
darkman66 has quit [Remote host closed the connection]
12:45
darkman66 has joined #pypy
12:48
Rhy0lite has joined #pypy
12:48
<
fijal >
is bitbucket down?
12:49
<
cfbolz >
RemoteFox: ok, I got stuff running, will poke around for a bit
12:50
darkman66 has quit [Ping timeout: 252 seconds]
12:50
<
fijal >
can't push it seems
12:51
<
fijal >
anyway, got one more test to pass I guess
12:51
<
cfbolz >
RemoteFox: can you give me a hint where tail call optimization is implemented?
12:58
<
fijal >
pom pom pom
13:06
<
marmoute >
Talking about bitbucket, feel free to hit our mirror of your repo for pulling
13:07
darkman66 has joined #pypy
13:07
<
RemoteFox >
cfbolz: interpreter.py / method _tco_applied
13:11
adamholmberg has joined #pypy
13:18
<
RemoteFox >
there is also some code in _create_intermediate_params_obj
13:19
antocuni has joined #pypy
13:19
<
RemoteFox >
but that shouldn't matter, it just handles loops in parameter object parent chains
13:28
<
mattip >
are there any blocker issues for 7.1.1 ?
13:29
<
mattip >
2983 readline outputting \u0000
13:29
<
mattip >
2996 about kwargs
13:30
<
cfbolz >
mattip: yes, I am a bit scared by 2983
13:30
<
cfbolz >
There was a similar problem and it turned out to be a serious bug in utf-8 stuff
13:30
<
mattip >
ok. Any idea how to diagnose?
13:31
<
cfbolz >
mattip: no :-(
13:31
<
cfbolz >
mattip: can you reproduce it? Eg try typing some Hebrew letters in the interactive interpreter?
13:32
<
mattip >
there is also 2985 os.replace(..., pathlike), but that seems like a new feature in 3.6 not yet supported
13:32
<
fijal >
yeah hg push does not work for me at all
13:33
nunatak has quit [Quit: Leaving]
13:33
<
cfbolz >
mattip: yes, that is missing support for
__fspath__ for some os methods, I fear
13:34
<
mattip >
typing hebrew works fine, I can assign a non-latin string to a variable and print it
13:34
<
mattip >
with LANG=en_US.UTF-8
13:34
<
antocuni >
I can reproduce it
13:36
<
antocuni >
what I did was to type "a = 'à'"
13:36
<
antocuni >
and then press arrow up
13:36
<
antocuni >
with the latest nightly
13:36
<
antocuni >
note that it seems that \u0000 is only *displayed*, not really passed to the parser
13:37
<
mattip >
hmm. What routine does arrow-up go to?
13:37
<
antocuni >
even more interesting: the same bug appears also in pdb, so it's really an issue in readline
13:37
<
cfbolz >
Not necessarily
13:37
<
cfbolz >
Could be in pyrepl
13:38
<
antocuni >
well, our readline is the pyrepl's one :)
13:38
<
mattip >
I get max(n-1, 1) '\u000' chars depending on the length of a
13:38
<
cfbolz >
And last time we had a very similar effect, but it turned out to be a bug in str.join
13:38
<
antocuni >
it's not deterministic also
13:38
<
cfbolz >
antocuni: note that it's pure python. So it's likely a bug in unicode or something like that
13:38
<
antocuni >
if I press up and down multiple times, sometimes I get \u0000
13:38
<
antocuni >
sometimes I get nothing
13:39
<
antocuni >
and sometimes I get different values such as \u0001 or \u0008
13:39
<
mattip >
"n-1 or 1" would go along with the join idea
13:39
<
antocuni >
cfbolz: I fear so
13:40
<
antocuni >
also, pressing up and down sometimes "erases" the prompt
13:45
<
antocuni >
FWIW, pypy2 seems to behave correctly
13:57
marky1991 has joined #pypy
13:59
dmalcolm has quit [Quit: Leaving]
14:11
darkman66 has quit [Remote host closed the connection]
14:11
darkman66 has joined #pypy
14:14
darkman66 has quit [Remote host closed the connection]
14:14
darkman66 has joined #pypy
14:18
rtw_ has joined #pypy
14:20
rtw_ has quit [Client Quit]
14:29
<
cfbolz >
RemoteFox: there's a ton of work to do to make things efficient, I fear :-(
14:29
<
antocuni >
so, I discovered something
14:29
<
antocuni >
the correct place where to look at is pyrepl.reader:calc_screen()
14:29
<
RemoteFox >
cfbolz: yeah, I thought so
14:29
<
RemoteFox >
where would you start?
14:29
<
antocuni >
if you put some prints there, you can see that "lines" contains the correct data
14:30
<
RemoteFox >
get rid of process switching?
14:30
<
antocuni >
but the computed "screen" (which is the data to display I suppose) contains the \u0000
14:30
<
antocuni >
calc_screen: lines= ["a = 'à'"]
14:30
<
antocuni >
calc_screen: screen= [">>>> a = 'à'\\u0000"]
14:31
<
antocuni >
so probably the bug manifests itself inside some computation done by calc_screen
14:31
<
cfbolz >
RemoteFox: I can make a pull request to give you a complete hack of a file that lets you look at the trace without translating every time
14:31
<
antocuni >
I need to go now, feel free to continue from here, or I'll continue later
14:31
<
cfbolz >
RemoteFox: that improves the turnaround time of improving things
14:31
<
RemoteFox >
cfbolz: that would be nice
14:32
<
cfbolz >
RemoteFox: the process switching is not the worst problem
14:32
<
RemoteFox >
I think I understand what you said
14:32
<
RemoteFox >
basically tco is not good for jit, as it can't see it in the bytecode, correct?
14:32
<
cfbolz >
no, tco is great!
14:33
<
cfbolz >
otherwise it wouldn't work at all ;-)
14:33
<
RemoteFox >
(it didn't :D)
14:35
<
cfbolz >
RemoteFox: given a code object, is there a way to get the name of the method or something?
14:36
<
RemoteFox >
you mean CodeContext, or Object with code?
14:36
<
RemoteFox >
CodeContext, which is the class that holds bytecodes at the moment doesn't know about method-object it is in
14:36
<
RemoteFox >
but it would be possible to add it
14:42
Zaab1t has joined #pypy
14:46
marky1991 has quit [Ping timeout: 240 seconds]
15:02
darkman66 has quit [Remote host closed the connection]
15:08
<
cfbolz >
RemoteFox: yes, that would be useful to understand the generated code more easily
15:11
<
cfbolz >
RemoteFox: the other thing that would be useful: it should be possible to compute the maximum stack depth of each method, right?
15:12
<
cfbolz >
that way, the value stack could be represented as a fixed sized list using an index as the stack pointer
15:12
<
cfbolz >
that would help the JIT
*a ton*
15:22
<
RemoteFox >
yeah, that should be possible
15:26
<
RemoteFox >
thanks, merged
15:27
<
cfbolz >
RemoteFox: ok, the fixed-sized list as value stack should help
15:28
<
RemoteFox >
I will try that later today, when I get home
15:28
<
RemoteFox >
thanks for your help
15:29
<
cfbolz >
RemoteFox: ping me when you have the fixed-sized list, I can take another look then
15:34
darkman66 has joined #pypy
15:36
<
cfbolz >
RemoteFox: the other more general problem is that all your objects have a bit too many fields. BareObject has 5 fields, including 2 lists!
15:36
<
cfbolz >
eg ints should really just have a single value field somehow
15:37
<
cfbolz >
or is it allowed to add arbitrary methods to the number 5?
15:37
<
RemoteFox >
it is allowed, but not recommended :]
15:38
<
cfbolz >
then you can still make Ints smaller by giving them a value field, and one second field for all the extra stuff that is usually None
15:38
<
cfbolz >
or something like that
15:39
<
RemoteFox >
from what I can see, the code is much faster alredy, I mean jitted benchmark now runs 100% faster
15:39
<
RemoteFox >
thanks for that
15:39
<
RemoteFox >
cfbolz: yeah, I will look into it again
15:39
<
cfbolz >
RemoteFox: nice!
15:39
<
cfbolz >
but there is probably another 10x speedup possible, at least
15:40
<
toad_poloest >
Is there a way to specify the signature is METH_O?
15:40
<
toad_poloest >
Seems like it's just the function body with that import_extension function.
15:46
<
cfbolz >
RemoteFox: fwiw, I've written my own strange self dialect at some point, so I know some of the problems ;-)
15:47
darkman66 has quit [Remote host closed the connection]
15:47
<
toad_poloest >
Oh, found an example, the default argument is called "args"
15:49
<
RemoteFox >
as I visit publicly accessible classes where he is teaching graalvm to compsci students and he wanted a language to use as example, so I am curious where this will lead
15:49
<
cfbolz >
RemoteFox: cool
15:50
<
RemoteFox >
(accidentally, as I didn't suggest Self as a language, but I am writing a series of blogs about the language and he saw it on my twitter)
15:50
darkman66 has joined #pypy
15:59
<
toad_poloest >
I am actually having a bit of trouble with this, I moved the definition of the GMT1 class in test_datetime up to module scope, because I wanted to use it in test_constructors.py.
16:00
<
toad_poloest >
It still works in test_tzinfo, but test_constructors.py is throwing "(application-level) NameError: global name 'GMT1' is not defined"
16:01
<
toad_poloest >
Given that `datetime` is imported in test_constructors, I'm guessing somehow it's not able to look things up at module level scope. Should I just re-define the same tzinfo object within the test function?
16:01
<
toad_poloest >
Or is there a way to reveal that symbol?
16:03
<
cfbolz >
toad_poloest: yes, the scoping is wonky in applevel tests
16:04
<
cfbolz >
toad_poloest: you indeed cannot look up things in the module level scope from each test function
16:04
<
cfbolz >
toad_poloest: the global level is python2, each individual test runs on top of the pypy interpreter
16:04
<
toad_poloest >
Weird, OK, I'll just make a new tzinfo object.
16:13
marky1991 has joined #pypy
16:18
darkman66 has quit [Remote host closed the connection]
16:19
darkman66 has joined #pypy
16:24
darkman66 has quit [Ping timeout: 255 seconds]
16:26
marky1991 has quit [Ping timeout: 240 seconds]
16:28
darkman66 has joined #pypy
16:29
darkman66 has quit [Remote host closed the connection]
16:30
darkman66 has joined #pypy
16:34
darkman66 has quit [Ping timeout: 252 seconds]
16:43
marky1991 has joined #pypy
16:53
marky1991_2 has joined #pypy
16:56
marky1991 has quit [Ping timeout: 250 seconds]
17:01
<
antocuni >
it is likely caused by the utf8 branch, but I didn't investigate further
17:02
darkman66 has joined #pypy
17:03
darkman66 has quit [Remote host closed the connection]
17:03
darkman66 has joined #pypy
17:07
antocuni has quit [Ping timeout: 264 seconds]
17:10
darkman66 has quit [Remote host closed the connection]
17:13
gsnedders has quit [Quit: leaving]
17:13
darkman66 has joined #pypy
17:15
gsnedders has joined #pypy
17:21
darkman66 has quit [Remote host closed the connection]
17:23
darkman66 has joined #pypy
17:24
darkman66 has quit [Remote host closed the connection]
17:24
darkman66 has joined #pypy
17:32
dustinm- has quit [Quit: Leaving]
17:35
dustinm has joined #pypy
17:47
jcea has joined #pypy
17:53
oberstet has quit [Quit: Leaving]
18:09
darkman6_ has joined #pypy
18:09
darkman66 has quit [Read error: Connection reset by peer]
18:13
darkman6_ has quit [Ping timeout: 252 seconds]
18:45
darkman66 has joined #pypy
18:47
darkman66 has quit [Read error: Connection reset by peer]
18:53
darkman66 has joined #pypy
19:12
fling has joined #pypy
19:14
Zaab1t has quit [Quit: bye bye friends]
19:21
marky1991_2 has quit [Quit: Saliendo]
19:21
marky1991 has joined #pypy
19:34
darkman66 has quit [Remote host closed the connection]
19:50
darkman66 has joined #pypy
20:04
Ai9zO5AP has quit [Quit: WeeChat 2.4]
20:04
darkman66 has quit [Remote host closed the connection]
20:12
darkman66 has joined #pypy
20:17
Rhy0lite has quit [Quit: Leaving]
20:22
jacob22 has quit [Read error: Connection reset by peer]
20:25
jacob22 has joined #pypy
20:37
<
toad_poloest >
I have created two PRs, against the 2.7 and 3.6 branches, respectively.
20:39
<
toad_poloest >
I don't see anything in the contributing guide about a changelog, please let me know if I need to do anything.
20:49
darkman66 has quit [Remote host closed the connection]
20:57
darkman66 has joined #pypy
20:58
darkman66 has quit [Remote host closed the connection]
20:58
darkman66 has joined #pypy
21:04
darkman6_ has joined #pypy
21:07
TwoPilesOfDirt has joined #pypy
21:08
darkman66 has quit [Ping timeout: 255 seconds]
21:15
TwoPilesOfDirt has quit [Quit: Leaving]
21:16
TwoPilesOfDirt has joined #pypy
21:17
TwoPilesOfDirt has quit [Client Quit]
21:17
TwoPilesOfDirt has joined #pypy
21:29
TwoPilesOfDirt has quit [Quit: Leaving]
21:29
TwoPilesOfDirt has joined #pypy
21:30
PileOfDirt has joined #pypy
21:30
TwoPilesOfDirt has quit [Read error: Connection reset by peer]
21:38
speeder39_ has joined #pypy
22:19
darkman66 has joined #pypy
22:23
darkman6_ has quit [Ping timeout: 250 seconds]
22:36
darkman66 has quit [Remote host closed the connection]
22:43
moei has quit [Quit: Leaving...]
22:43
marky1991 has quit [Ping timeout: 252 seconds]
22:50
[Arfrever] has quit [Ping timeout: 250 seconds]
23:50
adamholmberg has quit [Remote host closed the connection]