This week, Symfony 6.4.43, 7.4.15, 8.0.16 and 8.1.3 maintenance versions were released. In addition, Symfony 8.0 reached its end of life. Finally, we introduced Symfony Reprise, the evolution of Webpack Encore for modern bundlers such as Vite and Rsbuild.

Symfony development highlights

This week, 126 pull requests were merged (102 in code and 24 in docs) and 47 issues were closed (38 in code and 9 in docs). Excluding merges, 53 authors made 16,378 additions and 6,648 deletions. See details for code and docs.

6.4 changelog:

  • b281699: [SecurityBundle] let the LDAP and non-LDAP variants of an authenticator share a firewall
  • e84a12f: [Mailer] fix fatal TypeError when sending a RawMessage via an API transport
  • 6d5c6fc: [String] consistently return null for out-of-range offsets
  • ee5a657: [Serializer] prefer serialized name over raw property key
  • 7134632: [HttpClient] don't send the original Host header on cross-authority redirects
  • 42b58af: [HttpClient] fix the escaping of the generated cURL command
  • f194283: [Cache] add support for Redis relay 0.40
  • 8ceff70: [HttpClient] strip Proxy-Authorization on cross-authority redirects
  • 5076161: [HttpFoundation] don't crash on a non-string signature in UriSigner
  • d13078a: [HttpFoundation] validate the characters allowed in a cookie path and domain
  • f7dcdd9: [SecurityBundle] always constrain redirect targets to the current host, even without sessions
  • ce6f8a5: [Serializer] check the denormalized class is a Mime part in MimeMessageNormalizer
  • 58945e3: [HttpClient] fail when an https proxy is configured but libcurl cannot use it
  • 5cc98f5: [VarExporter] detect the null byte rendering instead of pinning a PHP version
  • 73463e9: [Translation] do not split ICU messages on pipes in PoFileDumper
  • 0431fc9: [VarExporter] cache result of hasOctalControlChars
  • bb00b6b: [Validator] fix File constraint skipping the mime type check when extensions and mimeTypes have no common value
  • 8bd5a1c: [Translation] fix fuzzy translations and multi-line msgctxt in PO files
  • 7992233: [PropertyAccess] fix caching of null read info
  • 7201e00: [TwigBridge, WebProfilerBundle] fix compatibility with Twig 4
  • b160ac8: [Mailer] fix rewriting cid references of inline parts for Mailgun
  • 1fa8584: [Mime] fix corrupted CID references when one is a prefix of another
  • bb65e80: [Console] fix column widths when a row spans columns
  • 4ec2feb: [Mailer] map the processed event to RECEIVED in Sendgrid

7.4 changelog:

  • 2f9f7c8: [ObjectMapper] fix nested map() reconstructing an existing target
  • 66dcfee: [PropertyInfo] do not trigger legacy Type deprecation on getType()
  • a873931: [HttpFoundation] fix retry field being dropped across server event streams
  • 64418e1: [JsonPath] fix evaluating filter expressions wrapped in several parentheses
  • b785a29: [JsonPath] reject non-singular queries in filter comparisons
  • c62344d: [HttpFoundation] fix newline handling in server event fields
  • 8ff4bc0: [JsonStreamer] drop the unbounded process-global key cache in Splitter
  • 539c476: [JsonPath] add limits for filter expression length and depth in JsonCrawler
  • 295ed61: [Config] generate unsealed array shapes for any normalizers
  • 25e0295: [Mailer] handle the email.failed and email.suppressed webhook events in Resend
  • b9260f6: [Cache, Messenger] restore compatibility with ext-redis 5
  • 3dcb649: [JsonStreamer] fix escaping, float precision and error reporting when writing JSON

8.1 changelog:

  • 0903a96: [Messenger] reject a serialized type name that is another message's class name
  • e7af682: [HttpKernel] fix the cURL command when a cookie holds an array
  • 25d46a7: [DependencyInjection] restore reading "container.behavior_describing_tags" in DecoratorServicePass

8.2 changelog:

  • 5ab0a8e: [HttpKernel] add milliseconds to logs’ timestamp_rfc3339
  • f2de2db: [Lock] add MysqlStore for advisory locking
  • 43675ef: [JsonStreamer] add a "cache_variant" option to the generated cache file name
  • 7a68c2f: [Messenger] add support for serialized type name aliases in #[AsMessage] attribute
  • 6cdcda7: [Ldap, SecurityBundle] add an option to check only LDAP users against the LDAP server
  • cba1703: [VarDumper] make dump toggles keyboard accessible
  • bb59991: [DependencyInjection] add a $priority argument to the #[Required] attribute
  • cf1db44: [JsonStreamer] add UID value object support
  • c092995: [FrameworkBundle] report unused .env variables in debug:container --env-vars
  • 201a379: [HttpKernel] minor performance improvement when resolving arguments
  • 31a6342: [Mime] add support for binary Content-Transfer-Encoding
  • 5cbaf29: [Messenger] add AMQP transport keepalive support
  • c9ad626: [Translation] add a Plural-Forms header to the PoFileDumper output
  • 78226d0: [Security] throw a forbidden exception when the IsCsrfTokenValid attribute fails
  • 95964c6: [Cache, FrameworkBundle] configure the app cache with a DSN
  • 15de720: [FrameworkBundle] reject combining framework.cache.app with default_provider
  • 2661587: [Translation] use Loco import API to push translations
  • b56d932: [Translation] allow defining a mapping between a Loco tag filter and a domain
  • 8ee9bc2: [Translation] make CrowdinProvider::read() fetch every locale when passed none
  • 9a03620: [Lock] add DoctrineDbalMysqlStore for advisory locking
  • 0371ac8: [Lock] allow advisory locks when reusing a PDO/DBAL connection in StoreFactory
  • 94f02b0: [Mailer] add TurboSMTP bridge
  • 2c8b497: [Messenger] filter failed messages by class and failure time
  • 117f722: [Notifier] add the WhatsApp bridge

Newest issues and pull requests

Symfony Jobs

These are some of the most recent Symfony job offers:

  • Symfony Developer at ATH
    Contract / Freelance - €25 – €50 / hour
    Full remote
    View details
  • Lead Symfony Developer at DocuPet
    Full-time - CA$140,000 – CA$180,000 / year
    Full remote
    View details

You can publish a Symfony job offer for free on symfony.com.

SymfonyCasts Updates

SymfonyCasts is the official way to learn Symfony. Select a track for a guided path through 100+ video tutorial courses about Symfony, PHP and JavaScript.

This week, SymfonyCasts published the following updates:

They talked about us

Upcoming Symfony Events

Call to Action

Published in #A week of symfony