This week, development activity was intense, with many bug fixes in the maintained branches, numerous deprecation removals in the 8.0 branch, and new features added to the 7.4 branch, including tighter integration with FrankenPHP, the modern PHP application server. In addition, we proposed a new feature that allows using the helpers from AbstractController without extending it.

Symfony development highlights

This week, 61 pull requests were merged (48 in code and 13 in docs) and 21 issues were closed (14 in code and 7 in docs). Excluding merges, 27 authors made additions and deletions. See details for code and docs.

6.4 changelog:

  • 656f786: [Messenger] fix float value for worker memory limit
  • f8cca42: [FrameworkBundle] fix allow loose as an email validation mode
  • c69616d: [HttpClient] limit cURL's connection cache size
  • 8a846a9: [DependencyInjection] fix inlining when public services are involved
  • 92f7862: [FrameworkBundle] fix argument not provided to add_bus_name_stamp_middleware
  • f37df38: [Serializer] add support for discriminator map in property normalizer
  • 94c2b34: [Serializer] fix TraceableSerializer when called from a callable inside array_map
  • 26e3fc7: [DependencyInjection] fix generating adapters of functional interfaces
  • cdedbab: [Mailer] send clone of RawMessage instance in RoundRobinTransport

7.3 changelog:

  • 0ff3ef1: [JsonPath] improve compliance to the RFC test suite
  • e66e2de: [VarDumper] GdImage objects are handled by GdCaster
  • 89c0b76: [VarDumper] fix ResourceCaster deprecation messages
  • 5c61353: [ObjectMapper] fix parameter passed to class level transform
  • cde2156: [FrameworkBundle] disable the Lock integration to not register the deduplicate middleware

7.4 changelog:

  • 7b19f53: [Console] fix backwards-compatibility with overridden add() methods
  • c9500d8: [Mailer] add assertEmailAddressNotContains
  • 08e4c09: [DependencyInjection] allow extending #[AsAlias] attribute
  • 50d7b25: [Runtime] fix forward-compatibility with Symfony 8
  • b6afc1f: [FrameworkBundle] allow to un-verbose all the method in BrowserKitAssertionsTrait
  • 110481c: [HttpFoundation] use lowercase utf-8 as default response charset
  • 477311f: [Runtime] automatically use FrankenPHP runner when its worker mode is detected

8.0 changelog:

  • 46aa500: [Ldap, Security] remove deprecated eraseCredentials() from (User|Token)Interface
  • faed8e8: [Dotenv] remove DebugCommand::$defaultName and $defaultDescription
  • c90cd42: [DependencyInjection] remove #[TaggedIterator] and #[TaggedLocator] attributes
  • bbb4201: [HttpKernel] remove AddAnnotatedClassesToCachePass and related methods
  • 8d8523c: [Yaml] raise a parse error for duplicate keys
  • 722b523: [DependencyInjection] remove deprecated ContainerBuilder::getAutoconfiguredAttributes()

Newest issues and pull requests

Symfony CLI

Symfony CLI is a must-have tool when developing Symfony applications on your local machine. It includes the Symfony Local Server, the best way to run local Symfony applications. This week Symfony CLI released its new 5.12.0 version with the following changes:

  • use sync.Once to make PidFile.LogWriter calls safe (@tucksaun)
  • translate brand in the doctrine.server_version error message (@flovntp)
  • refactor: store configuration filename in the struct (@tucksaun)
  • refactor: add Executor.CommandLine (@tucksaun)
  • refacor: remove unnecessary stack wrapping (@tucksaun)
  • fix: fix generated PSH related code format (@tucksaun)
  • fix: do not crash when a symlink we try to create is already present and with the designated target, fix #603 (@tucksaun)
  • feat: improve warning message when Composer is not found (@tucksaun)
  • feat: automatically generate latest PHP version (@tucksaun)
  • feat: allow to override the path to the Symfony Console (@tucksaun)
  • feat: allow to define where is Composer using the SYMFONY_COMPOSER_PATH environment variable (@tucksaun)
  • feat: allow PHP executor to run executables other than PHP ones (@tucksaun)
  • feat: add support for .symfony.local.dist.yaml and .symfony.local.override.yaml config files (@tucksaun)
  • feat: add envs.LookupEnv (@tucksaun)
  • feat: add directory to the dir flag (@tucksaun)
  • do not truncate log files on each LogWriter calls (@tucksaun)
  • avoid warning in server:start (@tucksaun)
  • Upgrade to Go 1.24 (@tucksaun)
  • Update Mercure container check to use substring matching for full container image (@Marmelatze)
  • Run go mod tidy (@tucksaun)
  • Remove unused func (@fabpot)
  • Merge pieWrapper into phpWrapper (@tucksaun)
  • Initiate a contributing guide (@tucksaun)
  • Fix unbuffered os.Signal channel (@fabpot)
  • Fix CLI info injection into Symfony 7.3+ WDT, fix #620 (@tucksaun)
  • Extract logic for parsing Symfony CLI apps (@fabpot)
  • Apply suggestions from code review (@tucksaun)
  • Add support for pie (@alexandre-daubois)
  • Add missing license headers (@fabpot)
  • Add PIE to the 'Work on a project locally' section (@tucksaun)

Symfony Jobs

These are some of the most recent Symfony job offers:

  • Backend Symfony Developer at Nomador
    Full-time - €60,000 / year
    Full remote
    View details
  • Backend Symfony Developer at Substância Binária
    Full-time - €2,000 – €5,000 / month
    Remote + part-time onsite (Almada, Portugal)
    View details
  • Backend Symfony Developer at Polavis
    Full-time - €30 – €45 / hour
    Full remote
    View details
  • Backend Symfony Developer at Cobbleweb
    Full-time - €40,000 – €75,000 / year
    Full remote
    View details
  • Lead Symfony Developer at anyIP
    Full-time - $3,000 – $5,000 / month
    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

Call to Action

Published in #A week of symfony