genpaku has quit [Remote host closed the connection]
genpaku has joined #jruby
<headius>
enebo: you did some work on marshaling for 9.4 right?
<enebo[m]>
it is likely there were fixes to 3.x support
<headius>
this CCE thing seems to be a marshaling problem
<enebo[m]>
Oh I think there was a lot of work actually
<enebo[m]>
I just remember we were not matching MRI in significant ways
<headius>
ok
<enebo[m]>
If they are unmarshalling data from an earlier JRuby it maybe won't work but I have to recall what changed
<headius>
that might be
<headius>
I'm not sure
<enebo[m]>
170c124 was one big commit
<enebo[m]>
ah yeah we did not properly support partially marshalled stuff which referenced itself
<enebo[m]>
something like that. so partials was added to UnmarshalCache and a lot of alignment with MRI
<headius>
hmm
<enebo[m]>
This is an interesting dilemma if we cannot load old marshal format because you could say they need to unmarshal then remarshal with new format but how would you do that?
<headius>
ok
<headius>
so the root problem here seems to be that an instance variable slot is overlapping an object_id slot
<enebo[m]>
to be fair I am not sure it can't read old data properly
<headius>
after marshaling out and back
<headius>
I ran his example with CRuby 3.1 and it works
<headius>
so it wouldn't be something specifically about marshal spec changing
<enebo[m]>
ok so it could just be a porting issue
<headius>
it's unfortunately a lot of code, I'm trying to reduce it
<enebo[m]>
It was huge and I think I fixed all? of the mri tests which were broken
<headius>
ok
<enebo[m]>
If you can extract a repro without exposing their code I can also help
<enebo[m]>
I did this a year ago but I may still have some of it in my head
<headius>
yeah I'm trying but without being able to see the dump side of this I am just guessing at the problem
<enebo[m]>
Hmm does MRI support multiple marshal formats?
<headius>
not that I know of
<headius>
not even sure when they last rev'ed the format
<headius>
they added some tweaks for compact String encodings
<headius>
that's the last thing I remember
<enebo[m]>
I need a better git navigation mechanism
<enebo[m]>
obviously the tests will be commits around this one
<enebo[m]>
the history button shows that commit and back but not the next commit forward on idea
<headius>
yeah can't go forward in git
<headius>
oh but it should be able to see it in full history
<enebo[m]>
Is this something like two objects having the same realclass?
<enebo[m]>
If this is the fix I am pretty happy. I remember getting the proper ordering around things like encodings with their strings being really tough to unwind
<headius>
yeah I don't think you want to use id here
<headius>
that triggers it to create an object_id for every object passing through this partials set, and it seems like it is not being handled right by the variable table
<headius>
perhaps because it is mid-marshal when the object suddenly gets an object_id
<headius>
I wasn't sure how this maps to the CRuby code
<headius>
the cruby code just seems to use their st hash
<enebo[m]>
I don't remember why I picked id
<enebo[m]>
It could have been trying to match MRI or I could have figured it was a unique id for a ruby object
<enebo[m]>
java identity makes more sense to me though
<headius>
aha
<enebo[m]>
it dodges needing to know naything about how we implement identity
<enebo[m]>
Just talking through it I can see that Java identity makes more sense since we do not have 2 different Java instances representing the exact same ruby instance
<enebo[m]>
On top of even the notion it is constructing an unneeded fixnum
<headius>
well, a Long, but yeah
<headius>
and infecting every unmarshaled type with object_id along the way
<headius>
INFECTING
<enebo[m]>
yeah...low blow
<enebo[m]>
:)
<enebo[m]>
oh when I said Fixnum I mean what it did by calling id() -> return getRuntime().newFixnum(getObjectId());
<headius>
I did notice things like String instances coming out of this suddenly having object_id so this may have impacted a lot of stuff
<headius>
well, anything being marshal loaded anyway
<enebo[m]>
String would be affected since it unmarshals encoding as a separate unmarshal
<enebo[m]>
since even a already registered type is still a separate load it would still mark this in partial (I think)
<enebo[m]>
no doubt though that partial support will have some impact on unmarshal performance anyways since we didn't track it at all before this point
<enebo[m]>
I don't really care in the near term on this. It will get fixed in the future and jruby-complete is not even vulnerable so this is appeasing people's processes
<headius>
psych 5.1 seems ok against master
<headius>
if we are ok with it I could push for a non-pre release
<headius>
that's the only path forward though since it requires a new build of psych ext
<headius>
updating 9.3 may be problematic for other reasons though
<headius>
it is a big leap in psych version and suddenly will be 1.2 yaml only
<enebo[m]>
What concerns are there? different yaml version supported?
<enebo[m]>
not sure what may not be the same in engine that original API had
<enebo[m]>
ah 1.2 only
<enebo[m]>
Does that remove features? Or refuse to parse old format?
<headius>
it is mostly a superset of 1.1 but there are a few small breaking changes
<headius>
no idea how far it is from 1.0 or how far 1.1 is from 1.0
<enebo[m]>
yeah well we are sort of up against a wall
<headius>
yeah I agree
<enebo[m]>
we could put this into 9.4.1.0 and get some feedback then move it back to 9.3.11.0
<enebo[m]>
I don't think people expect there to be no issues on 9.4
<headius>
yeah I'd be ok with that
<headius>
I can update the snakeyaml cve thing with status
<enebo[m]>
so make a separate issue on this marked for .11 and we will get two milestones out of the issues system after all
<headius>
ok
<enebo[m]>
I am hoping to see some feedback from logstash people on the regexp regression
<headius>
how about I just rebase and retarget my psych 5.1 PR against 9.3.11
<enebo[m]>
100x slower is a big deal so I hope to see that one done
<headius>
we'll merge it after 9.3.10 release and then it will merge forward to 9.4 for 9.4.1
<headius>
enebo: that donv issue is in discussion. I have a PR that exposes those settings in Psych
<enebo[m]>
I saw there is a PR over there after messaging
<enebo[m]>
so I maybe will move that to 9.4.2
<headius>
If it can get in 5.1 great
<enebo[m]>
we can move that back to 9.3.x at some point
<headius>
Still being discussed though
<enebo[m]>
9.4.1 is current so I mean later
<enebo[m]>
and this will only affect jruby so I think if that options stuff lands later in 5.1 we won't complain
<headius>
It certainly won't break anything
<byteit101[m]>
enebo: unclear. My initial plan that I ran by headius was subspawn only takes over Process.spawn/wait in 9.5, and is PTY only (+user gem use) in 9.4. If you think we should replace it earlier, even for just windows, we should discuss that
<enebo[m]>
byteit101: if you can gem install I think we can entertain installing that gem on windows for 9.4 installers
<enebo[m]>
headius: I will optimistically put that donv yaml issue for 9.4.2.0 so we can keep it visible
<byteit101[m]>
use is require 'subspawn/replace' for end users
<enebo[m]>
byteit101: we would just somehow do that require on windows and it would be the default
<headius>
enebo: that's fine
<byteit101[m]>
I do think I need to expose wait/waitpid though first
<byteit101[m]>
busy with stuff this week, do you have an eta for 9.4.2?
<byteit101[m]>
that I should try to target time wize
<headius>
9.4.2 is not for a couple weeks at least
<headius>
9.4.1 is this week so not much else getting in
<enebo[m]>
byteit101: 9.4.2 is aspirational perhaps if you are not ready it can push to another point
<byteit101[m]>
ok, cool
<byteit101[m]>
The thing I need the most is a proper place to run jruby's rubyspec suite on windows with my changes
<enebo[m]>
If we have a 9.4.2 in a couple of weeks it is because we got a list of big issues to turnaround on quickly
<headius>
Windows vbox dev images are freely available
<byteit101[m]>
Oh, and I can include the arm64 build changes if headius gets around to testing the -java gem from last week
<byteit101[m]>
Ah, where?
<headius>
Yeah I can revisit that after release
<byteit101[m]>
cool
<headius>
From MS somewhere
<byteit101[m]>
("ve been developing win32 in wine so far)
<headius>
It's easy to find
<byteit101[m]>
k, will look next week
<byteit101[m]>
currently on hold with the IRS
<headius>
Lovely
<byteit101[m]>
at least the wait music isn't too bad
<enebo[m]>
eye of the tiger?
<byteit101[m]>
no, elevator music, but tolerable elevator music unlike the last place I called