Distributing PHP applications is quite complicated. For instance, to run a Symfony project in production, a web server, the PHP engine, and the appropriate PHP extensions need to be installed. Their versions and configurations must be compatible with the app. Because PHP is an interpreted language, the application source code must also be available. Composer…
Tag: Go
The PHP Revolution Is Underway: FrankenPHP 1.0 Beta
I’m very proud to announce the immediate availability of FrankenPHP 1.0 beta. FrankenPHP is a brand-new application server for PHP, written in Go and built on top of Caddy, that dramatically simplifies the deployment of PHP apps, and brings new features to PHP such as: FrankenPHP is available as a Docker image (Debian, Alpine, PHP…
FrankenPHP: The Modern Php App Server, written in Go
Today I released FrankenPHP during the ForumPHP conference. FrankenPHP is a new app server for PHP apps (built on top of Caddy) and a library to embed the PHP interpreter in Go web servers. Key features: Learn more in this slide deck, on the website and on GitHub! SymfonyCon version: Recording of the talk (in…
Mercure 0.14: Major Performance Improvement and New Features
I’m very pleased to announce the immediate availability of the Mercure.rocks hub version 0.14. Mercure is a free and open-source solution for real-time communication. With Mercure, securely push data to all your connected users with a simple POST request. No third-party library or SDK is required: the browser (or any other type of client) receives…
Goroutines, threads, and thread IDs
If you attended AFUP Day 2022, you might know that I am currently working on a PHP module for web servers written in Go. While testing my upcoming library, I encountered strange memory access issues related to the threads created by the Go runtime (you know, cgo…). By default, the Go scheduler runs many goroutines…
New in Caddy 2.5: Redact Sensitive Data from Your Logs
Caddy is the rising star of web servers. It is fast, easy to configure, fully featured (automatic TLS certificate generation and renewal, HTTP/3, cloud-native, config hot reloading…), and secure (it is written in Go, not in C). Thanks to its unmatched extensibility that makes it a top-notch app platform, Caddy has a thriving ecosystem! To…
Using the “103 Early Hints” Status Code in Go Applications
103 is a new experimental HTTP status code defined in RFC 8297. It’s an informational status that can be sent by a server before the main HTTP response. Used in conjunction with the Link HTTP header and the preload relation, 103 gives the client the opportunity to fetch resources (assets, images, linked API documents…) related…
The Mercure.rocks Hub is now based on Caddy Web Server
I’m very happy to announce the immediate availability of the Mercure.rocks Hub version 0.11! The Mercure.rocks Hub is a free software implementing the Mercure specification, an open protocol for fast, reliable and battery-efficient in-browser real-time communications. Version 0.11 is a major milestone for the project! As you may know, the Mercure.rocks Hub is written in…
A Structured HTTP Fields Parser and Serializer for the Go Programming Language
“Structured Field Values for HTTP” is an upcoming RFC defining a set of well-defined data types to use in HTTP headers and trailers. This new format will improve the interoperability and the safety of HTTP by allowing to create generic parsers and serializers suitable for all HTTP headers (currently, most headers need a custom parser)…
Vulcain: HTTP/2 Server Push and the rise of client-driven REST APIs
Watch a longer video (English)!Watch a French version. Over the years, several formats have been created to fix performance bottlenecks of web APIs: the n+1 problem, over fetching, under fetching… The current hipster solution for these problems is to replace the conceptual model of HTTP (resource-oriented), by the one of GraphQL. It’s a smart network…