День добрый, давно не виделись)
У меня для вас есть несколько обновленных rfc в PHP 8.3:
Типизированные константы класса
теперь, наконец-то, можно будет указывать типы констант класса:
Раньше, если у вас был пустой массив, и вы добавите элемент с отрицательным индексом, а затем добавите еще один элемент, этот второй элемент всегда будет начинаться с индекса 0:
Будет использоваться, чтобы показать намерение программиста: "Я знаю, что этот метод переопределяет родительский метод. Если это когда-либо изменится, сообщите мне".
более подробно почему не все довольны этим rfc в новом посте https://sergeymukhin.com/blog/php-83-atribut-override
У меня для вас есть несколько обновленных rfc в PHP 8.3:
Типизированные константы класса
теперь, наконец-то, можно будет указывать типы констант класса:
class FooОтрицательные индексы в массивах
{
public const string A = 'a';
public const int B = 1;
public const float C = 1.1;
public const bool D = true;
public const array E = ['a', 'b'];
}
Раньше, если у вас был пустой массив, и вы добавите элемент с отрицательным индексом, а затем добавите еще один элемент, этот второй элемент всегда будет начинаться с индекса 0:
$array = [];Начиная с PHP 8.3, следующий элемент будет добавлен в index -4:
$array[-5] = 'a';
$array[] = 'b';
var_export($array);
//array (
// -5 => 'a',
// 0 => 'b',
//)
//array (Ну и напоследок спорное решение в виде атрибут #[Override]
// -5 => 'a',
// -4 => 'b',
//)
Будет использоваться, чтобы показать намерение программиста: "Я знаю, что этот метод переопределяет родительский метод. Если это когда-либо изменится, сообщите мне".
более подробно почему не все довольны этим rfc в новом посте https://sergeymukhin.com/blog/php-83-atribut-override
Sergeymukhin
PHP 8.3: Атрибут #[Override]
В PHP 8.3 появился новый атрибут #[Override]. Он уже известен в других языках, но позвольте мне рассказать, для чего он нужен, если вы не знаете.
👍5
Уязвимость OpenSSL USN-6119-1
Мэтт Касвелл обнаружил, что OpenSSL можеть неправильно обрабатывать определенные идентификаторы объектов ASN.1.
Уязвимость заключается в том, что злоумышленник может использовать эту проблему, чтобы удаленно заставить OpenSSL потреблять сильно ресурсы, что приведет систему к отказу в обслуживании. (CVE-2023-2650)
OpenSSL неправильно обрабатывает расшифровку шифра AES-XTS на 64-битных платформах ARM. Эта проблема затрагивает 18.04 LTS, 20.04 LTS, Ubuntu 22.04 LTS, Ubuntu 22.10 и Ubuntu 23.04. (CVE-2023-1255)
Инструкции по обновлению:
sudo pro fix USN-6119-1
Результатом будет чек лист пофиксенных или пропущенных USN
Проблему можно решить, обновив систему до следующих версий пакетов:
Ubuntu 23.04:
libssl3 3.0.8-1ubuntu1.2
Ubuntu 22.10:
libssl3 3.0.5-2ubuntu2.3
Ubuntu 22.04 LTS:
libssl3 3.0.2-0ubuntu1.10
Ubuntu 20.04 LTS:
libssl1.1 1.1.1f-1ubuntu2.19
Ubuntu 18.04 LTS:
libssl1.0.0 1.0.2n-1ubuntu5.13
libssl1.1 1.1.1-1ubuntu2.1~18.04.23
CVE, содержащиеся в этом USN, включают: CVE-2023-1255, CVE-2023-2650.
Мэтт Касвелл обнаружил, что OpenSSL можеть неправильно обрабатывать определенные идентификаторы объектов ASN.1.
Уязвимость заключается в том, что злоумышленник может использовать эту проблему, чтобы удаленно заставить OpenSSL потреблять сильно ресурсы, что приведет систему к отказу в обслуживании. (CVE-2023-2650)
OpenSSL неправильно обрабатывает расшифровку шифра AES-XTS на 64-битных платформах ARM. Эта проблема затрагивает 18.04 LTS, 20.04 LTS, Ubuntu 22.04 LTS, Ubuntu 22.10 и Ubuntu 23.04. (CVE-2023-1255)
Инструкции по обновлению:
sudo pro fix USN-6119-1
Результатом будет чек лист пофиксенных или пропущенных USN
Проблему можно решить, обновив систему до следующих версий пакетов:
Ubuntu 23.04:
libssl3 3.0.8-1ubuntu1.2
Ubuntu 22.10:
libssl3 3.0.5-2ubuntu2.3
Ubuntu 22.04 LTS:
libssl3 3.0.2-0ubuntu1.10
Ubuntu 20.04 LTS:
libssl1.1 1.1.1f-1ubuntu2.19
Ubuntu 18.04 LTS:
libssl1.0.0 1.0.2n-1ubuntu5.13
libssl1.1 1.1.1-1ubuntu2.1~18.04.23
CVE, содержащиеся в этом USN, включают: CVE-2023-1255, CVE-2023-2650.
👍1🤯1
Всем привет, у меня тут подъехал второй отчет в 2023 году об используемых версий PHP:
Как можно заметить процент использования новой версии PHP 8.2 растет и это радует)
более полная информация и красивые диаграммы в новом посте https://sergeymukhin.com/blog/statistika-versii-php-vypusk-20232
Как можно заметить процент использования новой версии PHP 8.2 растет и это радует)
более полная информация и красивые диаграммы в новом посте https://sergeymukhin.com/blog/statistika-versii-php-vypusk-20232
Sergeymukhin
Статистика версий PHP - выпуск 2023.2
Второй отчет в 2023 году об используемых версий PHP
👍5
Ребят, мы тут зарелизили #Phalcon 5.2.3.
По большей части были проведены исправления, особенно большой рефакторинг коснулся работы с json, изменены все методы json_encode/json_decode в пользу классов Phalcon\Support\Helper\Json\Encode и Phalcon\Support\Helper\Json\Decode.
- Класс Phalcon\Di\Injectable был расширен от stdClass для удаления предупреждения об устаревании динамических свойств для PHP 8.2
- Исправлен тип возврата Phalcon\Mvc\View::getVar()
- Исправлен Phalcon\Http\Request::getJsonRawBody для защиты от пустого тела запроса
- Добавлен метод getAdapter() в Phalcon\Mvc\Model\Metadata для получения адаптера внутреннего кеша при необходимости
- Добавлен новый адаптер Phalcon\Storage\Adapter\Weak, реализованный с #WeakReference, для кэширования/извлечения объектов, еще не собранных сборщиком мусора
Кто использует фреймворк в работе можете обновиться https://github.com/phalcon/cphalcon/releases/tag/v5.2.3
По большей части были проведены исправления, особенно большой рефакторинг коснулся работы с json, изменены все методы json_encode/json_decode в пользу классов Phalcon\Support\Helper\Json\Encode и Phalcon\Support\Helper\Json\Decode.
- Класс Phalcon\Di\Injectable был расширен от stdClass для удаления предупреждения об устаревании динамических свойств для PHP 8.2
- Исправлен тип возврата Phalcon\Mvc\View::getVar()
- Исправлен Phalcon\Http\Request::getJsonRawBody для защиты от пустого тела запроса
- Добавлен метод getAdapter() в Phalcon\Mvc\Model\Metadata для получения адаптера внутреннего кеша при необходимости
- Добавлен новый адаптер Phalcon\Storage\Adapter\Weak, реализованный с #WeakReference, для кэширования/извлечения объектов, еще не собранных сборщиком мусора
Кто использует фреймворк в работе можете обновиться https://github.com/phalcon/cphalcon/releases/tag/v5.2.3
GitHub
Release v5.2.3 · phalcon/cphalcon
5.2.3 (2023-07-26)
Fixed
Tried to reproduce the behavior described in #16244 but had no success. #16244
Extended Phalcon\Di\Injectable from stdClass to remove the deprecation warning (dynamic prop...
Fixed
Tried to reproduce the behavior described in #16244 but had no success. #16244
Extended Phalcon\Di\Injectable from stdClass to remove the deprecation warning (dynamic prop...
👍4
Хорошего начала недели, пусть это и будет уже вторник)
Итак, небольшое дополнение к RFC PHP8.3:
Но до PHP 8.3 попытка создать псевдоним для встроенного класса PHP приводила к исключению ValueError:
Начиная с PHP 8.3 можно использовать псевдонимы для встроенных классов и интерфейсов и данный код отработает корректно.
Итак, небольшое дополнение к RFC PHP8.3:
class_alias() теперь поддерживает псевдонимы встроенных классов PHP, как вы помните функция class_alias() создает псевдоним для переданного класса. Класс с псевдонимом ведет себя точно так же, как исходный класс.Но до PHP 8.3 попытка создать псевдоним для встроенного класса PHP приводила к исключению ValueError:
class_alias('stdClass', 'MyClass');
class_alias('Traversable', 'NewTraversableInterface');
ValueError: class_alias(): Argument #1 ($class) must be a user-defined class name, internal class name givenНачиная с PHP 8.3 можно использовать псевдонимы для встроенных классов и интерфейсов и данный код отработает корректно.
👍2
Всех с пятницей!
Наконец, получилось закончить пост, который начал еще до отпуска недели 2 назад)
Надеюсь он будет полезен как новичкам, так и бывалым разработчикам для поднятия #docker контейнеров #Redis кластера.
https://sergeymukhin.com/blog/kak-ispolzovat-redis-cluster-dlia-keshirovaniia
Наконец, получилось закончить пост, который начал еще до отпуска недели 2 назад)
Надеюсь он будет полезен как новичкам, так и бывалым разработчикам для поднятия #docker контейнеров #Redis кластера.
https://sergeymukhin.com/blog/kak-ispolzovat-redis-cluster-dlia-keshirovaniia
Sergeymukhin
Как использовать Redis Cluster для кэширования
В этом посте мы рассмотрим, как мы можем использовать Redis в качестве провайдера кеша для нашего приложения, и по мере дальнейшего изучения мы увидим, как кластер Redis может обеспечить нам большую масштабируемость и надежность
👍4🐳1
С началом недели!
Итак, Новая функция mb_str_pad в PHP 8.3.
В PHP различные строковые функции доступны в двух вариантах: один для байтовых строк, а другой для многобайтовых строк (mb). Однако заметным отсутствием среди многобайтовых строковых функций mbstring является эквивалент str_pad(). В функции str_pad() отсутствует поддержка многобайтовых символов, что вызывает проблемы при работе с языками, использующими многобайтовые кодировки, такие как UTF-8. Этот RFC предлагает добавить в PHP такую функцию, которую мы будем называть mb_str_pad():
Итак, Новая функция mb_str_pad в PHP 8.3.
В PHP различные строковые функции доступны в двух вариантах: один для байтовых строк, а другой для многобайтовых строк (mb). Однако заметным отсутствием среди многобайтовых строковых функций mbstring является эквивалент str_pad(). В функции str_pad() отсутствует поддержка многобайтовых символов, что вызывает проблемы при работе с языками, использующими многобайтовые кодировки, такие как UTF-8. Этот RFC предлагает добавить в PHP такую функцию, которую мы будем называть mb_str_pad():
function mb_str_pad(
string $string,
int $length,
string $pad_string = " ",
int $pad_type = STR_PAD_RIGHT,
?string $encoding = null,
): string {}
var_dump(str_pad('Проверка', 10, '_', STR_PAD_RIGHT)); // Выведет: string(8) "Проверка"
// Тут же посчитается все верно и выведет два конечных __ после слова
var_dump(mb_str_pad('Проверка', 10, '_', STR_PAD_RIGHT));// string(10) "Проверка__"👍5👏2
Впереди вечер пятницы и выходные!
И можно почитать небольшой пост, по решению ошибки ERR_HTTP2_PROTOCOL_ERROR
Если у вас на сайте периодически стали выдаваться ошибки ERR_HTTP2_PROTOCOL_ERROR по запросу ресурса, и погуглить в интернете то многие сайты выдают стандартный набор советов, для простого пользователя, которые никак не касаются разработки.
Выполнить их, конечно можно, и проблема как пользователя возможно будет решена, но если вы разработчик/девопс и после деплоя приложения на сервере у вас возникает данная проблема, то одними такими действиями вы себе не поможете.
В конфиге вашего виртуального хоста nginx скорее всего есть такие директивы (или определены по умолчанию):
Как обычно с картинками и более подробным описанием в новом посте https://sergeymukhin.com/blog/kak-ispravit-osibku-err-http2-protocol-error-v-brauzere
И можно почитать небольшой пост, по решению ошибки ERR_HTTP2_PROTOCOL_ERROR
Если у вас на сайте периодически стали выдаваться ошибки ERR_HTTP2_PROTOCOL_ERROR по запросу ресурса, и погуглить в интернете то многие сайты выдают стандартный набор советов, для простого пользователя, которые никак не касаются разработки.
Выполнить их, конечно можно, и проблема как пользователя возможно будет решена, но если вы разработчик/девопс и после деплоя приложения на сервере у вас возникает данная проблема, то одними такими действиями вы себе не поможете.
В конфиге вашего виртуального хоста nginx скорее всего есть такие директивы (или определены по умолчанию):
fastcgi_buffer_size 4k;Вот как раз нехватка размера буфера и приводит к данной ошибке ERR_HTTP2_PROTOCOL_ERROR в ответ на запрос ресурсов. Следовательно увеличив размера буфера, например x2:
fastcgi_buffers 8 4k;
fastcgi_buffer_size 16k;В принципе все)
fastcgi_buffers 8 16k;
Как обычно с картинками и более подробным описанием в новом посте https://sergeymukhin.com/blog/kak-ispravit-osibku-err-http2-protocol-error-v-brauzere
Sergeymukhin
Как исправить ошибку ERR_HTTP2_PROTOCOL_ERROR в браузере
Если у вас на сайте периодически стали выдаваться ошибки ERR_HTTP2_PROTOCOL_ERROR по запросу ресурса, то милости прошу под кат
👍3🔥1
Всем привет и с 1 сентября!
Хоть и прошло много лет, а в груди все еще ёкает при наступлении первого числа осени!)
Итак, можно сказать уже последние RFC перед релизом
PHP 8.3: PHP CLI Lint (php -l) поддерживает проверку нескольких файлов одновременно
Как вы знали (или узнаете сейчас) PHP в CLI предоставляет функцию Linting, которая проверяет переданное имя файла на наличие синтаксических ошибок. Это полезно для быстрой проверки PHP-файла или фрагмента перед выполнением.
До PHP 8.3 было невозможно выполнить анализ нескольких файлов PHP за один вызов; независимо от количества предоставленных файлов, PHP CLI анализирует только первый файл:
- Если файл был недоступен, код выхода будет 1.
- Если какой-либо из файлов не удалось валидировать, код выхода будет 255.
- Если присутствуют оба условия ошибки, код выхода будет 1.
Помимо передачи нескольких имен файлов по отдельности, также можно использовать шаблон glob для проверки нескольких файлов:
Хоть и прошло много лет, а в груди все еще ёкает при наступлении первого числа осени!)
Итак, можно сказать уже последние RFC перед релизом
PHP 8.3: PHP CLI Lint (php -l) поддерживает проверку нескольких файлов одновременно
Как вы знали (или узнаете сейчас) PHP в CLI предоставляет функцию Linting, которая проверяет переданное имя файла на наличие синтаксических ошибок. Это полезно для быстрой проверки PHP-файла или фрагмента перед выполнением.
До PHP 8.3 было невозможно выполнить анализ нескольких файлов PHP за один вызов; независимо от количества предоставленных файлов, PHP CLI анализирует только первый файл:
php -l somefile.phpНачиная с PHP 8.3, можно передавать несколько файлов PHP, и PHP CLI проверяет их все за один вызов:
// No syntax errors detected in somefile.php
php -l somefile.php otherfile.phpЕсли линтер обнаруживает какие-либо ошибки в любом из предоставленных файлов, он показывает ошибку и переходит к остальной части списка. Если какой-либо из файлов не прошел проверку, он выдает ошибку:
// No syntax errors detected in somefile.php
// No syntax errors detected in otherfile.php
- Если файл был недоступен, код выхода будет 1.
- Если какой-либо из файлов не удалось валидировать, код выхода будет 255.
- Если присутствуют оба условия ошибки, код выхода будет 1.
Помимо передачи нескольких имен файлов по отдельности, также можно использовать шаблон glob для проверки нескольких файлов:
php -l src/*.php src/**/*.php
🎉4👍2❤1
Всем большой привет!
Итак, первое, поздравляю всех с профессиональным праздником Днем Программиста (как вы помните это 256 день)
Второе, сегодня мой день рождения, потому праздную я вдвойне можно сказать 😄 и у меня для вас есть интересная информация напрямую от одного из главных контрибьюторов PHP Дмитрия Стогова о новом JIT-движке, который будет использоваться в следующих версиях PHP.
Как вы знаете JIT появился в PHP 8.0 и представлял из себя компиляцию "на лету" - Just In Time, так же вы вероятно знаете, что PHP является интерпретируемым языком, он не компилирует программы в прямом смысле этого значения, как, например это делают C или Rust.
Чтобы включить JIT нужно было указать несколько параметров конфига php.ini.
Новый JIT движок PHP
Дмитрий Стогов поделился информацией в internal рассылках PHP о новом JIT-движке, который будет использоваться в следующих мажорных версиях PHP. Теперь это настоящий оптимизирующий компилятор с промежуточным представлением, аналогичный серверному компилятору Java HotSpot.
Он создает основу для будущих улучшений и устраняет многие низкоуровневые детали существующего PHP JIT. Вместо поддержки ассемблерного кода для разных процессоров теперь PHP генерирует один IR и передает его независимому от PHP JIT-движку.
Новая реализация JIT основана на IR-Lightweight JIT Compilation Framework и в отличии от старого JIT-подхода в PHP 8.*, который генерирует собственный код непосредственно из байт-кода PHP, эта реализация генерирует промежуточное представление (IR) и делегирует все задачи более низкого уровня в IR Framework. IR для JIT похож на абстрактное синтаксическое дерево (AST) для компилятора.
По сравнению с классическими оптимизирующими компиляторами (такими как GCC и LLVM), IR Framework использует очень короткий конвейер оптимизации. В сочетании с компактным IR-представлением это делает его чрезвычайно быстрым и позволяет генерировать довольно хороший машинный код за разумное время.
Более подробно и с примерами в новом посте https://sergeymukhin.com/blog/novyi-jit-dvizok-dlia-php-84-i-php-9
Итак, первое, поздравляю всех с профессиональным праздником Днем Программиста (как вы помните это 256 день)
Второе, сегодня мой день рождения, потому праздную я вдвойне можно сказать 😄 и у меня для вас есть интересная информация напрямую от одного из главных контрибьюторов PHP Дмитрия Стогова о новом JIT-движке, который будет использоваться в следующих версиях PHP.
Как вы знаете JIT появился в PHP 8.0 и представлял из себя компиляцию "на лету" - Just In Time, так же вы вероятно знаете, что PHP является интерпретируемым языком, он не компилирует программы в прямом смысле этого значения, как, например это делают C или Rust.
Чтобы включить JIT нужно было указать несколько параметров конфига php.ini.
Новый JIT движок PHP
Дмитрий Стогов поделился информацией в internal рассылках PHP о новом JIT-движке, который будет использоваться в следующих мажорных версиях PHP. Теперь это настоящий оптимизирующий компилятор с промежуточным представлением, аналогичный серверному компилятору Java HotSpot.
Он создает основу для будущих улучшений и устраняет многие низкоуровневые детали существующего PHP JIT. Вместо поддержки ассемблерного кода для разных процессоров теперь PHP генерирует один IR и передает его независимому от PHP JIT-движку.
Новая реализация JIT основана на IR-Lightweight JIT Compilation Framework и в отличии от старого JIT-подхода в PHP 8.*, который генерирует собственный код непосредственно из байт-кода PHP, эта реализация генерирует промежуточное представление (IR) и делегирует все задачи более низкого уровня в IR Framework. IR для JIT похож на абстрактное синтаксическое дерево (AST) для компилятора.
По сравнению с классическими оптимизирующими компиляторами (такими как GCC и LLVM), IR Framework использует очень короткий конвейер оптимизации. В сочетании с компактным IR-представлением это делает его чрезвычайно быстрым и позволяет генерировать довольно хороший машинный код за разумное время.
Более подробно и с примерами в новом посте https://sergeymukhin.com/blog/novyi-jit-dvizok-dlia-php-84-i-php-9
🎉7👍2
Ребят, привет!
Сегодня четверг и пара интересных новостей:
- Выпущен второй релиз кандидат для PHP 8.3
Как вы помните первый релиз кандидат PHP 8.3 был выпущен 31 августа, теперь же и второй кандидат доступен для тестирования, осталось еще 4 кандидата для финального выпуска.
Обратите внимание, что версии-кандидаты PHP 8.3 предназначены только для тестирования будущей версии PHP и не готовы для производственных систем.
Сегодня четверг и пара интересных новостей:
- Выпущен второй релиз кандидат для PHP 8.3
Как вы помните первый релиз кандидат PHP 8.3 был выпущен 31 августа, теперь же и второй кандидат доступен для тестирования, осталось еще 4 кандидата для финального выпуска.
Обратите внимание, что версии-кандидаты PHP 8.3 предназначены только для тестирования будущей версии PHP и не готовы для производственных систем.
31 Августа RC 1- Стали подготавливать список устаревших функции для PHP 8.4
14 Сентября RC 2
28 Сентября RC 3
12 Октября RC 4
26 Октября RC 5
9 Ноября RC 6
23 Ноября GA
👍4🐳1
Доброе утро, бодро работаем в пятницу и все те же пара новостей!
- Выпущен третий релиз кандидат для PHP 8.3 от
И к новостям о следующей версии PHP 8.4:
Вывод phpinfo() в PHP 8.4 будеть показывать размер целого числа, поддерживаемый текущей настройкой PHP в битах, также включается в выходные данные PHP CLI. Как вы помните, ранее все предыдущие версии (начиная с PHP 5.0.5) поддерживают константу PHP_INT_SIZE для определения размера целого числа.
- Выпущен третий релиз кандидат для PHP 8.3 от
28 Сентября RC 3Выше в посте можно увидеть график выхода всех релизов.
И к новостям о следующей версии PHP 8.4:
Вывод phpinfo() в PHP 8.4 будеть показывать размер целого числа, поддерживаемый текущей настройкой PHP в битах, также включается в выходные данные PHP CLI. Как вы помните, ранее все предыдущие версии (начиная с PHP 5.0.5) поддерживают константу PHP_INT_SIZE для определения размера целого числа.
❤3👍2
Всем отличной пятницы, друзья!
Я тут немного расслабился в отпуске и пока не могу от него еще отойти, но давайте быстро наверстаем упущенное по текущим новостям:
1. Во-первых 12 и 26 Октября прошли 4 и 5 Релиз Кандидаты PHP 8.3
2. Как вы знаете интернет (те же сервисы Гугла и клиенты Cloudflare) потрясла HTTP/2 атака Rapid Reset (быстрого сброса)
При определенных условиях эту уязвимость можно использовать для выполнения атаки типа "отказ в обслуживании" в nginx или других продуктах, реализующих серверную часть спецификации HTTP/2. Чтобы защитить ваши системы от этой атаки, рекомендуется немедленно обновить конфигурацию NGINX или другого веб-сервера.
3. В PHP 8.4 стали появляться первые RFC, направленные на изменение текущего функционала, в частности
Алгоритмическая сложность хеширование паролей Bcrypt по умолчанию изменена с 10 на 12, чтобы сделать пароли более устойчивыми и сложными.
Это изменение по существу эквивалентно:
Я тут немного расслабился в отпуске и пока не могу от него еще отойти, но давайте быстро наверстаем упущенное по текущим новостям:
1. Во-первых 12 и 26 Октября прошли 4 и 5 Релиз Кандидаты PHP 8.3
2. Как вы знаете интернет (те же сервисы Гугла и клиенты Cloudflare) потрясла HTTP/2 атака Rapid Reset (быстрого сброса)
При определенных условиях эту уязвимость можно использовать для выполнения атаки типа "отказ в обслуживании" в nginx или других продуктах, реализующих серверную часть спецификации HTTP/2. Чтобы защитить ваши системы от этой атаки, рекомендуется немедленно обновить конфигурацию NGINX или другого веб-сервера.
3. В PHP 8.4 стали появляться первые RFC, направленные на изменение текущего функционала, в частности
Алгоритмическая сложность хеширование паролей Bcrypt по умолчанию изменена с 10 на 12, чтобы сделать пароли более устойчивыми и сложными.
Это изменение по существу эквивалентно:
password_hash("some password", PASSWORD_BCRYPT, ["cost" => 12]);👍5❤1
Доброе утро!
За окном пятница, впереди выходные, давайте немного пробежимся по новостям:
1. 9 ноября вышел предпоследний релиз кандидат PHP 8.3 RC6
а это означает что следующий выпуск будет финальный, и по плану он 23 ноября, что уже довольно скоро)
2. Я продолжаю цикл статей о следующей версии HTTP/3 и здесь вы можете почитать о том, как подключить 3 версию http на Nginx
пример хоста nginx для подключения http3:
За окном пятница, впереди выходные, давайте немного пробежимся по новостям:
1. 9 ноября вышел предпоследний релиз кандидат PHP 8.3 RC6
а это означает что следующий выпуск будет финальный, и по плану он 23 ноября, что уже довольно скоро)
2. Я продолжаю цикл статей о следующей версии HTTP/3 и здесь вы можете почитать о том, как подключить 3 версию http на Nginx
пример хоста nginx для подключения http3:
server
{
# для лучшей совместимости рекомендуется использовать один порт для quic и https
# указываем протокол quic и параметр reuseport для правильной работы с несколькими рабочими процессами
listen 443 quic reuseport;
listen 443 ssl;
# включаем поддержку http2
http2 on;
# включаем поддержку http3
http3 on;
# разрешаем GSO
quic_gso on;
# разрешаем проверку адреса
quic_retry on;
# Для работы QUIC требуется версия протокола TLSv1.3.
ssl_protocols TLSv1.2 TLSv1.3;
ssl_certificate /path_certs/fullchain.pem;
ssl_certificate_key path_certs/privkey.pem;
# для перенаправления браузеров в quic-порт
add_header Alt-Svc 'h3=":443";max=86400';
...
}
👍5🔥2
Релиз PHP 8.3
Ну вот и настало 23 ноября 2023 года, а с ним релиз следующей версии PHP 8.3.
Были небольшие проблемы с выпуском в планируемый срок, но официально он все же состоялся.
В PHP 8.3 есть улучшения классов только для чтения, новая функция json_validate(), дополнения к недавно добавленному классу Randomizer, обнаружение переполнения стека и многое другое.
Как установить можно почитать в последнем посте Как установить PHP 8.3 в Ubuntu/Debian.
Для Windows бинарники как обычно можно скачать https://windows.php.net/download/
Ну вот и настало 23 ноября 2023 года, а с ним релиз следующей версии PHP 8.3.
Были небольшие проблемы с выпуском в планируемый срок, но официально он все же состоялся.
В PHP 8.3 есть улучшения классов только для чтения, новая функция json_validate(), дополнения к недавно добавленному классу Randomizer, обнаружение переполнения стека и многое другое.
Как установить можно почитать в последнем посте Как установить PHP 8.3 в Ubuntu/Debian.
Для Windows бинарники как обычно можно скачать https://windows.php.net/download/
👍5🔥3
Forwarded from Пых (Валентин Удальцов)
Затусим в конце года, как обычно! Обсудим PHP 8.3, заслушаем доклады, запустим опрос сообщества и наверняка похоливарим на разные темы.
Что будет:
• Евгений Прохоров прямо на наших глазах ускорит PHP,
• Кирилл Несмеянов докажет, что никто, кроме него, не знает PHP,
• шеф-повар Александр Макаров приготовит Composer под новым соусом,
• Валентин Удальцов (это я) покажу вам PHP 8.3 во всей красе.
Проведёт мероприятие Михаил Каморин, а подсказывать текст из-за кулис будет наш бессменный режиссёр и продюсер — Алиса Круглова!
Залетайте в трансляцию на PHP Point, будет весело, как мне сейчас! Всех ждём в 12 по Москве.
https://youtu.be/JyxGieyBj3k
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉4
Ребята, привет, всех с наступающим Новым Годом!
Я тут немного пропадал, но в любом случае, у меня есть для вас новости, итак что у нас нового в PHP 8.4:
1. В PHP 8.4 появится поддержка AEGIS-128L и AEGIS256 в Sodium
AEGIS - это семейство алгоритмов шифрования с проверкой подлинности на основе AES, которые работают быстрее, чем AES-GCM. Расширение Sodium в PHP 8.4 поддерживает алгоритмы шифрования AEGIS-128L и AEGIS256, если расширение Sodium скомпилировано с версией libsodium 1.0.19 или новее. Расширение Sodium в PHP 8.4 добавляет шесть новых функций и четыре новые константы PHP для AEGIS-128L и AEGIS-256AEAD.
2. Новый метод DateTime createFromTimestamp
До PHP 8.4, чтобы создать экземпляр DateTime или DateTimeImmutable из временной метки UNIX, его нужно было создать с помощью createFromFormat:
С PHP 8.4 классы DateTime и DateTimeImmutable в PHP 8.4 имеют новый метод createFromTimeStamp, позволяющий легко создать экземпляр из заданной временной метки UNIX в виде целого числа или значения с плавающей запятой.
Далее, если вы разработчик своих пакетов PHP, то возможно вам будет полезна информацию о предложении Composer установки девтулсов в require-dev в новом посте
https://sergeymukhin.com/blog/composer-zastavit-ustanovku-paketa-require-dev
Ну и напоследок, спасибо что вы были со мной в этом году, и я хочу подарить вот этого синего красавца одному из подписчиков (только без колпака, это от другой игрушки :) ), для этого, достаточно будет написать к этому посту любой комментарий, после нового года я запущу рандомайзер, он выберет комментарий и я отправлю слона счастливчику.
Всем удачи и хорошего Нового Года!!!
Я тут немного пропадал, но в любом случае, у меня есть для вас новости, итак что у нас нового в PHP 8.4:
1. В PHP 8.4 появится поддержка AEGIS-128L и AEGIS256 в Sodium
AEGIS - это семейство алгоритмов шифрования с проверкой подлинности на основе AES, которые работают быстрее, чем AES-GCM. Расширение Sodium в PHP 8.4 поддерживает алгоритмы шифрования AEGIS-128L и AEGIS256, если расширение Sodium скомпилировано с версией libsodium 1.0.19 или новее. Расширение Sodium в PHP 8.4 добавляет шесть новых функций и четыре новые константы PHP для AEGIS-128L и AEGIS-256AEAD.
2. Новый метод DateTime createFromTimestamp
До PHP 8.4, чтобы создать экземпляр DateTime или DateTimeImmutable из временной метки UNIX, его нужно было создать с помощью createFromFormat:
$dt = DateTimeImmutable::createFromFormat('U', (string) 1703485481);
$dt->format('Y-m-d'); // "2023-12-25"С PHP 8.4 классы DateTime и DateTimeImmutable в PHP 8.4 имеют новый метод createFromTimeStamp, позволяющий легко создать экземпляр из заданной временной метки UNIX в виде целого числа или значения с плавающей запятой.
$dt = DateTimeImmutable::createFromTimeStamp(1703485481);
$dt->format('Y-m-d'); //"2023-12-25"
Далее, если вы разработчик своих пакетов PHP, то возможно вам будет полезна информацию о предложении Composer установки девтулсов в require-dev в новом посте
https://sergeymukhin.com/blog/composer-zastavit-ustanovku-paketa-require-dev
Ну и напоследок, спасибо что вы были со мной в этом году, и я хочу подарить вот этого синего красавца одному из подписчиков (только без колпака, это от другой игрушки :) ), для этого, достаточно будет написать к этому посту любой комментарий, после нового года я запущу рандомайзер, он выберет комментарий и я отправлю слона счастливчику.
Всем удачи и хорошего Нового Года!!!
🎄12👍4❤3
🎄С НОВЫМ 2024 ГОДОМ!🎄
Итак, новый год настал, но расслабляться не будем, ну разве что чуть-чуть)
Как заметили в комментариях к предыдущему посту в дайджесте PHP 8.4 я не упомянул про новый движок JIT, про него есть более подробный пост выше.
А вот в продолжении к нему, недавно принятый RFC, про cпособ отключения/включения JIT по умолчанию:
До PHP 8.4 JIT был как был и включен и отключен по умолчанию, используя значение по умолчанию
В этом RFC предлагается изменить эти значения по умолчанию на выключенный jit и размер буфера на 64 мегабайт:
Еще одна интересная новость, Валентин Удальцов автор канала Пых опубликовал RFC в котором пасрер PHP может пренебрегать скобками при обращении к объектам, созданным через
можно будет писать:
В данный момент это невозможно сделать, т.к. парсер PHP выдаст ошибку синтаксиса. Будем следить за развитием этого RFC.
Ну и как обещал разыграл слона и он уезжает к @Drummi, поздравляю! @Drummi напишите мне в личку адрес, куда я отправлю слона.
Надеюсь 2024 год будет насыщен на новые интересные и полезные RFC PHP.
Итак, новый год настал, но расслабляться не будем, ну разве что чуть-чуть)
Как заметили в комментариях к предыдущему посту в дайджесте PHP 8.4 я не упомянул про новый движок JIT, про него есть более подробный пост выше.
А вот в продолжении к нему, недавно принятый RFC, про cпособ отключения/включения JIT по умолчанию:
До PHP 8.4 JIT был как был и включен и отключен по умолчанию, используя значение по умолчанию
opcache.jit_buffer_size=0 вместо opcache.jit=disable. Это фактически отключает JIT не потому, что jit=disable, а потому что размер буфера установлен равный 0.В этом RFC предлагается изменить эти значения по умолчанию на выключенный jit и размер буфера на 64 мегабайт:
opcache.jit=disable
opcache.jit_buffer_size=64m
Еще одна интересная новость, Валентин Удальцов автор канала Пых опубликовал RFC в котором пасрер PHP может пренебрегать скобками при обращении к объектам, созданным через
new, т.е. вместо(new Class())->method()
можно будет писать:
new Class()->method()
В данный момент это невозможно сделать, т.к. парсер PHP выдаст ошибку синтаксиса. Будем следить за развитием этого RFC.
Ну и как обещал разыграл слона и он уезжает к @Drummi, поздравляю! @Drummi напишите мне в личку адрес, куда я отправлю слона.
Надеюсь 2024 год будет насыщен на новые интересные и полезные RFC PHP.
Telegram
The Fly's PHP - Делаем из Мухи Слона
Всем большой привет!
Итак, первое, поздравляю всех с профессиональным праздником Днем Программиста (как вы помните это 256 день)
Второе, сегодня мой день рождения, потому праздную я вдвойне можно сказать 😄 и у меня для вас есть интересная информация напрямую…
Итак, первое, поздравляю всех с профессиональным праздником Днем Программиста (как вы помните это 256 день)
Второе, сегодня мой день рождения, потому праздную я вдвойне можно сказать 😄 и у меня для вас есть интересная информация напрямую…
🎄7👍3