<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Daniil Gentili's blog</title><link>https://blog.daniil.it/</link><description>Recent content on Daniil Gentili's blog</description><generator>Hugo</generator><language>en</language><copyright>Daniil Gentili (VAT 01647560299)</copyright><lastBuildDate>Tue, 10 Nov 2026 22:00:00 +0000</lastBuildDate><atom:link href="https://blog.daniil.it/index.xml" rel="self" type="application/rss+xml"/><item><title>MadelineProto 8.20: video calls, group calls, livestreams and E2E conferences in pure PHP, 250x faster crypto, rich messages and much more</title><link>https://blog.daniil.it/2026/11/10/madelineproto-8-20-1/</link><pubDate>Tue, 10 Nov 2026 20:33:40 +0000</pubDate><guid>https://blog.daniil.it/2026/11/10/madelineproto-8-20-1/</guid><description>&lt;p&gt;MadelineProto 8.20.1 is out, and it&amp;rsquo;s the biggest update since MadelineProto 8.0!&lt;/p&gt;&#10;&lt;p&gt;Since 8.7.0, MadelineProto has gained &lt;strong&gt;video calls, group calls, livestreams, live stories and end-to-end encrypted conference calls, all in pure PHP&lt;/strong&gt;: calls run on a &lt;strong&gt;pure PHP WebRTC stack&lt;/strong&gt;, with &lt;strong&gt;pure PHP OPUS and AAC codecs&lt;/strong&gt;. No FFI, no extensions, no shell commands and no ffmpeg, so &lt;strong&gt;everything works on webhosts, too&lt;/strong&gt;! Over 43 releases (8.8.8 → 8.20.1), we also added rich messages, resumable uploads and downloads, a native crypto extension, a new web UI, Windows IPC support, layers 231 to 233, and hundreds of fixes.&lt;/p&gt;</description></item><item><title>Check your email</title><link>https://blog.daniil.it/newsletter/check-your-email/</link><pubDate>Tue, 10 Nov 2026 20:00:00 +0000</pubDate><guid>https://blog.daniil.it/newsletter/check-your-email/</guid><description>&lt;p&gt;Thanks for subscribing! I&amp;rsquo;ve sent you an email: open the link in it to confirm your subscription.&lt;/p&gt;&#10;&lt;p&gt;If it doesn&amp;rsquo;t arrive within a few minutes, check your spam folder, or &lt;a href="https://blog.daniil.it/newsletter/"&gt;try again&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Announcing Psalm 7</title><link>https://blog.daniil.it/2026/11/02/announcing-psalm-7/</link><pubDate>Mon, 02 Nov 2026 20:12:52 +0000</pubDate><guid>https://blog.daniil.it/2026/11/02/announcing-psalm-7/</guid><description>&lt;p&gt;Announcing the release of Psalm 7!&lt;/p&gt;&#10;&lt;p&gt;Featuring a simply enormous number of new features and bug fixes, such as:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;security analysis on by default&lt;/strong&gt;: fully refactored for 10x+ performance and much greater coverage, in the same run as type checking and dead code detection;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;much deeper security analysis taint tracking&lt;/strong&gt;: NoSQL, LLM prompt and URL injection, new sources like &lt;code&gt;php://input&lt;/code&gt; and uploaded file names, flows through closures, generators, traits and by-reference parameters, and ready-made stubs for Guzzle, PSR-7, Monolog, MongoDB and more.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;a new purity model&lt;/strong&gt; based on Hack&amp;rsquo;s capabilities: declare exactly which side effects a function may have (&lt;code&gt;io&lt;/code&gt;, &lt;code&gt;time&lt;/code&gt;, &lt;code&gt;write-props&lt;/code&gt;&amp;hellip;), with purity templates for classes, closures and automatically inferred annotations;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;graph-based dead code detection&lt;/strong&gt;: If nothing reachable uses a class, function, method, constant, variable, etc, Psalm finds it, now properly handling unused cycles as well.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Template defaults&lt;/strong&gt; (&lt;code&gt;@template TError of Throwable = RuntimeException&lt;/code&gt;) for classes, functions and methods: &lt;code&gt;Result&amp;lt;int&amp;gt;&lt;/code&gt; just works, and libraries can add templates without breaking their users.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;PHP 8.5 and 8.6 support&lt;/strong&gt;: Full support for Partial Function Application, the pipe operator, and much more!&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Daily releases.&lt;/strong&gt; Features and fixes reach you the day they land, no more waiting on &lt;code&gt;dev-master&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Framework plugins in the box.&lt;/strong&gt; The PHPUnit, Symfony, Laravel, Mockery and sabre/event plugins ship with Psalm and switch on by themselves. Zero setup.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;a bigger Psalm maintainer team&lt;/strong&gt;: &lt;a href="https://github.com/alies-dev"&gt;@alies-dev&lt;/a&gt; has joined the Psalm maintainer team, contributing many new useful features and bugfixes!&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;An official &lt;a href="https://discord.gg/RwH8rEpxt9"&gt;Discord community!&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;And so, so many other new features and bugfixes!&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Psalm 7 runs on 64-bit PHP 8.2 to 8.6. Upgrading is simple for most projects: see &lt;a href="#upgrading"&gt;Upgrading&lt;/a&gt; below.&lt;/p&gt;</description></item><item><title>Cookie Policy</title><link>https://blog.daniil.it/cookie-policy/</link><pubDate>Mon, 26 Oct 2026 12:34:36 +0000</pubDate><guid>https://blog.daniil.it/cookie-policy/</guid><description>&lt;p&gt;This blog sets no cookies of its own: only Cloudflare, which hosts and protects it, may set the strictly necessary security cookies listed below. It does not use analytics, advertising or social media trackers, so it does not show a cookie banner.&lt;/p&gt;</description></item><item><title>Privacy Policy</title><link>https://blog.daniil.it/privacy-policy/</link><pubDate>Mon, 26 Oct 2026 12:34:36 +0000</pubDate><guid>https://blog.daniil.it/privacy-policy/</guid><description>&lt;p&gt;This blog collects some personal data from its readers. It does not use analytics, advertising or profiling, and comments are disabled.&lt;/p&gt;&#10;&lt;h2 id="personal-data-processed-for-the-following-purposes-and-using-the-following-services"&gt;Personal data processed for the following purposes and using the following services&lt;/h2&gt;&#10;&lt;h3 id="hosting-and-traffic-distribution"&gt;Hosting and traffic distribution&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt; (hosting of the blog, reverse proxy, CDN and security): browsing data (IP address, requested page, browser); strictly necessary security cookies, only when a security check requires them. Place of processing: United States and worldwide.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;The controller’s own server&lt;/strong&gt; (the newsletter, newsletter.daniil.it): browsing data, kept in the web server logs. Place of processing: Italy.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="newsletter"&gt;Newsletter&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Newsletter software&lt;/strong&gt; (listmonk) running on the controller’s own server, and &lt;strong&gt;Zoho Mail&lt;/strong&gt; (sending the emails): email address, optional name, IP address and date of subscription; &lt;strong&gt;Cloudflare Turnstile&lt;/strong&gt; checks the subscription form for automated abuse (browsing data); opens and clicks of the newsletter emails are only counted in total, not per subscriber. Place of processing: Italy and United States.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="your-rights"&gt;Your rights&lt;/h2&gt;&#10;&lt;p&gt;You can withdraw your consent by unsubscribing, access, rectify and erase your data, restrict or object to its processing, and receive it in a portable format, by writing to the controller or from the link to manage your subscription in every newsletter; you can also lodge a complaint with the Italian Garante per la protezione dei dati personali.&lt;/p&gt;</description></item><item><title>Privacy Policy (complete)</title><link>https://blog.daniil.it/privacy-policy-full/</link><pubDate>Mon, 26 Oct 2026 12:34:36 +0000</pubDate><guid>https://blog.daniil.it/privacy-policy-full/</guid><description>&lt;p&gt;This page explains which personal data is processed when you visit blog.daniil.it (“this blog”) or subscribe to its newsletter, how and why it is processed, and what rights you have, in accordance with Regulation (EU) 2016/679 (General Data Protection Regulation, “GDPR”) and Italian Legislative Decree 196/2003 (“Privacy Code”).&lt;/p&gt;</description></item><item><title>php-community: a faster-moving, community-driven PHP.</title><link>https://blog.daniil.it/2026/03/15/php-community-a-faster-moving-community-driven-php/</link><pubDate>Sun, 15 Mar 2026 00:12:58 +0000</pubDate><guid>https://blog.daniil.it/2026/03/15/php-community-a-faster-moving-community-driven-php/</guid><description>&lt;p&gt;I&amp;rsquo;ve just submitted to the PHP internals mailing list a new PHP RFC, for a faster-moving, community-driven PHP: &lt;a href="https://wiki.php.net/rfc/php-community"&gt;https://wiki.php.net/rfc/php-community&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;With this proposal, the entire PHP community gets immediate access to experimental features through an official php-community version of PHP, versioned in a rolling manner (i.e. php-community 2026.03.01), and available on &lt;a href="http://php.net"&gt;php.net&lt;/a&gt; along normal PHP releases, similar to rust-nightly.&lt;/p&gt;</description></item><item><title>MadelineProto 8.4.18: a major reactive refactoring!</title><link>https://blog.daniil.it/2025/07/11/madelineproto-8-4-10-a-major-reactive-refactoring/</link><pubDate>Fri, 11 Jul 2025 15:51:57 +0000</pubDate><guid>https://blog.daniil.it/2025/07/11/madelineproto-8-4-10-a-major-reactive-refactoring/</guid><description>&lt;p&gt;&lt;a href="https://github.com/danog/MadelineProto"&gt;MadelineProto&lt;/a&gt;, the async PHP client API for the telegram MTProto protocol, was updated to 8.4.18!&lt;/p&gt;&#10;&lt;p&gt;This release features a major internal refactoring of the message system and the auth state machine, bringing major stability and performance improvements by removing legacy code and switching to a new reactive model.&lt;/p&gt;</description></item><item><title>Psalm v7: up to 10x performance!</title><link>https://blog.daniil.it/2025/07/10/psalm-v7-up-to-10x-performance/</link><pubDate>Thu, 10 Jul 2025 13:55:04 +0000</pubDate><guid>https://blog.daniil.it/2025/07/10/psalm-v7-up-to-10x-performance/</guid><description>&lt;p&gt;Announcing the public beta of Psalm v7!&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://psalm.dev"&gt;Psalm&lt;/a&gt;) is one of the biggest and most powerful PHP Static analysis tools, featuring exclusive features like &lt;a href="https://psalm.dev/docs/security_analysis/"&gt;security analysis&lt;/a&gt;, and &lt;a href="https://github.com/vimeo/psalm/releases/tag/7.0.0-beta11"&gt;Psalm v7&lt;/a&gt; brings &lt;strong&gt;huge&lt;/strong&gt; performance improvements to &lt;a href="https://psalm.dev/docs/security_analysis/"&gt;security analysis&lt;/a&gt;, up to &lt;strong&gt;10x&lt;/strong&gt; thanks to a full refactoring of both the internal representation of taints, and optimization of the graph resolution logic.&lt;/p&gt;</description></item><item><title>Official Psalm docker image</title><link>https://blog.daniil.it/2025/07/10/official-psalm-docker-image/</link><pubDate>Thu, 10 Jul 2025 13:26:40 +0000</pubDate><guid>https://blog.daniil.it/2025/07/10/official-psalm-docker-image/</guid><description>&lt;p&gt;&lt;a href="https://psalm.dev"&gt;Psalm&lt;/a&gt; is one of the biggest and most powerful PHP Static analysis tools, featuring exclusive features like &lt;a href="https://psalm.dev/docs/security_analysis/"&gt;security analysis&lt;/a&gt;, and in &lt;a href="https://github.com/vimeo/psalm/releases/tag/6.9.0"&gt;Psalm 6.9&lt;/a&gt;, an official, hyperoptimized Docker image was introduced.&lt;/p&gt;&#10;&lt;p&gt;Psalm&amp;rsquo;s docker image uses a custom build of PHP built from scratch with a custom &lt;a href="https://github.com/php/php-src/pull/18612"&gt;deepbind patch&lt;/a&gt; and the jemalloc allocator, running Psalm +30% faster on average than normal PHP (+50% faster if comparing to PHP without opcache installed).&lt;/p&gt;</description></item><item><title>Psalm review tool in Psalm 6.3</title><link>https://blog.daniil.it/2025/05/18/psalm-review-tool-in-psalm-6-3/</link><pubDate>Sun, 18 May 2025 14:42:38 +0000</pubDate><guid>https://blog.daniil.it/2025/05/18/psalm-review-tool-in-psalm-6-3/</guid><description>&lt;p&gt;&lt;a href="https://psalm.dev"&gt;Psalm&lt;/a&gt; is one of the biggest and most powerful PHP Static analysis tools, featuring exclusive features like &lt;a href="https://psalm.dev/docs/security_analysis/"&gt;security analysis.&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Psalm v6 was &lt;a href="https://blog.daniil.it/2025/05/11/psalm-v6-announcement/"&gt;recently released&lt;/a&gt;, and in &lt;a href="https://github.com/vimeo/psalm/releases/tag/6.3.0"&gt;Psalm 6.3&lt;/a&gt;, a new tool called &lt;a href="https://psalm.dev/docs/running_psalm/command_line_usage/#reviewing-issues-in-your-ide-of-choice"&gt;psalm-review&lt;/a&gt; was added.&lt;/p&gt;&#10;&lt;p&gt;It allows users to manually review found issues one by one in your favorite IDE: just start it on a JSON report generated by Psalm, and it will open your preferred IDE on the exact line and column where the issue occurred:&lt;/p&gt;</description></item><item><title>Psalm v6 Deep Dive: Copy-on-Write + dynamic task dispatching</title><link>https://blog.daniil.it/2025/05/11/psalm-v6-deep-dive-copy-on-write-dynamic-task-dispatching/</link><pubDate>Sun, 11 May 2025 13:02:10 +0000</pubDate><guid>https://blog.daniil.it/2025/05/11/psalm-v6-deep-dive-copy-on-write-dynamic-task-dispatching/</guid><description>&lt;p&gt;&lt;a href="https://psalm.dev"&gt;Psalm&lt;/a&gt; is one of the biggest and most powerful PHP Static analysis tools, featuring exclusive features like &lt;a href="https://psalm.dev/docs/security_analysis/"&gt;security analysis.&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Psalm v6 was &lt;a href="https://blog.daniil.it/2025/05/11/psalm-v6-announcement/"&gt;recently released&lt;/a&gt;, and soon after in &lt;a href="https://github.com/vimeo/psalm/releases/tag/6.1.0"&gt;Psalm 6.1&lt;/a&gt;, I implemented a major refactoring of multithreaded mode (automatically enabled on Linux/Mac OS) based on &lt;a href="https://github.com/amphp/parallel"&gt;amphp/parallel&lt;/a&gt;, which greatly improved analysis speeds!&lt;/p&gt;</description></item><item><title>Psalm v6 announcement</title><link>https://blog.daniil.it/2025/05/11/psalm-v6-announcement/</link><pubDate>Sun, 11 May 2025 13:02:08 +0000</pubDate><guid>https://blog.daniil.it/2025/05/11/psalm-v6-announcement/</guid><description>&lt;p&gt;&lt;a href="https://psalm.dev"&gt;Psalm&lt;/a&gt; is one of the biggest and most powerful PHP Static analysis tools, featuring exclusive features like &lt;a href="https://psalm.dev/docs/security_analysis/"&gt;security analysis,&lt;/a&gt; and &lt;strong&gt;Psalm v6&lt;/strong&gt; brings support for PHP 8.4, AMPHP v3, PHP-Parser v5 and much more!&lt;/p&gt;&#10;&lt;p&gt;I am happy to announce that I, Daniil Gentili, am now the main maintainer of Psalm, and thanks to the newly launched &lt;a href="https://psalm.dev/support"&gt;Psalm support contracts&lt;/a&gt;, I now have the opportunity to work heavily on Psalm, specifically focusing on major performance improvements and improved &lt;a href="https://psalm.dev/docs/security_analysis/"&gt;security analysis.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Hi</title><link>https://blog.daniil.it/2025/05/10/hi/</link><pubDate>Sat, 10 May 2025 18:45:59 +0000</pubDate><guid>https://blog.daniil.it/2025/05/10/hi/</guid><description>&lt;p&gt;I&amp;rsquo;m Daniil Gentili, a senior software artisan: I enjoy working on complex high-performance systems using Rust, Golang, C++, C, PHP, and this is my blog!&lt;/p&gt;&#10;&lt;p&gt;Here I&amp;rsquo;ll be posting news about all the projects I create and maintain, such as:&lt;/p&gt;</description></item><item><title>Newsletter</title><link>https://blog.daniil.it/newsletter/</link><pubDate>Fri, 09 May 2025 19:23:16 +0000</pubDate><guid>https://blog.daniil.it/newsletter/</guid><description>&lt;p&gt;Subscribe to my newsletter to always stay up to date on &lt;a href="https://github.com/danog/MadelineProto"&gt;MadelineProto&lt;/a&gt;, &lt;a href="https://psalm.dev"&gt;Psalm&lt;/a&gt; and my other projects, and &lt;a href="https://t.me/+Por5orOjwgccnt2w"&gt;join my community&lt;/a&gt; to chat with me!&lt;/p&gt;&#10;&lt;p&gt;You&amp;rsquo;ll get an email asking you to confirm: newsletters are only sent to confirmed addresses, and every newsletter has a link to unsubscribe.&lt;/p&gt;</description></item></channel></rss>