00:04
pitr-ch has quit [Ping timeout: 244 seconds]
00:06
enebo has quit [Quit: enebo]
00:07
pitr-ch has joined #jruby
00:10
pitr-ch has quit [Read error: Connection reset by peer]
00:11
pitr-ch has joined #jruby
00:15
pitr-ch has quit [Ping timeout: 244 seconds]
00:16
pitr-ch has joined #jruby
00:26
pitr-ch has quit [Read error: Connection reset by peer]
00:28
pitr-ch has joined #jruby
00:34
e_dub has quit [Quit: ZZZzzz…]
00:41
camlow32_ has quit []
01:04
pitr-ch has quit [Ping timeout: 276 seconds]
01:05
pitr-ch has joined #jruby
01:15
pitr-ch has quit [Ping timeout: 276 seconds]
01:16
pitr-ch has joined #jruby
01:21
e_dub has joined #jruby
01:25
pitr-ch has quit [Ping timeout: 260 seconds]
01:26
pawnbox has joined #jruby
01:27
pitr-ch has joined #jruby
01:28
<
nirvdrum >
headius: Sorry, just saw this. Are you still around?
01:31
pawnbox has quit [Ping timeout: 240 seconds]
01:39
pitr-ch has quit [Read error: Connection reset by peer]
01:39
pitr-ch_ has joined #jruby
01:56
pitr-ch_ has quit [Read error: Connection reset by peer]
01:56
pitr-ch has joined #jruby
02:02
pawnbox has joined #jruby
02:06
pitr-ch has quit [Read error: Connection reset by peer]
02:07
pawnbox has quit [Ping timeout: 250 seconds]
02:09
<
GitHub44 >
jruby/truffle-head 279e0bd Chris Seaton: Merge branch 'master' into truffle-head
02:14
pitr-ch has joined #jruby
02:17
e_dub has quit [Read error: Connection reset by peer]
02:18
e_dub has joined #jruby
02:26
johnsonch_afk is now known as johnsonch
02:37
pitr-ch has quit [Ping timeout: 276 seconds]
02:38
pitr-ch has joined #jruby
02:44
pitr-ch has quit [Read error: Connection reset by peer]
02:46
pitr-ch has joined #jruby
02:51
pitr-ch has quit [Read error: Connection reset by peer]
02:54
pawnbox has joined #jruby
02:58
pawnbox has quit [Ping timeout: 240 seconds]
03:00
nirvdrum has quit [Ping timeout: 276 seconds]
03:06
Aethenelle has quit [Quit: Aethenelle]
03:07
johnsonch is now known as johnsonch_afk
03:23
pawnbox has joined #jruby
03:27
pawnbox has quit [Ping timeout: 244 seconds]
03:52
e_dub has quit [Quit: It's a hard knock life]
03:53
pitr-ch has joined #jruby
03:58
pitr-ch has quit [Ping timeout: 246 seconds]
04:02
e_dub has joined #jruby
04:16
e_dub has quit [Read error: Connection reset by peer]
04:16
e_dub has joined #jruby
04:31
pawnbox has joined #jruby
04:44
yfeldblum has quit [Remote host closed the connection]
05:30
yfeldblum has joined #jruby
05:30
yfeldblum has quit [Remote host closed the connection]
05:31
yfeldblum has joined #jruby
06:06
thedarkone2 has quit [Quit: thedarkone2]
06:28
skade has joined #jruby
06:30
donV has joined #jruby
06:32
skade has quit [Ping timeout: 250 seconds]
06:43
<
GitHub18 >
[jruby] kares reopened pull request #3383: public org.jruby.Runtime.Profile.Builtin::MethodData (jruby-1_7...public_o_j_r_profile_builtin_MethodData)
https://git.io/vCG2v
07:11
skade has joined #jruby
07:11
skade has quit [Client Quit]
07:27
elia has joined #jruby
07:35
skade has joined #jruby
07:45
pawnbox has quit [Remote host closed the connection]
07:45
pawnbox has joined #jruby
07:53
yfeldblum has quit [Ping timeout: 240 seconds]
07:53
e_dub has quit [Read error: Connection reset by peer]
07:54
e_dub has joined #jruby
08:03
pitr-ch has joined #jruby
08:04
brauliobo has joined #jruby
08:11
skade has quit [Quit: Computer has gone to sleep.]
08:15
yfeldblum has joined #jruby
08:17
pitr-ch has quit [Ping timeout: 240 seconds]
08:19
pitr-ch has joined #jruby
08:31
pawnbox has quit [Ping timeout: 240 seconds]
08:46
skade has joined #jruby
08:53
pawnbox has joined #jruby
09:03
yfeldblum has quit [Ping timeout: 250 seconds]
09:07
skade has quit [Quit: Computer has gone to sleep.]
09:08
pawnbox has quit [Remote host closed the connection]
09:09
pawnbox has joined #jruby
09:10
donV has quit [Quit: donV]
09:10
skade has joined #jruby
09:22
shellac has joined #jruby
09:22
donV has joined #jruby
09:23
pitr-ch has quit [Read error: Connection reset by peer]
09:25
skade has quit [Quit: Computer has gone to sleep.]
09:25
pitr-ch has joined #jruby
09:27
skade has joined #jruby
09:30
pitr-ch has quit [Read error: Connection reset by peer]
09:32
skade has quit [Quit: Computer has gone to sleep.]
09:34
pitr-ch has joined #jruby
09:35
skade has joined #jruby
09:36
Prasun has joined #jruby
09:36
yfeldblum has joined #jruby
09:41
yfeldblum has quit [Ping timeout: 250 seconds]
09:43
pitr-ch has quit [Read error: Connection reset by peer]
09:45
pitr-ch has joined #jruby
09:48
pawnbox_ has joined #jruby
09:50
pawnbox has quit [Ping timeout: 246 seconds]
10:00
pitr-ch has quit [Read error: Connection reset by peer]
10:02
vyorkin has joined #jruby
10:04
pitr-ch has joined #jruby
10:04
vyorkin has quit [Client Quit]
10:04
vyorkin has joined #jruby
10:05
vyorkin has quit [Client Quit]
10:05
vyorkin has joined #jruby
10:06
vyorkin has quit [Client Quit]
10:11
skade has quit [Quit: Computer has gone to sleep.]
10:14
Prasun has quit [Ping timeout: 246 seconds]
10:45
pitr-ch has quit [Ping timeout: 250 seconds]
10:45
pawnbox_ has quit [Ping timeout: 244 seconds]
10:46
shellac has quit [Quit: Computer has gone to sleep.]
10:46
pawnbox has joined #jruby
10:47
pitr-ch has joined #jruby
10:49
pawnbox has quit [Remote host closed the connection]
10:49
pawnbox has joined #jruby
10:51
cremes has quit [Read error: Connection reset by peer]
10:53
cremes has joined #jruby
10:53
pawnbox has quit [Ping timeout: 246 seconds]
10:54
Prasun has joined #jruby
11:00
donV has quit [Quit: donV]
11:00
pitr-ch has quit [Read error: Connection reset by peer]
11:02
pitr-ch has joined #jruby
11:04
elia has quit [Quit: Computer has gone to sleep.]
11:04
donV has joined #jruby
11:05
donV has quit [Client Quit]
11:07
pawnbox has joined #jruby
11:10
pawnbox has quit [Read error: Connection reset by peer]
11:11
pawnbox has joined #jruby
11:18
donV has joined #jruby
11:31
skade has joined #jruby
11:35
grs has quit [Ping timeout: 260 seconds]
11:45
skade has quit [Quit: Computer has gone to sleep.]
11:48
grs has joined #jruby
11:50
shellac has joined #jruby
11:58
nirvdrum has joined #jruby
11:59
skade has joined #jruby
12:05
pitr-ch has quit [Read error: Connection reset by peer]
12:06
pitr-ch has joined #jruby
12:06
elia has joined #jruby
12:09
pitr-ch has quit [Read error: Connection reset by peer]
12:11
pitr-ch has joined #jruby
12:17
pawnbox has quit [Read error: Connection reset by peer]
12:18
pawnbox has joined #jruby
12:20
pitr-ch has quit [Read error: Connection reset by peer]
12:22
pitr-ch has joined #jruby
12:31
skade has quit [Quit: Computer has gone to sleep.]
12:32
e_dub has quit [Read error: Connection reset by peer]
12:33
e_dub has joined #jruby
12:36
skade has joined #jruby
12:42
skade has quit [Quit: Computer has gone to sleep.]
12:44
bbrowning_away is now known as bbrowning
12:45
Prasun has quit [Ping timeout: 276 seconds]
12:46
skade has joined #jruby
12:48
pitr-ch has quit [Ping timeout: 276 seconds]
12:48
Prasun has joined #jruby
12:49
pitr-ch has joined #jruby
12:53
pitr-ch has quit [Ping timeout: 244 seconds]
12:56
pitr-ch has joined #jruby
12:57
lance|afk is now known as lanceball
12:59
tcrawley-away is now known as tcrawley
13:02
pitr-ch has quit [Ping timeout: 240 seconds]
13:03
pitr-ch has joined #jruby
13:05
<
headius >
good morning
13:05
Prasun has quit [Ping timeout: 276 seconds]
13:07
pitr-ch has quit [Ping timeout: 240 seconds]
13:09
pitr-ch has joined #jruby
13:14
skade has quit [Quit: Computer has gone to sleep.]
13:16
Prasun has joined #jruby
13:16
pitr-ch has quit [Read error: Connection reset by peer]
13:16
pitr-ch_ has joined #jruby
13:19
pawnbox_ has joined #jruby
13:19
skade has joined #jruby
13:22
Aethenelle has joined #jruby
13:22
<
headius >
nirvdrum: what fixed those errors on Windows for you?
13:22
<
headius >
or did they just go away?
13:23
pawnbox has quit [Ping timeout: 260 seconds]
13:24
johnsonch_afk is now known as johnsonch
13:30
pawnbox_ has quit [Remote host closed the connection]
13:31
pitr-ch_ has quit [Read error: Connection reset by peer]
13:31
pitr-ch has joined #jruby
13:37
pitr-ch has quit [Read error: Connection reset by peer]
13:38
pitr-ch has joined #jruby
13:39
pawnbox has joined #jruby
13:39
<
nirvdrum >
headius: The ones I fixed a week or so back?
13:40
<
headius >
it looked like the same set failing for me yesterday
13:40
<
nirvdrum >
It was a few things.
13:41
pawnbox has quit [Remote host closed the connection]
13:41
pawnbox has joined #jruby
13:41
<
nirvdrum >
Which failure are you seeing?
13:42
pitr-ch has quit [Ping timeout: 260 seconds]
13:43
pitr-ch has joined #jruby
13:45
skade has quit [Quit: Computer has gone to sleep.]
13:51
skade has joined #jruby
13:53
enebo has joined #jruby
13:54
pitr-ch has quit [Ping timeout: 276 seconds]
13:55
cprice404 has quit [Remote host closed the connection]
13:56
cprice is now known as cprice404
13:56
pitr-ch has joined #jruby
13:58
fuzzyhorns has joined #jruby
13:59
<
fuzzyhorns >
Dir.glob doesnt work in jars, how should i handle that?
14:01
pitr-ch has quit [Read error: Connection reset by peer]
14:02
<
fuzzyhorns >
ah I see i need to use Dir[]
14:03
pitr-ch has joined #jruby
14:05
<
headius >
lopex: hey, question for you
14:05
<
headius >
nirvdrum: maybe it wasn't the same then...I was getting all those "symbol not found" errors during tck
14:06
<
headius >
lopex: looking at the alloc profile for brakeman, the #1 and #2 items are ByteCodeMachine
14:07
<
headius >
something like 1M of them allocated during the period I profiled
14:07
<
headius >
I'll try a depth=0 profile to get a total, but I have to wonder if we can be doing something there
14:10
grs has quit [Ping timeout: 260 seconds]
14:10
thedarkone2 has joined #jruby
14:12
skade has quit [Quit: Computer has gone to sleep.]
14:13
<
nirvdrum >
headius: That's the classloader issue.
14:13
<
headius >
nirvdrum: I just started seeing it
14:13
<
headius >
it sure felt like an environment thing...one day clean build just started tck erroring
14:13
<
nirvdrum >
It occurs to me I fixed this in "jt", but not in maven.
14:14
<
headius >
this was the jruby.home fix?
14:14
<
nirvdrum >
It's because I started auto-requiring rubygems, which we look up relative to lib packaged in the JAR.
14:14
<
nirvdrum >
But maven does this isolated classloader thing that puts the root in /tmp.
14:14
skade has joined #jruby
14:15
<
headius >
ah, lovely
14:15
<
headius >
ok then two things
14:15
<
headius >
1. point me toward the fix or see if you can do it to maven too
14:15
<
enebo >
headius: do you think brakeman might be doing many captures?
14:15
<
headius >
2. can we disable your tck for normal builds, like -Ptest does for core?
14:15
<
nirvdrum >
Correction. The classloader root just can't find the file and JRuby falls over to /tmp.
14:15
<
headius >
enebo: not really, this is all through strscan
14:16
<
headius >
it's just that the main lexer loop is a big (not giant) case/when where each when is a scanner.scan(/something/)
14:16
<
nirvdrum >
I'm not sure why JRuby falls over to /tmp, since I think that's always going to problematic, but it's done that for a long time.
14:16
<
headius >
nirvdrum: I think it was a last effort to get a home to run from
14:16
<
headius >
if we can't find anything any other way
14:16
<
nirvdrum >
headius: I think we could disable the test. In fact, I thought eregon had for all but the "mvn test" task.
14:17
<
headius >
core skips tests by having that maven skiptests property default to false except in -Ptest
14:18
<
headius >
er vice versa
14:18
<
nirvdrum >
So what this did was set an argLine for surefire that sets the jruby.home system property, avoiding the classloader search.
14:18
donV has quit [Ping timeout: 260 seconds]
14:18
<
nirvdrum >
Sorry, I wasn't thinking about -Ptest. Otherwise I would've just fixed this in the POM.
14:19
<
nirvdrum >
It looks to me this has been problematic for a long time. I just happened to be the first unlucky person to really try loading anything from jruby.home during a unit test.
14:20
<
headius >
nirvdrum: if you think there's something we can improve in JRuby for this, let's do it
14:21
<
headius >
so I think just adding jruby.home setup to truffle's pom should fix this
14:21
pawnbox_ has joined #jruby
14:21
<
lopex >
headius: no more info wrt that allocs ?
14:22
<
nirvdrum >
Not that I'm shifting blame. It just took me a while to track down the root cause.
14:22
<
headius >
lopex: I was doing a total count but it was taking forever
14:22
<
headius >
it's millions anyway for this app (brakeman scanning redmine)
14:22
<
lopex >
headius: in most cases there shouldnt be any allocs in there
14:22
<
enebo >
It was why I wondered about captures
14:22
<
headius >
but it's a new machine every time we match, right?
14:22
<
nirvdrum >
headius: Probably. This is where I plead a bit of maven ignorance.
14:22
<
lopex >
headius: only for case insensitive matching if any
14:23
<
lopex >
enebo: ah the captures
14:23
pawnbox has quit [Read error: No route to host]
14:23
<
nirvdrum >
headius: If we could do it for the test profile in general, I think that'd be better.
14:23
<
headius >
profiles are per-module anyway
14:23
<
headius >
(I think)
14:23
<
lopex >
enebo: I dont think so
14:23
<
enebo >
but it appears to generate match data which appears to just be offsets
14:23
<
headius >
anyway -Ptest lives in core, not root
14:23
<
lopex >
headius: nit depends
14:23
<
nirvdrum >
Otherwise, a year or two from now when you add a new unit test, we'll be trying to figure all this out again :-/
14:23
grs has joined #jruby
14:23
<
headius >
lopex: hmm
14:23
<
lopex >
headius: String#scan reuses all of it for example
14:23
<
enebo >
lopex: yeah headius was right but I guess you still need to allocate the start/end boundary of the match
14:23
<
lopex >
headius: unless you deleted that optz
14:23
<
nirvdrum >
And again, sorry for breaking things here.
14:23
<
headius >
lopex: I may have :-D
14:24
<
lopex >
headius: same for gsub, split etc
14:24
<
headius >
nirvdrum: no worries, I'm just tidying some things up
14:24
<
lopex >
headius: but the machine is no a heavy object
14:24
<
headius >
enebo: we need to decide what to do about 9.1.1
14:24
<
enebo >
headius: is this stringscanner.scan or string.scan
14:24
<
headius >
release without the bundler issues totally resolved or keep trying to find that
14:24
<
headius >
enebo: stringscanner.scan
14:25
<
enebo >
headius: ok…we make a new matcher every time but I guess the data will change over time
14:26
<
lopex >
headius: maybe some stack cache issue ?
14:26
<
headius >
lopex: not heavy, I'm just seeing it at the top of object profiles
14:26
<
enebo >
although we could probably update an existing matcher too
14:26
<
headius >
and this is a very hot loop
14:26
<
enebo >
seems like it would not be massive htough to store a few fields
14:26
<
enebo >
in the bytecode machine
14:26
<
headius >
obviously the fact that it's a case/when blows too but that's not easy to change
14:27
<
headius >
next_token is the hot one
14:27
<
headius >
no amount of case/when trickery will help us here
14:28
<
headius >
ok, maybe it is a giant case/when
14:28
skade has quit [Quit: Computer has gone to sleep.]
14:28
<
headius >
nirvdrum: if fixing it in maven works you should be able to remove your patch too
14:28
<
headius >
I'm testing now
14:28
<
nirvdrum >
Yeah. All I did was specify a command-line option to maven anyway.
14:29
<
enebo >
headius: I think I see one capture at least in this code
14:29
<
lopex >
enebo: in general, rematch shouldnt use any allocs
14:29
<
lopex >
if the matcher is reused
14:30
<
enebo >
regexp for alternation (a|b) is still a capture right?
14:30
<
enebo >
I guess I might be wrong there
14:30
<
lopex >
even capture struct is reused
14:30
<
enebo >
lopex: so there is one per thread?
14:31
<
lopex >
enebo: one macher ?
14:31
<
enebo >
lopex: Matcher matcher = pattern.matcher(value.getUnsafeBytes(), value.getBegin() + pos, value.getBegin() + value.getRealSize());
14:31
<
enebo >
lopex: this makes a new object no?
14:32
<
headius >
and then stores it in a thread-local for the task it runs
14:32
<
lopex >
but it can be reused for String#scan for example
14:32
<
enebo >
lopex: it is not what headius was talking about but we do not really need a new one neccesarily
14:32
camlow325 has joined #jruby
14:32
<
headius >
right, if it were possible to reset a matcher/bytecodemachine we'd allocate far fewer things
14:33
<
enebo >
lopex: I am not so concerned with making an object per regexp search as it seems regexp machine execution will be so much more than this
14:33
<
lopex >
enebo: the execution should allocate anything
14:33
<
lopex >
except for stack
14:34
<
enebo >
lopex: well I think this all started because headius sees ByteCodeMaechine alloc’ing
14:34
<
lopex >
enebo: then it's a bug somewhere
14:34
<
headius >
not Matcher...BCMs, lots of 'em
14:34
<
headius >
ok, I like to hear that :-)
14:34
<
enebo >
headius: although this bench is zillions of scans
14:34
<
enebo >
headius: I would expect to see many machines set up
14:34
<
lopex >
repeatStk is also prealloced
14:35
<
lopex >
headius: maybe it just sees it through stack cache ?
14:35
<
lopex >
it will be huge potentially
14:35
<
lopex >
and it's weak ref
14:36
<
lopex >
so it can dominated, yes
14:36
<
headius >
lopex: busted cache could easily explain it
14:36
Aethenelle has quit [Quit: Aethenelle]
14:37
grs has quit [Ping timeout: 260 seconds]
14:37
e_dub has quit [Read error: Connection reset by peer]
14:37
<
headius >
I had to break some paths that cached regex because of fixes to regex init that didn't seem to fit right
14:37
<
enebo >
wow this code is really a torture test for us :)
14:37
<
lopex >
and most is case insensitive
14:37
e_dub has joined #jruby
14:37
<
headius >
nirvdrum: I have fixes for both skip tests and that classloader thing, shall I just commit? You'll need to adjust whatever runs tck in CI to use -Ptest
14:38
<
headius >
enebo: indeed
14:38
<
headius >
this is the one we were talking about on our way out of RailsConf
14:38
<
headius >
one of the few examples out there that's clearly slower on JRuby than MRI
14:38
<
headius >
so...opportunities
14:39
<
enebo >
I mean we would like to make this at least as fast as MRI but I sort of feel like Ruby needs a nicer lexer for people to use than doing this
14:39
<
headius >
that's for sure
14:40
<
headius >
I assume this is one reason YorickPeterse switched to a native lexer
14:40
<
lopex >
headius: do you have a timing prfile as well ?
14:40
<
headius >
this is also one reason I am very suspicious of PEGs as the future of parsing
14:40
<
headius >
given that most pegs I've seen just use regexp
14:40
<
enebo >
yeah this is just doing a lot of slightly repetitive checks then jumping into a another case/when which is a method call
14:41
<
lopex >
but it's all single thread
14:41
<
lopex >
so the only possibility is huge stack and deep backtracks
14:41
<
enebo >
headius: yeah I have wondered how well PEGs could use some algebra to become a pangea expression
14:41
<
headius >
enebo: that might be possible here too
14:42
skade has joined #jruby
14:42
<
enebo >
not here but with something like this I guess
14:42
<
headius >
lopex: timing profile?
14:42
<
headius >
next_token is all over CPU profile
14:43
<
enebo >
if we at least knew contract for strscan.skip we could at least dramatically simpliy all these nested case/whens
14:43
<
nirvdrum >
headius: Go for it. I'll update jt.rb.
14:44
<
enebo >
heh headius hahaha….just change all these case whenres to if elsif
14:44
<
enebo >
it will get a lot smaller and will also be faster but who wants to do that much typing :)
14:44
<
headius >
it might get a little smaller
14:45
<
headius >
our case/when in IR is not ideal yet
14:45
<
enebo >
well it should be since we do not have to eqqinstr all over the place
14:45
<
headius >
it may not cache still
14:45
<
fuzzyhorns >
i'm always going to have to check if i'm in a jar or not when i do Dir right?
14:45
<
enebo >
both will stil have the beq but one will not have this extra result
14:45
<
enebo >
At least I think so
14:46
<
enebo >
but these case/when is just for code aesthetics they cannot take advantage of an optimized case/when anyways
14:47
<
GitHub56 >
jruby/master 15b34cc Charles Oliver Nutter: Skip JRuby+Truffle TCK unless -Ptest.
14:47
<
GitHub56 >
jruby/master d706786 Charles Oliver Nutter: Provide jruby.home to Surefire to get a proper home.
14:47
<
headius >
nirvdrum: ^
14:47
<
headius >
fuzzyhorns: if Dir.glob doesn't work against classloader URIs we should fix that
14:48
<
headius >
is that what you mean?
14:50
<
nirvdrum >
I have a messy workspace at the moment, but I'll fix in a bit.
14:50
grs has joined #jruby
14:50
<
fuzzyhorns >
headius: i might be doing something wrong, but in my app, i have the dirs that respect this glob "app/endpoints/**/*.rb"
14:50
<
fuzzyhorns >
headius: but in a jar, this glob fails
14:51
<
fuzzyhorns >
headius: so i thought, oh well it is probably in a app_name/app dir now because warble, but that doesnt work either
14:51
<
fuzzyhorns >
i'm trying to avoid having to check whether or not i am in a jar before i check for these files but it may be impossible
14:52
skade has quit [Quit: Computer has gone to sleep.]
14:53
<
headius >
yeah I understand
14:53
<
headius >
maybe you can spell out what you're doing in an issue and we can try to find a better way
14:53
<
headius >
or on mailing list
14:53
<
fuzzyhorns >
this is a jruby issue you think, not a warble one?
14:54
<
headius >
it could be either
14:54
<
headius >
I mean, I'd expect us to try to keep it opaque whether you're in a jar and things just work too
14:54
<
headius >
so if you can't do that either we need to improve something or warbler does
14:54
skade has joined #jruby
14:55
donV has joined #jruby
14:55
<
headius >
the char[] could be a worry...might be using String too heavily somewhere
14:56
<
headius >
going to char[] and back to take advantage of some Java API for example
14:56
skade has quit [Client Quit]
14:58
pitr-ch has quit [Ping timeout: 246 seconds]
14:58
<
lopex >
headius: then there's so many matchers
14:59
pitr-ch has joined #jruby
14:59
<
lopex >
and no StackEntry there too
15:00
<
headius >
I'll split up by 10-deep stack trace
15:00
<
lopex >
headius: can you try to reuse them as we do for literals
15:00
<
headius >
char[] falls way off when I do that
15:01
<
headius >
reuse the matcher...like pooled on the RubyRegexp or something?
15:01
<
lopex >
not pooled, at sites
15:01
<
headius >
it would have to be at the .scan site
15:02
Aethenelle has joined #jruby
15:02
<
headius >
these aren't normal matches
15:02
<
lopex >
looking at strscan
15:03
<
headius >
with ten-deep stacks, top two items are now BytecodeMachine, and they're both from scan
15:03
<
lopex >
oh, you also removed quoting caches
15:04
<
headius >
#4 is also BCM
15:04
<
headius >
quoting caches...ok
15:04
<
lopex >
but that's another thing
15:05
<
headius >
I'd love help restoring those caches
15:05
<
lopex >
headius: does heap show anything ?
15:05
<
headius >
when I re-ported some of the regexp init stuff I couldn't figure out right place to put caching back
15:06
<
lopex >
I confused alloced object by BCM with BMC itself for a second
15:07
<
lopex >
headius: but is the number of BCMs with a number of maches there ?
15:07
<
lopex >
goh, need to wake up
15:08
<
headius >
I forgot BCM < Matcher
15:08
<
lopex >
it's the same instance
15:08
<
lopex >
er, same thing
15:08
<
lopex >
all to minimize the allocations
15:09
<
lopex >
headius: but on single threaded code one can reuse matchers at =~sites
15:10
<
headius >
sure, those already get a bit of special treatment
15:11
<
headius >
I don't see how to reset the matcher and use it again
15:11
<
lopex >
enebo: is there a reason named captures dont work for locals when regexp is on right hand site ?
15:11
<
lopex >
headius: just matchAt again
15:12
<
lopex >
headius: there is no inbetween state, the IP for example always starts from the beginning
15:12
<
enebo >
lopex: yeah I don’t remember the justification for that
15:12
<
enebo >
lopex: it is a rule but every time I have used it I always do it that way and it does not work :)
15:12
<
lopex >
headius: I hope I'm not lying to you
15:13
<
headius >
lopex: I see no matchAt...and no way to give it a new byte[] to match against
15:14
<
headius >
maybe new byte[] isn't important
15:14
<
lopex >
headius: it's internal, then matchInterruptible
15:15
<
lopex >
oh I also see new SearchMatchTask per match
15:15
hobodave has joined #jruby
15:16
<
headius >
that's there too
15:16
<
headius >
may be able to tweak that to pool instances
15:18
pitr-ch has quit [Ping timeout: 250 seconds]
15:19
<
headius >
strscan could have a mapping from regex to matcher
15:19
<
headius >
source shouldn't change
15:20
<
lopex >
hmm, my old code also reused MatchData too
15:20
<
headius >
MatchData shouldn't be getting constructed here
15:20
<
lopex >
I remember us being dozens times faster than mri
15:21
<
headius >
since we go directly into pattern
15:21
<
headius >
MatchData sharing is mostly off again but that shouldn't affect this
15:21
pitr-ch has joined #jruby
15:21
<
lopex >
yeah, just looking at the code
15:21
<
enebo >
seems like you would never have a strscan instance with ever growing patterns against it but I guess that could get protected against
15:22
<
enebo >
perhaps size protect it and then hash of patterns
15:22
<
enebo >
or matchers…whatever
15:23
<
eregon >
headius: do Truffle tests are run with -Ptests? Not intended indeed, and at least it won't on Java 7 right?
15:24
<
headius >
eregon: -Ptest just enables them, nothing else changes
15:25
<
headius >
enebo: I'm trying a naive map now
15:25
<
headius >
it would only grow as much as there are unique regex being used
15:25
<
headius >
and when strscanner goes away, they'd go away
15:26
<
enebo >
so long as it does not have a source= method on it you would not expect it to run away
15:31
<
headius >
might be worth a look at MRI strscan too
15:31
<
headius >
have not looked at their impl in a long time, they may have added caching
15:33
<
lopex >
I dont see any
15:33
<
headius >
huh...my cache doesn't seem to help
15:33
<
headius >
maybe I should actually populate it
15:35
<
headius >
I'm trying to think of real issues caused by a hard cache of Regex => Matcher in strscan
15:35
<
headius >
it would need to be thread local
15:35
<
headius >
so there's that
15:37
<
enebo >
any caching with that needs to be anyways
15:37
<
enebo >
I was even wondering about current impl because we update a field on scan
15:37
<
headius >
so it may not be thread-safe anyway
15:38
<
eregon >
headius: Travis doesnt run them because -Ptest is run on JDK7, so is this locally?
15:38
<
enebo >
yeah currentMatcher is only one of 4-5 fields
15:38
<
headius >
eregon: yeah locally...nirvdrum said he would fix jt for you
15:38
<
headius >
to pass -Ptest appropriately
15:38
<
eregon >
hum I'm confused now
15:39
<
eregon >
one can always do --project '!truffle' if you don't want to build/test truffle for a given maven command
15:39
<
headius >
yes, that's not inconvenient at all :-)
15:39
<
eregon >
fair enough :p
15:40
<
headius >
I'm fine building truffle, but the rest of build has skipTests default to off and truffle didn't
15:40
<
eregon >
ah ok yeah that would be good to change
15:40
<
headius >
and it was a small change anyway...just need to update travis so it's building with -Ptest when you want tck
15:40
<
eregon >
yeah absolutely, I just misundertood
15:41
<
headius >
ok, so my strscan cache seems flawed somehow
15:42
<
GitHub187 >
jruby/master 534cb71 Benoit Daloze: [Truffle] Normalize transfer before insert() to not invalidate....
15:42
<
GitHub187 >
jruby/master 1a7e030 Benoit Daloze: [Truffle] Remove most of transferToInterpreter.
15:42
<
headius >
matcher == null || matcher.getRegex() != pattern || matcher.getBytes() != value.getUnsafeBytes()
15:42
<
headius >
should be enough no?
15:42
Prasun has quit [Ping timeout: 252 seconds]
15:43
<
headius >
start and end get passed into matchInterruptible
15:44
<
lopex >
is it a prepared one ?
15:47
<
headius >
if that's recompiling every time it won't work but I don't see a lot of Regex getting created
15:48
<
eregon >
UnsafeBytes maybe has an offset if it's a ByteList?
15:48
<
eregon >
value.getUnsafeBytes() *
15:49
<
lopex >
headius: there
15:50
<
lopex >
headius: there's already caches for that
15:50
norc has joined #jruby
15:51
<
lopex >
headius: but it's not as bad now since joni now uses original byte arrays for templates
15:51
<
lopex >
headius: oni copies everything everytime
15:52
<
headius >
this doesn't seem to reset the matcher well enough
15:53
<
lopex >
it doesnt match ?
15:54
<
headius >
I get an error from brakeman that looks like it failed to match
15:56
<
headius >
trying to add more clearing logic to matcher
15:56
<
headius >
to clear region etc
15:57
blandflakes has joined #jruby
15:58
<
headius >
huh, still no good
16:03
<
headius >
what isn't getting reset
16:06
shellac has quit [Quit: Computer has gone to sleep.]
16:06
shellac has joined #jruby
16:08
lacce has joined #jruby
16:09
shellac has quit [Client Quit]
16:17
pglombardo has joined #jruby
16:20
pglombardo has quit [Client Quit]
16:25
shellac has joined #jruby
16:32
elia has quit [Quit: Computer has gone to sleep.]
16:35
<
headius >
well I'm out of ideas
16:35
pitr-ch has quit [Read error: Connection reset by peer]
16:36
<
headius >
I feel like I'm resetting everything that can be reset on ByteCodeMachine
16:36
pitr-ch has joined #jruby
16:37
<
lopex >
is start/end/range ok there ?
16:37
<
headius >
I'll show you the diff
16:38
<
headius >
seems like I'm clearing all state that isn't final but it still breaks in brakeman
16:38
<
headius >
I feel like I'm clearing
*more* than I need
16:40
skade has joined #jruby
16:42
<
headius >
mmm I found a leak
16:42
<
headius >
well, a small one
16:42
<
headius >
I guess only leaking one WeakRef per thread: static final ThreadLocal<WeakReference<StackEntry[]>>
16:42
<
headius >
that will cause classloader stickiness though too
16:43
<
headius >
lopex: what am I not clearing properly? :-(
16:44
<
lopex >
headius: hard to say without reduced code
16:45
<
GitHub140 >
[jruby] Capncavedan closed issue #3867: JRuby 9.1.0.0 error running bundle exec cucumber on Travis
https://git.io/vrUti
16:45
<
headius >
well perhaps, but the only thing I'm caching is the matcher, and I should be clearing everything
16:47
shellac has quit [Ping timeout: 260 seconds]
16:47
<
headius >
enebo: 3867 was just closed by user as no longer reproducible after fixing up his env
16:47
<
headius >
I think that's the last 9.1.1 blocker
16:47
<
lopex >
headius: can you set Config.DEBUG_SEARCH to true ?
16:47
<
lopex >
it will show you the positions
16:47
<
lopex >
with and without caching
16:48
<
headius >
lopex: the large repro for this is simple btw...gem install brakeman, clone redmine/redmine, brakemane -q --sumary redmine
16:48
<
headius >
I imagine the smaller repro would involve just using ruby_parser aginst a bunch of sources
16:49
<
enebo >
yay ok well then I think we can go for it
16:49
<
lopex >
most of that shouldnt require clearing
16:50
<
headius >
lopex: figured as much but I was getting desperate
16:55
<
lopex >
headius: what different about this case and former matcher reuse in String ?
16:56
<
lopex >
matching against different strings ?
16:56
<
headius >
did it actually reuse matcher or just MatchData?
16:56
<
lopex >
headius: whole matcher
16:56
<
lopex >
for String#scan for example
16:56
<
headius >
I don't know
16:56
<
lopex >
but that might be different
16:56
<
headius >
this is always matching against the same string
16:56
<
lopex >
then I have no idea
16:56
<
lopex >
it worked that way
16:57
<
lopex >
just rematched with different start/range
16:57
Prasun has joined #jruby
16:58
<
headius >
hmm I don't see MatchData even holding a reference to the Matcher
16:59
<
headius >
just the regions in the matcher
17:00
<
headius >
lopex: doesn't that just create a new matcher every time?
17:01
adgtl has joined #jruby
17:01
adgtl has quit [Changing host]
17:01
adgtl has joined #jruby
17:01
<
headius >
I don't see any caching in it in joni
17:01
<
lopex >
headius: there's loop after that
17:01
<
lopex >
so it clearly worked
17:02
<
headius >
yeah sequential matches with same matcher against same string
17:03
skade has quit [Quit: Computer has gone to sleep.]
17:04
<
headius >
lopex: are initial position/end used for anything?
17:04
<
headius >
since you have to pass them both into match* anyway
17:05
<
lopex >
headius: initial afaik is the whole string
17:05
<
lopex >
hmm, the String stuff needs some serious reoptimizations
17:06
<
headius >
yes please!
17:06
<
lopex >
or the widest region you're going to scan
17:07
<
lopex >
headius: even the captures were reused
17:11
<
headius >
chrisseaton: can jruby+truffle boot with gems yet?
17:12
<
headius >
maybe master is too far ahead of released graal but I can't get this to boot
17:12
<
headius >
lopex: I'm going to try setting start and end in my clear too
17:13
<
headius >
seems like the only thing left that would differ
17:16
fuzzyhorns1 has joined #jruby
17:17
<
headius >
lopex: that seems to have been the problem
17:17
<
headius >
it must be using "str" and "end" internally for something even with start/end passed into match?
17:18
norc has quit [Ping timeout: 252 seconds]
17:19
<
lopex >
headius: bytes/str/end is the whole string
17:19
<
lopex >
and those are final
17:19
<
lopex >
I'm confused
17:19
fuzzyhorns has quit [Ping timeout: 260 seconds]
17:19
<
headius >
and yet I needed to update them in clear for this to work
17:20
<
headius >
scan creates matcher repeatedly from begin + pos to begin + realSize
17:20
<
headius >
apparently that begin is important
17:20
<
lopex >
so there you go
17:20
<
lopex >
it should create on the whole range
17:20
<
lopex >
and then narrow in match
17:20
<
headius >
I made them non-final and made clear take begin + end
17:21
<
lopex >
I'd opt for my suggestion :)
17:21
<
headius >
you're saying pattern.match should be passing just begin and realsize every time?
17:21
<
headius >
I mean pattern.matcher
17:21
<
headius >
I'll try that and see if non-cached breaks
17:21
<
lopex >
on creation only
17:22
<
headius >
is there ever a reason to manually narrow it on create?
17:22
<
headius >
that's essentially what this is doing
17:22
<
headius >
as it advances the full match region shrinks from the front
17:23
<
lopex >
well, the string can be shared
17:23
<
lopex >
so you always need that
17:26
<
headius >
lopex: so what of this clearing I'm doing is unnecessary?
17:26
<
headius >
I feel like I'm doing too much clearing now
17:26
<
lopex >
headius: all
17:27
<
headius >
I can certainly try just setting start and end and see what happens :-)
17:28
<
headius >
I'll try your suggestion as well
17:28
<
lopex >
headius: just the same thing like in the String#scan
17:28
<
lopex >
the only difference is that it would persist between method calls right ?
17:29
<
headius >
and it may be matching from a different start every time
17:29
<
headius >
since we have multiple matchers interleaved
17:29
<
headius >
I mean it will be matching from a start that does not == where it ended before
17:30
oblutak has joined #jruby
17:31
momomomomo has joined #jruby
17:32
<
headius >
lopex: thought of one reason the rolling start position could be breaking this...if it ever needs to backtrack and rematch earlier bytes
17:32
<
headius >
the range check would fail since the match start is < string start in the matcher
17:34
<
lopex >
that's why you need to construct with full width
17:34
<
lopex >
I'm confused again
17:35
<
headius >
strscan.scan always creates matcher with pos as begin rather than string.begin
17:35
<
headius >
if I cache that matcher and a subsequent match wants to match something < pos, it would fail
17:35
<
headius >
I don't know that's happening here, but it's one possible reason
17:36
<
headius >
holy crap
17:36
<
headius >
either this is broken or it just went from 40s to 8s
17:36
<
headius >
lopex: no obvious breakage with no clear and just using full range, you rock
17:37
<
headius >
man I really hope this is not just broken
17:37
<
headius >
because we're way faster than MRI now
17:37
<
lopex >
headius: maybe it's also because of the MatchTask thingy ?
17:37
<
lopex >
headius: matcher itself is really really cheap
17:37
<
enebo >
OMGZZZZZ DARK MATTER
17:37
<
headius >
lopex: well I don't see it being that cheap
17:37
<
headius >
from BCM up there's almost a dozen reference fields and probably another dozen ints
17:38
<
enebo >
combine this with my defined? fix and startup time will go negative
17:38
<
headius >
not to mention realloc of Region, stack, others
17:38
<
lopex >
headius: right
17:38
<
lopex >
headius: well, if that dominates
17:38
<
headius >
the entire tree of objects is probably several hundred bytes
17:38
<
lopex >
the whole thing
17:38
<
enebo >
headius: can you print any output out and compare?
17:38
<
headius >
in a hot loop
17:38
<
headius >
enebo: it prints out summary of scan at the end along with timing
17:38
<
enebo >
seems to be the same
17:39
<
headius >
when my caching was broken it never finished because the parser failed
17:39
<
headius >
yeah same
17:39
<
enebo >
I guess you could also run the parser specs as well
17:39
<
headius >
except for 75% faster
17:39
<
headius >
this would be a home run if it's good
17:39
<
lopex >
headius: can you profile it ?
17:39
<
headius >
what do you want to see?
17:39
<
lopex >
headius: so now String literals would dominate ?
17:40
<
headius >
I'll run a profile, gimme a sec
17:40
<
headius >
jesus, second time through, 6.497 seconds
17:40
<
lopex >
and mri is ?
17:40
<
headius >
something's wrong
17:40
<
headius >
it has to be
17:40
<
headius >
that's only like 4s of run time after startup
17:41
<
lopex >
mri does a lot more there
17:41
<
lopex >
it doesn have prepared cache
17:41
<
headius >
yeah but this is parsing all of redmine and running a bunch of scans over the AST
17:41
<
headius >
it should take more than 4s
17:42
<
headius >
yeah I think it's just erroring out
17:43
<
headius >
lopex: so using full string width and caching that matcher without clear...does not work
17:44
<
lopex >
String#scan worked though with this
17:44
<
headius >
well I don't know if it did
17:44
<
headius >
it may have never matched properly and brakeman just raced through a bunch of empty ASTs
17:44
<
lopex >
ah, I mean the old String#scan impl
17:44
<
headius >
yeah but that's still different
17:44
<
headius >
it doesn't need to change begin/end between match calls
17:44
<
headius >
I mean overall begin/end
17:45
<
headius >
that must have an effect on strscan's use
17:45
<
headius >
caching with clear doing nothing but begin/end reset also does not work
17:45
<
lopex >
I'd expect that at least
17:46
<
headius >
adding back more clearing stuff
17:47
<
lopex >
headius: maybe other StringScanner methods are affected ?
17:47
<
lopex >
wrt positions
17:47
<
headius >
well it's possible but at worst they should just still be making their own matcher
17:47
<
headius >
I only added the caching to scan
17:48
<
headius >
using full string range but creating a new matcher every time doesn't work either
17:48
<
headius >
I feel like there's something we're not getting
17:50
<
lopex >
if you change the meaning of full/width other methods might be affected
17:54
<
enebo >
how does skip interact with scan?
17:54
<
enebo >
you just modify mather to new pos?
17:54
e_dub has quit [Read error: Connection reset by peer]
17:55
e_dub has joined #jruby
17:58
dinfuehr_ has joined #jruby
18:00
donV has quit [Ping timeout: 276 seconds]
18:01
donV has joined #jruby
18:01
<
GitHub62 >
jruby/master 70d4d3a Kevin Menard: [Truffle] Fixed running on Graal when assertions are enabled.
18:01
<
GitHub62 >
jruby/master 6302e6b Kevin Menard: [Truffle] Added support for running the optional C API specs.
18:01
<
GitHub62 >
jruby/master cc08c24 Kevin Menard: [Truffle] Allow absolute output paths for jruby-cext-c.
18:05
pawnbox_ has quit [Ping timeout: 252 seconds]
18:07
dinfuehr_ has quit [Quit: dinfuehr_]
18:07
dinfuehr_ has joined #jruby
18:08
momomomomo has quit [Quit: momomomomo]
18:08
<
headius >
enebo: changing the case/when to if/else does not appear to change perf any
18:08
<
headius >
I did notice most of these whens are the "blank case" form that just checks truthy
18:08
<
enebo >
yeah I compared IR after I said that
18:08
<
enebo >
we get rid of some temp inits and an extra else jump
18:09
<
enebo >
but eqqinstr is replaced by a call
18:09
<
enebo >
and both are basically a beq
18:09
<
enebo >
since you made eqqinstr callsite cache that makes those more equal
18:10
<
enebo >
although I am now wonderingf if we should just make eqq an actual dispatch and not an instr
18:10
donV has quit [Quit: donV]
18:20
norc has joined #jruby
18:26
bbrowning has quit [*.net *.split]
18:26
Puffball has quit [*.net *.split]
18:26
samuelkadolph has quit [*.net *.split]
18:26
headius has quit [*.net *.split]
18:26
Liothen has quit [*.net *.split]
18:26
Liothen has joined #jruby
18:26
Liothen has joined #jruby
18:26
Puffball has joined #jruby
18:26
headius has joined #jruby
18:27
samuelkadolph has joined #jruby
18:30
bbrowning has joined #jruby
18:30
knowtheory has quit [Ping timeout: 276 seconds]
18:34
knowtheory has joined #jruby
18:37
<
headius >
enebo: that's kinda what I was thinking too
18:37
<
headius >
we have some broken logic for `when ary` too right now
18:42
<
enebo >
headius: I think we had held off on this idea because it may be easier to detect the pattern of a case when
18:42
<
enebo >
headius: but I think we can still detect it with it/else
18:42
<
enebo >
headius: although it may be easier with eqq
18:43
<
enebo >
In other news I do not see any problems with our release bits
18:44
yfeldblum has joined #jruby
18:49
pawnbox has joined #jruby
18:59
<
nirvdrum >
headius: Is there a way to force a build on CloudBees?
18:59
<
nirvdrum >
I'm interested in seeing if your maven fix gets the build green again.
19:04
subbu is now known as subbu|meeting
19:06
donV has joined #jruby
19:07
momomomomo has joined #jruby
19:11
<
headius >
stupid gh release notes
19:11
<
headius >
you can't create release notes without the tag existing...so it tagged for me
19:11
<
headius >
nirvdrum: I can force it
19:11
<
headius >
which one?
19:11
<
headius >
yeah I'll punch it
19:12
momomomomo has quit [Ping timeout: 260 seconds]
19:13
<
GitHub65 >
jruby/master fe84e89 Thomas E. Enebo: Update for release
19:13
<
GitHub65 >
jruby/master 39db3ee Thomas E. Enebo: Merge branch 'master' of github.com:jruby/jruby
19:14
grs has quit [Ping timeout: 250 seconds]
19:17
<
GitHub44 >
jruby/master fe84748 Kevin Menard: [Truffle] Fixed the 'jt test tck' command to work with changes made elsewhere to maven.
19:18
momomomomo has joined #jruby
19:18
<
nirvdrum >
headius: Indeed. And sorry for the slow replies. I'm trying out a new dev setup that pushes IRC to a different workspace. I don't think notifications are working quite the way I'd like.
19:19
<
headius >
no problem
19:27
grs has joined #jruby
19:29
momomomomo has quit [Ping timeout: 250 seconds]
19:29
<
GitHub122 >
jruby.github.io/master 9e4f987 Thomas E. Enebo: Update for release
19:33
dinfuehr_ has quit [Quit: dinfuehr_]
19:33
<
lopex >
headius: why do they have explicit deps for joni/jcodings there ?
19:33
<
GitHub46 >
jruby.github.io/master 09e0dc9 Thomas E. Enebo: Change title in downloads to proper release
19:34
<
enebo >
holy crap snake…a 3115 line pom.xml…lopex you are impressed by the wrong stat
19:35
<
lopex >
oh, they use joni separately
19:35
<
lopex >
enebo: wrt that missingisUTF8
19:42
brauliobo has quit [Ping timeout: 260 seconds]
19:45
<
GitHub167 >
jruby/master 13b6bb6 Kevin Menard: [Truffle] Removed code that should have already been deleted.
19:46
<
GitHub107 >
jruby/master dea6cd8 Thomas E. Enebo: Update version for next dev cycle (yeah good job Tom)
19:47
elia has joined #jruby
19:47
elia has quit [Client Quit]
19:49
<
headius >
lopex: yeah, gotta be something like that
19:49
elia has joined #jruby
19:49
<
headius >
your library is getting wider use than we realize
19:49
brauliobo has joined #jruby
19:54
skade has joined #jruby
19:55
xenthree3 has joined #jruby
19:55
xenthree3 has left #jruby [#jruby]
19:56
skade has quit [Client Quit]
19:56
fatephd has joined #jruby
20:03
fatephd has quit [Quit: (null)]
20:04
subbu|meeting is now known as subbu|away
20:06
yfeldblum has quit [Ping timeout: 240 seconds]
20:06
<
headius >
nirvdrum, chrisseaton, eregon: maybe one of you could look into that jt test that has been failing
20:07
donV has quit [Quit: donV]
20:11
SynrG has quit [Ping timeout: 252 seconds]
20:11
SynrG has joined #jruby
20:13
skade has joined #jruby
20:28
subbu|away is now known as subbu|meeting
20:29
<
enebo >
lopex: 8.1% barleywine?
20:30
<
lopex >
enebo: yeah, and aromatic hops
20:30
<
enebo >
lopex: sounds really low abv for a baleywine
20:31
<
lopex >
enebo: for the strong ipaish ones I still love that of de molen
20:32
<
enebo >
I somehow got a four pack of this
20:33
<
lopex >
enebo: remember that de molen list sorted by abv ?
20:33
<
enebo >
lopex: yeah
20:33
<
enebo >
lopex: bigger is better to some degree until they all taste like raison juice
20:34
<
enebo >
ignore my spellinfg
20:34
<
lopex >
enebo: how do they call the beers when you up the abv by icing the water from it ?
20:34
<
lopex >
icing away ?
20:35
<
lopex >
they might be 30% then
20:35
<
nirvdrum >
headius: I'll disable for now. It seems a bit flaky.
20:35
<
enebo >
lopex: I don’t remember the term either
20:36
<
enebo >
lopex: tactical nuclear penguin stuff
20:36
<
lopex >
ah, I guess I know polish term
20:37
<
lopex >
I tend to use wiki as a dict sometimes
20:37
<
GitHub107 >
jruby/master cd4a1e6 Kevin Menard: [Truffle] Temporarily disabled integration test that's only failing in Travis.
20:38
bbrowning has quit [Quit: Leaving]
20:41
talevy has quit [Ping timeout: 260 seconds]
20:42
talevy has joined #jruby
20:42
<
nirvdrum >
I don't like ignoring issues that are reproducible in any environment. It's just strange that Travis seems to be the only one that regularly has problems.
20:43
<
headius >
yeah, it's a weird env
20:43
<
headius >
lots of shared resources...some bad project getting a build at the same time as us could probably cause us to fail
20:43
<
headius >
though I don't know how much sharing of machines they do
20:44
<
lopex >
it must be docker :/
20:45
<
lopex >
headius: remember hitler and docker ?
20:45
<
headius >
builds run a lot faster in that mode than in the vm mode though
20:46
<
lopex >
and I havent even seen that movie (the fall ?)
20:46
lanceball is now known as lance|afk
20:46
<
headius >
it's pretty good
20:48
<
enebo >
“If you have never used docker in production leave the room now”
20:48
<
lopex >
node.js hipsters is also good
20:48
<
headius >
yeah this sums up all my concerns plus a few other good ones
20:48
<
enebo >
curl | sudo bash :)
20:48
<
lopex >
vagrant based
20:50
<
enebo >
hahaha “Don’t cry…you can run bash on windows 10 now” very funny version
20:51
<
headius >
yeah, well done
20:51
<
headius >
I'm down from 40s to 24s and caching machines didn't seem to help any of that
20:52
<
headius >
hand-splitting this case/when and making it if/else did most of it
20:52
<
lopex >
how does mri on it ?
20:53
<
headius >
24s with an unmodified lexer
20:54
<
headius >
yeah nice
20:55
subbu|meeting is now known as subbu
20:58
<
headius >
I must have crossed a threshold where hotspot will actually jit this now
20:59
<
lopex >
maybe the matching itself is slower
21:00
<
lopex >
we miss Sunday Boyer-Moore modification
21:00
<
lopex >
but I dont think it's huge and it only matter for big inputs
21:02
<
lopex >
as we've been always slower for some char classes, cant recall what it was
21:03
<
nirvdrum >
Here I thought I was the only one that got this worked up about Docker.
21:04
fuzzyhorns1 has quit [Quit: Leaving.]
21:04
<
lopex >
unikernels!
21:04
<
lopex >
I need to try nixops though
21:05
<
lopex >
though it's cgroups based too
21:05
<
nirvdrum >
I still can't use Docker and connect to a VPN :-(
21:07
blandflakes has joined #jruby
21:08
blandflakes has quit [Client Quit]
21:12
<
lopex >
headius: maybe jruby needs some tweaking for thresholds
21:13
<
lopex >
like new ratio 2:1 works best for me
21:18
<
headius >
FWIW I modified brakeman to re-run the same command in a loop and we improve to MRI speed or faster after the first run
21:18
<
lopex >
I'd call it success
21:18
<
lopex >
oh, modified
21:18
<
lopex >
headius: does 9.1 emply case/when hash opt ?
21:19
<
headius >
hash opt?
21:19
<
headius >
we have some limited O(1) support for all-fixnum case/when but that's about it
21:19
<
lopex >
they use a hash underneath
21:20
<
enebo >
lopex: this lexer code is all method calls
21:20
<
headius >
lopex: that must be the O(1) optimization
21:20
<
enebo >
lopex: but I bet I could manually speed this up a lot since the lexer uses n overlapping regexps in succession
21:21
<
headius >
enebo: it's worse than I realized
21:21
<
enebo >
lopex: but as a human I can combine those to a single regexp with a capture and ikely speed it up since all the ruby will disappear
21:21
<
headius >
many of these token-creating methods themselves have case/whens with regexp too
21:21
<
headius >
and case/when with regexp still forces a frame
21:22
<
enebo >
headius: but for some branches it could kill the inner nest at least
21:22
<
enebo >
since they are all like > or >> or >= or >>=
21:23
<
enebo >
I think a specification like this could maybe combine some regexps if it “knew” regexp grammar
21:23
<
headius >
you know I guess I shouldn't be surprised at this point that a 30-40s run is not enough to warm up
21:23
<
enebo >
but the rhs {} actions probably make that much more difficult
21:24
<
headius >
unmodified brakeman improves to 30s from 40+ by the third run
21:24
<
headius >
the actions are all BS
21:24
<
headius >
all action does is yield
21:24
<
headius >
I collapsed all of those in my modification
21:24
<
enebo >
yeah I noticed none of the had captures
21:24
yfeldblum has joined #jruby
21:25
<
headius >
so that's at least far fewer dispatches
21:25
<
headius >
I'll show you a diff
21:25
<
headius >
looks like this is holding steady at 30s per iteration now
21:25
<
headius >
MRI is 24
21:25
<
enebo >
wow this defined with colon2 stuff will be a lot more work
21:25
<
enebo >
what happens too if I have A as an aurtoload and then I try and defined?(A::B)
21:25
<
lopex >
headius: and yet mri does more work
21:28
johnsonch is now known as johnsonch_afk
21:29
<
lopex >
it also allocs the stack everytime
21:29
skade has quit [Quit: Computer has gone to sleep.]
21:30
<
lopex >
does more preprocessing
21:32
<
lopex >
though DRegexp caching isnt used here since there's /o everywhere
21:33
<
GitHub17 >
jruby/master b3fb6e4 Thomas E. Enebo: We need to dedup defined message strings so they all have same id
21:33
<
GitHub17 >
jruby/master 7103f60 Thomas E. Enebo: We never returned 'method' in defined? in this helper
21:33
<
GitHub17 >
jruby/master 70bdd74 Thomas E. Enebo: defined? should not actually autoload anything
21:33
<
lopex >
headius: is this method compiled into a big bytecode thingy ?
21:33
<
lopex >
or split somewhat ?
21:33
<
headius >
not split by us
21:34
<
headius >
we don't have method splitting in 9k yet
21:34
<
lopex >
headius: hah, I wonder if you'll use passed jvm threashold to modify you're own
21:34
<
lopex >
when it's there
21:37
Aethenelle has quit [Quit: Aethenelle]
21:38
<
havenwood >
added 9.1.1.0 to ruby-install and RVM and saw a PR open on ruby-build
21:39
<
headius >
havenwood: cool, thank you
21:39
<
headius >
lopex: we probably could
21:39
<
havenwood >
no prob, thanks
21:40
<
lopex >
headius: to make those play together
21:40
<
lopex >
but last time I heard hotspot is smarter nowadays wrt heuristics for bytecode / native code sizes
21:40
<
headius >
a little better, but not much
21:41
<
headius >
it still bails out too early in optimization pipeline if things get too big
21:41
<
headius >
graal just eats and eats and eats
21:41
<
lopex >
I wonder what's the reason
21:41
<
headius >
maybe I should try this in graal too
21:41
<
lopex >
it's just numbers
21:42
<
headius >
I can certainly try tweaking thresholds up and see what happens
21:42
<
lopex >
like the piepline has above polynomial complexity
21:42
<
lopex >
or above exponential
21:43
<
lopex >
register allocation ?
21:43
<
lopex >
graph coloring always was
21:44
<
lopex >
headius: eats like, doesnt care ?
21:44
<
headius >
most of the hotspot folks think that's the right thing to do now
21:44
<
headius >
it may have some metrics for how long it works or something, but it's not code size
21:45
<
lopex >
on graal presentation Thomas said they have in great majority linear scans
21:45
tcrawley is now known as tcrawley-away
21:46
<
lopex >
maybe it's the economics, like all the threads playing toghether (execution, gc, compiler, etc)
21:52
<
lopex >
headius: also might be similar thing scala compiler suffers, too many phases
21:54
<
lopex >
oh, I love speculating
21:54
<
headius >
scala compiler definitely has that problem
21:54
<
lopex >
I should create a site, "speculation out of my ass"
21:54
<
GitHub78 >
jruby/master 5804e33 Kevin Menard: [Truffle] JRuby+Truffle is still using the 2.2.0 stdlib.
21:55
<
lopex >
headius: but seriously, intel struggles to create code cache
21:55
<
lopex >
headius: and nobody uses it
21:56
<
GitHub84 >
jruby/master c4a013b Charles Oliver Nutter: Merge pull request #3896 from jruby/test-new-recursion...
21:56
<
GitHub161 >
[jruby] headius closed pull request #3896: Test new recursion (master...test-new-recursion)
https://git.io/vrWQq
22:03
<
headius >
I should do some testing with the new recursion guard...could be much more efficient
22:04
<
lopex >
spaculative ?
22:04
<
lopex >
*speculative
22:10
Aethenelle has joined #jruby
22:10
<
headius >
I'm being speculative at least :-)
22:12
enebo has quit [Quit: enebo]
22:25
norc has quit [Read error: Connection reset by peer]
22:39
brauliobo has quit [Ping timeout: 252 seconds]
23:01
<
GitHub79 >
jruby/master da2af75 Chris Seaton: [Truffle] Combine bootstrap and common bignum.
23:01
<
GitHub79 >
jruby/master fa37a40 Chris Seaton: [Truffle] Combine bootstrap and common channel.
23:01
<
GitHub79 >
jruby/master 5947277 Chris Seaton: [Truffle] Combine bootstrap and common symbol.
23:07
<
lopex >
like ppl having trouble realizing the dynamics of online code compilation
23:07
Aethenelle has quit [Quit: Aethenelle]
23:07
<
lopex >
the profiles might lie to all of us
23:11
<
GitHub162 >
jruby/master 0f190b6 Chris Seaton: [Truffle] Move class to core.
23:14
momomomomo has joined #jruby
23:24
<
GitHub163 >
jruby/master f899dd5 Chris Seaton: [Truffle] Fix mistake in how we ignore integration tests.
23:24
<
GitHub163 >
jruby/master ee1c654 Chris Seaton: Revert "[Truffle] Temporarily disabled integration test that's only failing in Travis."...
23:25
<
GitHub90 >
[jruby] tobymurray-nanometrics opened issue #3905: NotImplementedError: symlink unsupported or native support failed to load
https://git.io/vrE2k
23:31
elia has quit [Quit: Computer has gone to sleep.]
23:36
dsferreira has joined #jruby
23:43
<
GitHub32 >
jruby/master da7c5c6 Kevin Menard: [Truffle] 'jt test tck' needs to build the maven project, too.
23:58
pawnbox has quit [Remote host closed the connection]