This week, Symfony released the maintained versions 6.4.37, 7.4.9, and 8.0.9. Meanwhile, we continued merging new features for the upcoming Symfony 8.1 version, such as the new TUI component. Lastly, we published an update about the recent SymfonyInsight improvements.

Symfony development highlights

This week, 65 pull requests were merged (62 in code and 3 in docs) and 50 issues were closed (50 in code and 0 in docs). Excluding merges, 24 authors made additions and deletions. See details for code and docs.

6.4 changelog:

  • a990dfd: [Dotenv] strip NUL byte placeholder from values passed to putenv()
  • 884ba49: [AssetMapper] allow spaces in version constraints
  • 579599f: [DoctrineBridge] fail with a clear exception when symfony/form is missing
  • f3eb6ec: [Validator] fix mapping properties using property hooks
  • bf55ada: [HttpClient] don't share CURL_LOCK_DATA_CONNECT to honor max_host_connections
  • 42935b9: [Lock] avoid aborting outer PostgreSQL transaction on lock contention
  • 5f8ed0a: [RateLimiter] keep token bucket alive while reservation debt is unpaid
  • 7a771fc: [Cache] normalize default_lifetime for pools wrapped by ChainAdapter
  • 9b4e0ba: [MonologBridge] guard against re-entrant calls in AbstractTokenProcessor
  • eab9413: [FrameworkBundle] apply tagged MIME type guessers in File::getMimeType()
  • 49af6cc: [Mime] preserve inline part filename instead of overwriting it with the Content-ID
  • 1b54941: [Config] allow env placeholders in NumericNode min/max checks
  • 59d2a90: [Notifier] fix Basic auth header by keeping base64 padding in Ntfy
  • a0a4c4b: [Serializer] move type-mismatch and uninitialized-property handling into concrete normalizers
  • fe017f8: [Messenger] do not sleep after worker is stopped during idle cycle
  • 37c3c42: [Messenger] alias the AMQP "user" connection option to "login"
  • d87ea79: [DependencyInjection] reject circular references through a factory builder's setup

7.4 changelog:

  • f5731dd: remove usages of named arguments in tests
  • 8af7d2e: [Mailer] handle alternate error payload shapes for Payload Too Large in Postmark
  • 532e9cb: [Messenger] keep deduplication lock when handler throws
  • 1fc1587: [FrameworkBundle] fix mailer package check for bridges whose composer name does not match the service id
  • 13420b5: [DoctrineBridge] catch any driver exception in the same-database check
  • 9d2959e: [Config] fix array-shape generator dropping alternative types on nested PrototypedArrayNode
  • 6c24463: [Form] preserve collection children added by PRE_SET_DATA listeners
  • 4708a71: [Notifier] fix default boolean values SweegoTransportFactory
  • 95ae294: [Uid] fix compat with ext-ds v2
  • ce04d4d: [Validator] simplify When::$expression’s closure PHPDoc

8.1 changelog:

  • 28e35c1: [Tui] add the component
  • 8af0042: [Messenger] release deduplication lock on definitive failure
  • 27ba8df: [Serializer] improve NotNormalizableValueException message in BackedEnumNormalizer
  • 949a300: [DependencyInjection] support autowiring env vars as closures or Stringable when using #[Autowire(env: 'FOO')]
  • 8fa019f: [Runtime] add FRANKENPHP_RESET_KERNEL to reset the kernel between requests
  • 82ee657: [Validator] make constraint validators reentrant instead of being stateful
  • ca35814: [MonologBridge] add $subjectMaxLength option to MailerHandler
  • 9d8f068: [RateLimiter] add #[RateLimit] attribute to rate limit controllers declaratively
  • 39ac8ed: [FrameworkBundle] add --sort option to debug:router command
  • bb9e429: [Workflow] remove bg_color and description from metadata text in GraphvizDumper
  • 54d7bf9: [JsonStreamer] add DateTimeZone value object support
  • 42d1138: [Workflow] add support for dumping listeners in Graphviz diagrams
  • 11a5783: [ObjectMapper] fix #[Map] attribute breaking auto-mapping of other properties
  • 4b49e5b: [VarDumper] add CSP nonce support to HtmlDumper
  • 52db04c: [Form] use translation_domain for expanded ChoiceType placeholder
  • d96bbae: [Form] hide the placeholder in ChoiceType/select when not required
  • 2a032cc: [Notifier] add bridge for Prelude
  • ff69ea3: [TwigBundle] add twig.safe_class resource tag to register safe classes for the escaper
  • 409109c: [VarDumper] dump class-strings as class stubs with source location and static properties
  • ac97b50: [HttpFoundation] add SessionHasFlashMessage test constraint
  • 2566d12: [Serializer] add AbstractObjectNormalizer::ENABLE_TYPE_CONVERSION for scalar type transformation
  • 57e0c13: [VarDumper] skip built-in class names
  • 9883d5e: [Console] add support for OSC 9;4 escape sequence for progress reporting
  • 089fb07: [Serializer] add COLLECT_EXTRA_ATTRIBUTES_ERRORS and full deserialization path
  • 6f09f3f: [ErrorHandler] trigger @method deprecation notices for abstract classes
  • 645e8bc: [HttpKernel, VarDumper, WebProfilerBundle] forward CSP nonce to dump() instead of disabling CSP

Newest issues and pull requests

Symfony Jobs

These are some of the most recent Symfony job offers:

  • DevOps for a Symfony project at Cloudpepper
    Full-time - $150,000 – $180,000 / year
    Full remote
    View details
  • Lead Symfony Developer at SCTR Services
    Full-time - $70,000 – $110,000 / year
    Full remote
    View details
  • Symfony Developer at Design Force Marketing
    Full-time - $60,000 – $100,000 / year
    Grand Haven Michigan, United States
    View details
  • Backend Symfony Developer at ShipMonk
    Contract / Freelance - $5,000 – $8,000 / month
    Full remote
    View details
  • Backend Symfony Developer at Vacatia
    Full-time - $150,000 – $180,000 / year
    Remote + part-time onsite (Portland, Oregon, United States)
    View details

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

They talked about us

Upcoming Symfony Events

Call to Action

Published in #A week of symfony