back
16 comments
We have to give credit to Google for funding amazing performance work with Chromium/v8 as well as things like project zero.

v8 Sandboxes, isolates - powers many edge worker models like those at Cloudflare, Fastly, and even entire node.js ecosystem

Project zero - see recent posts of securing non-google software, including past reports about iPhone bugs.

I just can't understand the hate they get in other fronts.

>I just can't understand the hate they get in other fronts.

One recent Google achievement that it is not talked about that much, Google Maps, Google offered it for free, killed all the other companies that offered similar services for money and now Google maps is also paid. Some people don't like when giants use their profits from a market to offer free stuff in other markets and kill good paid or free products.

> Google offered it for free, killed all the other companies that offered similar services for money and now Google maps is also paid

There weren't really similar services when it launched and there were far more mapping services/APIs both before and after the rate hike, so...

The real problem is people based businesses on the rates offered and then they were drastically increased. The maps market is doing fine.

Mapquest was a whole business, a growing, going concern.
> Mapquest was a whole business

MapQuest didn't have a mapping API until later, and was notably owned by AOL and offered as a free product for five years by that point. They're also still a company, having not been killed, despite MapQuest's best efforts to destroy their own wildly popular product through neglect.

Freemium models as well as services being in free to get market share is also a model other companies have also done in the past. Granted this is something that should be slightly regulated. Companies must be forced to give N months notice for pricing changes, particularly those that can also be classified as utilities.

About the actual method of pricing though, one needs to compare to the likes of Oracle - where they charge based on CPU cores that you are using (where it is entirely based on how much can they extract out of a company). Or let us take the case of your favorite TV/Phone company wanting more $$ for an extra extension in your house. In those days, I would have never imaged that Netflix or Youtube additional "profiles" would be free.

A company the size of Google should not be seen as a single homogeneous entity.

Some departments of it do wonderful, stellar work and give it away as open source. Other parts do so-so work. Yet other parts do something which is seen by many as nefarious. You can often see the whole spectrum represented in one major product, such as Chrome or Android.

This is why seeing entire Google (or FB, or MS, or even Oracle) as uniformly "good" or "evil" is a dangerous simplification. OTOH knowing their corporate policies from prior experience, one can presume how "good" or "evil" an outcome is more probable in some new, unknown case. Known cases, such as V8, can completely contradict the common perception.

> I just can't understand the hate they get in other fronts.

It's easy to understand. Great technical work and products don't bestow sainthood.

> I just can't understand the hate they get in other fronts.

It's not incongruous to belive both: 1. Google is doing important and valuable work, 2. Google is doing other things that are bad and they should stop.

The whole idea that you can simply label some entity (human, company, anything) as "purely good" or "purely evil" is wrong and dangerous. You must qualify the scope of good and bad, and discriminate between which behaviors fall into each category. This is the major failure in the idea of cancel culture.

We’re talking about corporations of the size of small cities. There are going to be some amazing people in there, but some that you don’t like as well. Both groups will stand out. So it’s normal to hear apparently conflicting news about the org as a whole.
> I just can't understand the hate they get in other fronts.

Other fronts are other fronts than the good works you listed.

I'm super confused by your comment! I don't believe that good contributions in one area absolves someone's bad behavior in other fronts.

You're not supposed to buy goodwill.

> megamorphic

Now that's a new word I haven't heard before. Is this supposed to mean something different from "polymorphic"?

The code as written is polymorphic, but the JIT will make an optimized version if it detects that a function is only called with one or two types at runtime.

As I understand it "megamorphic" just means the point where the JIT gives up on specializing for each type. So you'd have e.g.

Monomorphic - JIT emits code specialized for one type.

Bimorphic - JIT emits two specialized versions of the code, with a branch in front that checks the type.

Megamorphic - JIT emits polymorphic code that will work with any type. Prevents inlining and many optimizations.

This comes up when optimizing Java code, since the JVM only specializes call sites that are monomorphic or bimorphic.

If you're implementing a set class you might want to have specialized subclasses for, say, empty sets or one-element sets, so you can implement certain methods more efficiently - e.g. the intersection of an empty set is always an empty set. So you add the classes MySet, MyEmptySet and MyOneElementSet. But now your code runs slower than it did with just MySet, because your method call sites are Trimorphic and can't be inlined anymore.

This seems like a good explanation as well: https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.... and says that V8 will optimize for up to 4 different types before going megamorphic.

In the example in TFA, m() will be called with 5 different classes (createMixin(Base), createMixin(createMixin(Base))...) so V8 will generate megamorphic code instead of specializing.

Right, I know that, it's just that I've usually heard this called "monomorphic"/"bimorphic"/"trimorphic" (rarely) and then just "polymorphic" for when the JIT stops specializing. I just have never heard of "megamorphic".
'Bimorphic', 'trimorphic', 'megamorphic' are all increasing degrees of 'polymorphism'. Something that is 'bimorphic' is also 'polymorphic', but is not 'megamorphic'.
Nice! Good job people working on V8!