Uncategorized

  • password_hash defaults changed, and rehashing is free

    PASSWORD_DEFAULT is explicitly allowed to change between releases, and it does. Anything storing the constant’s current value, or sizing a column for today’s output, is storing a decision…

  • Parameter type widening in 7.2

    A child class could never remove a parameter type from a method it overrides, even though accepting more than the parent is safe by the same rule that…

  • appsettings.json layering works like a .env you can nest

    Configuration is assembled from several sources in order, each overriding the last, with environment variables last — so the same file works in development and is overridden in…

  • Passive listeners are the default for some events now

    Chrome made touchstart and touchmove listeners on the document and window passive by default, which improves scrolling everywhere and silently breaks anything relying on preventDefault() there. A pull-to-refresh…

  • wc_get_order returns different classes for different types

    An order, a refund and a subscription are all shop_order-ish posts and are not the same class, so code type-hinting WC_Order breaks the first time a refund arrives.…

  • EXPLAIN FORMAT=JSON shows the cost the plain one hides

    The tabular EXPLAIN says which index was used and not how expensive the optimiser thought each option was, which is the information you want when it chose one…

  • A covering index for a sort, not just a filter

    Covering indexes are usually explained in terms of avoiding a row lookup. The other half is that an index is already ordered, so a sort matching the index…

  • prestissimo, and why parallel downloads are not the default

    Composer downloads packages one at a time, which on a cold cache with sixty dependencies is mostly waiting on latency. A plugin parallelises it and the improvement is…

  • Read replicas, and the queries that must not use them

    Reads moved to a replica and checkout started showing empty carts. Read-after-write, sticky connections, and measuring the lag rather than assuming it.

  • Probabilistic early expiry beats a lock

    Rather than coordinating who recomputes, let each reader decide independently with a probability that rises as the expiry approaches — so one request refreshes early and the rest…