shellac has quit [Quit: Computer has gone to sleep.]
<headius[m]>
basically MRI goes straight to win32 APIs to get the codepage number, formats that as ("CP%u", codepage), and then looks that up in encodings
<headius[m]>
so I made our logic match `/^MS([0-9]+)$/` and try the CP version of the name before falling back on default external
<headius[m]>
it's not pretty but it should be mostly reliable
<headius[m]>
the perfect option would be to mimic their win32 calls but I really don't want to depend on native downcalling just to get the filesystem encoding at boot
<headius[m]>
lopex: enebo review if you get a chance
mistergibson has joined #jruby
<headius[m]>
enebo: another thing I didn't get to chat about yesterday...
<headius[m]>
I merged in the change that limits reified instance variables to 50
<headius[m]>
mostly an arbitrary choice...so I have a couple conundrums
<headius[m]>
1. What's actually a useful size? We know there's a handful of objects in the system with a ton of instance variables, but I guess I don't have a good feel for a good limit. With too low a limit most variables will spill into vartable array; with too high a limit I guess the only real down side is generating really wide objects for those few cases
<headius[m]>
2. The current logic statically gathers the local var names and puts them in the set...so the first N variables it actually reifies will largely be random. I'm thinking about heuristics for which variables might be the most valuable, like sorting by access count or considering variables close to target class in hierarchy before variables used by other methods in other ancestors in the hierarchy
<headius[m]>
the eventual change I'll make is to actually allow the object shape to evolve dynamically, so if new variables come along then future allocations will use the wider object
shellac has joined #jruby
<enebo[m]>
headius: I was thinking about this even though we did not talk about it and I think looking at number of ivars on some reasonably complex AR instance may be a reasonable upper limit
<headius[m]>
but same questions apply there...when do we stop, which variables are most important, how deep do we want to go on profiling that
<enebo[m]>
What AR model object? I don't know but I do know it creates quite a few ivars
<enebo[m]>
Or I should say it is the thing I believe which creates the most commonly
<headius[m]>
it should be possible to do an OQL query against VarTableManager instances and get a histogram of sizes
<headius[m]>
that would be actual live counts as well, not statically determined
<enebo[m]>
yeah that would be pretty interesting to see
<headius[m]>
staticallly it only looks at literal @var set/get and attributes
<enebo[m]>
yeah and AR has a lot of magic
<headius[m]>
right
<enebo[m]>
well none of the columns would show up at all
<headius[m]>
so none of those reify now...that would be version 2
<headius[m]>
I believe even Truffle languages set an upper limit on reified object width
<enebo[m]>
ah yeah so those would end up in an array regardless
<headius[m]>
this could also be a combined heuristic based on how many vars, how many objs actually being allocated, how heavily the vars are being accessed
<headius[m]>
actually the more interesting metric I suppose is how many of each type of reified RubyObject are being created
<headius[m]>
I'll get that number with scaffolded app
<nirvdrum>
Yeah. I had never used it, but it sounded like a good product.
<nirvdrum>
I know you were looking at it for JRuby. If you have a license already, it's perpetual. But relying on it may be problematic as more Java releases are made.
<headius[m]>
it's too bad they were not allowed to do closed-world AOT optimization
<headius[m]>
hopefully Oracle will change their position on allowing external JVM vendors to define their own AOT profiles
<nirvdrum>
That's way above my pay grade.
<enebo[m]>
couldn't they so long as they do not call it Java?
<headius[m]>
From what I heard from Nikita, they were not allowed to have their product certified as Java if they did CWA AOT
<enebo[m]>
yeah I would assume though they could have one product certified and another which was not but I know that would be confusing for them to sell
<headius[m]>
yeah unclear...he was going to write something up about their experiences trying to do CWA but I have not seen anything
<enebo[m]>
Pretty annoying to see Oracle do exactly what they won't allow others to do but with that said I don't know if they are claiming SVM is technically Java certified
<enebo[m]>
implication perhaps though
<enebo[m]>
nirvdrum: lopex you guys ever hear of LRSTAR?
<headius[m]>
the claim is that it runs Java and JVM languages, so pretty strong implication
<headius[m]>
of course nobody else can say they run Java unless Oracle certifies that they run Java to Oracle's satisfaction
<enebo[m]>
yeah the trademark has ended hurting Java in the end much more than I thought it could
<enebo[m]>
I am ignoring any extra scope here :)
<enebo[m]>
e.g. beyond trademark comments
<lopex>
headius[m]: yeah, prety brutal
<lopex>
enebo[m]: no
shellac has quit [Quit: Computer has gone to sleep.]
<lopex>
headius[m]: what if someone want to use MS* on linux then ?
<headius[m]>
enebo: yeah good old Java™
<headius[m]>
lopex: well I tested it on Linux and it managed to find CP950 anyway
<headius[m]>
er no I tested it on Darwin
<headius[m]>
but not Windows
<enebo[m]>
hmm telegram may be down
<headius[m]>
nirvdrum: anyway, thanks for letting me know...bummer that there's now one fewer options
xardion has quit [Remote host closed the connection]
<headius[m]>
enebo: oh yeah I'm having trouble too
xardion has joined #jruby
<enebo[m]>
The LRSTAR guy claims less states and faster but he then closed sourced it and went out of business
<enebo[m]>
The last OSS version looks like it is windows only
<headius[m]>
Has anyone pushed forward with drone internet?
<enebo[m]>
ok going to get some lunch bbl8r
<lopex>
headius[m]: yeah, I once considered piracy on dones
<lopex>
headius[m]: since drone can escape from country for legal issues
<lopex>
well, is was just a fun idea
<headius[m]>
I have no knowledge of the efficiency of drones at that size
<lopex>
yeah, it would require mid-air refueling :P
<lopex>
headius[m]: and what about maritime law ?
<headius[m]>
Need to get solar drones that never land
<lopex>
pirate server on international waters
<lopex>
a whole new meaning
<headius[m]>
It works for the scientologists
<headius[m]>
Maybe they don't actually have a navy anymore but they used to
subbu|away is now known as subbu
<lopex>
yeah, I recall something
KeyJoo has joined #jruby
jeremyevans has quit [Ping timeout: 258 seconds]
jeremyevans has joined #jruby
mistergibson has quit [Quit: Leaving]
KeyJoo has quit [Quit: KeyJoo]
<headius[m]>
enebo: oh when I ran those reified object numbers I had the cap turned off
<headius[m]>
only one case above 50, at 54, with 20 instances at idle
<enebo[m]>
headius: your image before showed that one with 54 in it too
<headius[m]>
yeah I just noticed that
<headius[m]>
but anyway that's the only ones that were larger than 50 so it's not like there's a plague of 100-variable objects or something
<headius[m]>
who knows about weirder apps with complicated models though
<enebo[m]>
yeah
<headius[m]>
if I always generated a new class for each Ruby type I could just install the metaclass on the class object
<headius[m]>
statically
<headius[m]>
but that would be madness
subbu is now known as subbu|away
<enebo[m]>
I wonder if it would ever be worth having a colon2-ish name list of classes to do that too?
<enebo[m]>
If the benefit really shines through having some strategic types get it done could yield something perhaps
<enebo[m]>
Figuring it out dynamically is the magic all would like but we also know that even being capable of doing that makes the warmup tail that much worse