Make code, not war πŸ•Š

14 Followers
5 Following
77 Posts

Выпуск языка программирования Python 3.11

ПослС Π³ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ выпуск языка программирования Python 3.11. Новая Π²Π΅Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΡ€Π° Π»Π΅Ρ‚, послС Ρ‡Π΅Π³ΠΎ Π΅Ρ‰Ρ‘ Ρ‚Ρ€ΠΈ с ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΎΠΉ Π³ΠΎΠ΄Π° для Π½Π΅Ρ‘ Π±ΡƒΠ΄ΡƒΡ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ исправлСния с устранСниСм уязвимостСй.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ Π°Π»ΡŒΡ„Π°-тСстированиС Π²Π΅Ρ‚ΠΊΠΈ Python 3.12 (Π² соотвСтствии с Π½ΠΎΠ²Ρ‹ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ начинаСтся Π·Π° ΠΏΡΡ‚ΡŒ мСсяцСв Π΄ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΊ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° достигаСт стадии Π°Π»ΡŒΡ„Π°-тСстирования). Π’Π΅Ρ‚ΠΊΠ° Python 3.12 Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° стадии Π°Π»ΡŒΡ„Π°-выпусков Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ сСми мСсяцСв, Π²ΠΎ врСмя ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹Π΅ возмоТности ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ исправлСниС ошибок. ПослС этого Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Ρ‘Ρ… мСсяцСв Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ тСстированиС Π±Π΅Ρ‚Π°-вСрсий, Π²ΠΎ врСмя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΈ всё Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ошибок. ПослСдниС Π΄Π²Π° мСсяца ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ Π²Π΅Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° стадии ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π° Π² Ρ€Π΅Π»ΠΈΠ·Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ стабилизация.

Π‘Ρ€Π΅Π΄ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π² Python 3.11 Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²:

  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ измСнСния, связанныС с ускорСниСм ΠΈ inline-Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ быстрых ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (x+x, x*x, x-x, a[i], a[i] = z, f(arg) C(arg), o.method(), o.attr = z, *seq), Π° Ρ‚Π°ΠΊΠΆΠ΅ оптимизациями, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ Cinder ΠΈ HotPy. Π’ зависимости ΠΎΡ‚ Π²ΠΈΠ΄Π° Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ отмСчаСтся прирост скорости выполнСния ΠΊΠΎΠ΄Π° Π½Π° 10-60%. Π’ срСднСм ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ тСстового Π½Π°Π±ΠΎΡ€Π° pyperformance ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»Π°ΡΡŒ Π½Π° 25%.

    ΠŸΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя запуска ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π½Π° 10-15%. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ статичСски Ρ€Π°Π·Π°ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ стадии Π΄Π΅ΠΌΠ°Ρ€ΡˆΠ°Π»ΠΈΠ½Π³Π° ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΈΠ· кэша Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° ΠΈ прСобразования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΊΠΎΠ΄ΠΎΠΌ для размСщСния Π² динамичСской памяти.

  • ΠŸΡ€ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ трассировки Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² диагностичСских сообщСниях обСспСчСн Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка (Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Π»Π°ΡΡŒ лишь строка Π±Π΅Π· Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, какая ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‡Π°ΡΡ‚ΡŒ строки стала ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ошибки). Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ трассировкС Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· API ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для сопоставлСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… инструкций Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ Π² исходном ΠΊΠΎΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ codeobject.co_positions() ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ C API PyCode_Addr2Location(). ИзмСнСниС сущСствСнно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, связанных с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ словарСй, мноТСствСнными Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ слоТными арифмСтичСскими выраТСниями. Traceback (most recent call last): File "calculation.py", line 54, in result = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: division by zero
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π³Ρ€ΡƒΠΏΠΏ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ сразу нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΈΡ… совмСстного Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ExceptionGroup ΠΈ BaseExceptionGroup, Π° для выдСлСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ "except*".
  • Π’ класс BaseException Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ add_note(), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ тСкстовоС ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ Π²ΠΎ врСмя Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Self, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ класс. Self ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для аннотирования ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΡ… экзСмпляр своСго класса, Π±ΠΎΠ»Π΅Π΅ простым ΠΏΡƒΡ‚Ρ‘ΠΌ, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании TypeVar. class MyLock: def __enter__(self) -> Self: self.lock() return self
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ LiteralString, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹, совмСстимыС с Ρ‚ΠΈΠΏΠΎΠΌ LiteralString (Ρ‚.Π΅. Π³ΠΎΠ»Ρ‹Π΅ строки ΠΈ строки с Ρ‚ΠΈΠΏΠΎΠΌ LiteralString, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ Π½Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ строки с Ρ‚ΠΈΠΏΠΎΠΌ str). Π’ΠΈΠΏ LiteralString ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ограничСния ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ функциям строковых Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Π°Ρ подстановка частСй строк Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ уязвимостям, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ строк для SQL-запросов ΠΈΠ»ΠΈ shell-ΠΊΠΎΠΌΠ°Π½Π΄. def run_query(sql: LiteralString) -> ... ... def caller( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> None: run_query("SELECT * FROM students") # ok run_query(literal_string) # ok run_query("SELECT * FROM " + literal_string) # ok run_query(arbitrary_string) # Ошибка run_query( # Ошибка f"SELECT * FROM students WHERE name = {arbitrary_string}" )
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ‚ΠΈΠΏ TypeVarTuple, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ TypeVar ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π½Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ, Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число Ρ‚ΠΈΠΏΠΎΠ².
  • Π’ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ tomllib с функциями для Ρ€Π°Π·Π±ΠΎΡ€Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° TOML.
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Ρ‚ΠΈΠΏΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… словарСй (TypedDict) ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ Required ΠΈ NotRequired для опрСдСлСния ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ поля ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ для заполнСния, Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ total Π½Π΅ выставлСн Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False). class Movie(TypedDict): title: str year: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars"} # OK (ΠΏΠΎΠ»Π΅ year Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅) m3: Movie = {"year": 2022} # Ошибка, Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ title)
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ asyncio Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ класс TaskGroup с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ асинхронного контСкстного ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π·Π°Π΄Π°Ρ‡. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ Π² Π³Ρ€ΡƒΠΏΠΏΡƒ осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° create_task(). async def main(): async with asyncio.TaskGroup() as tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) print("Both tasks have completed now.")
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ классов, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ @dataclass_transform, ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ систСма ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ статичСских Ρ‚ΠΈΠΏΠΎΠ² Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ использовании Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° @dataclasses.dataclass. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ класс CustomerModel ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с классом с Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ @dataclasses.dataclass, Ρ‚.Π΅. ΠΊΠ°ΠΊ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ id ΠΈ name. @dataclass_transform() class ModelBase: ... class CustomerModel(ModelBase): id: int name: str
  • Π’ рСгулярных выраТСниях Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ((?›…)) ΠΈ Ρ€Π΅Π²Π½ΠΈΠ²Ρ‹Ρ… (possessive) ΠΊΠ²Π°Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² (*+, ++, ?+, {m,n}+).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки "-P" ΠΈ пСрСмСнная окруТСния PYTHONSAFEPATH для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ автоматичСского прикрСплСния ΠΊ sys.path ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ нСбСзопасных Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ.
  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° py.exe для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Windows, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° синтаксиса "-V:β€Ήcompanyβ€Ί/β€Ήtagβ€Ί" Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ "-β€Ήmajorβ€Ί.β€Ήminorβ€Ί".
  • МногиС макросы Π² C API ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΈΠ»ΠΈ статичСскиС inline-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • ΠžΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ Π² выпускС Python 3.13 ΠΌΠΎΠ΄ΡƒΠ»ΠΈ uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev ΠΈ sunau. Π£Π΄Π°Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ PyUnicode_Encode*.


Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://www.opennet.ru/opennews/art.shtml?num=57971
Выпуск языка программирования Python 3.11

ПослС Π³ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ выпуск языка программирования Python 3.11 . Новая Π²Π΅Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΡ€Π° Π»Π΅Ρ‚, послС Ρ‡Π΅Π³ΠΎ Π΅Ρ‰Ρ‘ Ρ‚Ρ€ΠΈ с ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΎΠΉ Π³ΠΎΠ΄Π° для Π½Π΅Ρ‘ Π±ΡƒΠ΄ΡƒΡ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ исправлСния с устранСниСм уязвимостСй

Π Π΅Π»ΠΈΠ· Π‘Π£Π‘Π” PostgreSQL 15

ПослС Π³ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° новая ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ Π²Π΅Ρ‚ΠΊΠ° Π‘Π£Π‘Π” PostgreSQL 15. ОбновлСния для Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ пяти Π»Π΅Ρ‚ Π΄ΠΎ ноября 2027 Π³ΠΎΠ΄Π°.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° SQL-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "MERGE", Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅ΠΉ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ "INSERT ... ON CONFLICT". MERGE позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ условныС SQL-выраТСния, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ INSERT, UPDATE ΠΈ DELETE. НапримСр, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ MERGE ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ слияниС Π΄Π²ΡƒΡ… Ρ‚Π°Π±Π»ΠΈΡ†, вставляя Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ записи ΠΈ обновляя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅. MERGE INTO customer_account ca USING recent_transactions t ON t.customer_id = ca.customer_id WHEN MATCHED THEN UPDATE SET balance = balance + transaction_value WHEN NOT MATCHED THEN INSERT (customer_id, balance) VALUES (t.customer_id, t.transaction_value);
  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти ΠΈ Π½Π° дискС. Π’ зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² тСстах Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ скорости сотрировки ΠΎΡ‚ 25% Π΄ΠΎ 400%.
  • УскорСна Ρ€Π°Π±ΠΎΡ‚Π° ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с использованиСм row_number(), rank(), dense_rank() ΠΈ count().
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния запросов c Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ "SELECT DISTINCT".
  • Π’ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† Foreign Data Wrapper (postgres_fdw) Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° асинхронных ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π½Π΅Π΅ возмоТности асинхронной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов ΠΊ внСшним сСрвСрам.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ примСнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² LZ4 ΠΈ Zstandard (zstd) для сТатия WAL-Π»ΠΎΠ³ΠΎΠ² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ… позволяСт ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ дисковоС пространство. Для сокращСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ восстановлСния послС сбоя Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ извлСчСния страниц, Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π² WAL-Π»ΠΎΠ³Π΅.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ pg_basebackup Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сТатия Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΌΠΈ копиями Π½Π° сторонС сСрвСра, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ gzip, LZ4 ΠΈΠ»ΠΈ zstd. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования собствСнных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для архивирования, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· нСобходимости запуска shell-ΠΊΠΎΠΌΠ°Π½Π΄.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° сСрия Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строк с использованиСм рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ: regexp_count(), regexp_instr(), regexp_like() ΠΈ regexp_substr().
  • Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ range_agg() Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ агрСгирования ΠΌΠ½ΠΎΠ³ΠΎΠ΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ("multirange").
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ security_invoker, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прСдставлСния, выполняСмыС с ΠΏΡ€Π°Π²Π°ΠΌΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° Π½Π΅ создатСля прСдставлСния.
  • Для логичСской Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ строк ΠΈ задания списков столбцов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π½Π° сторонС отправитСля Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ подмноТСство Π΄Π°Π½Π½Ρ‹Ρ… для Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пропуска ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈ автоматичСского ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ подписки ΠΏΡ€ΠΈ выявлСнии ошибки. ΠŸΡ€ΠΈ логичСской Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ использованиС Π΄Π²ΡƒΡ…Ρ„Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² (2PC).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π»ΠΎΠ³ΠΎΠ² - jsonlog, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² структурированнов Π²ΠΈΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ JSON.
  • Администратору прСдоставлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ дСлСгирования ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΠΉ для измСнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сСрвСра PostgreSQL.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ psql Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° поиска ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ настройках ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "\dconfig".
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ использованиС раздСляСмой памяти для накоплСния статистики ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ сСрвСра, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ процСсса сбора статистики ΠΈ пСриодичСского сброса состояния Π½Π° диск.
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ свойства Π»ΠΎΠΊΠ°Π»ΠΈ "ICU Collation", ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° сортировки ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ сопоставлСния с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ смысла символов.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ встроСнноС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ pg_walinspect, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΈΠ½ΡΠΏΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»ΠΎΠ² с WAL-Π»ΠΎΠ³Π°ΠΌΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ SQL-запросов.
  • Для схСмы public Ρƒ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° Π‘Π”, осущСствлён ΠΎΡ‚Π·Ρ‹Π² ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΠΉ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ CREATE.
  • Π’ PL/Python ΡƒΠ΄Π°Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Python 2. Π£Π΄Π°Π»Ρ‘Π½ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ ΡΠΊΡΠΊΠ»ΡŽΠ·ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования ("exclusive backup").

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: Π‘ 19:00 Π΄ΠΎ 20:00 (MSK) состоится Π²Π΅Π±ΠΈΠ½Π°Ρ€-обсуТдСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½ΠΎΠ²ΠΎΠΉ вСрсии с Павлом Π›ΡƒΠ·Π°Π½ΠΎΠ²Ρ‹ΠΌ (Postgres Professional). Для Ρ‚Π΅Ρ…, Ρƒ ΠΊΠΎΠ³ΠΎ Π½Π΅ получится ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ эфиру, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° запись июньского Π΄ΠΎΠΊΠ»Π°Π΄Π° Павла "PostgreSQL 15: MERGE ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ" Π½Π° PGConf.Russia.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://www.opennet.ru/opennews/art.shtml?num=57914

Π Π΅Π»ΠΈΠ· Π‘Π£Π‘Π” PostgreSQL 15

ПослС Π³ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° новая ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ Π²Π΅Ρ‚ΠΊΠ° Π‘Π£Π‘Π” PostgreSQL 15 . ОбновлСния для Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ пяти Π»Π΅Ρ‚ Π΄ΠΎ ноября 2027 Π³ΠΎΠ΄Π°

ДруТСскоС Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅: Ссли Ρƒ вас Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ #PostgreSQL, Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ кроссплатформСнный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ мСТпроцСсного взаимодСйствия - NOTIFY.

#psql #ipc

Press any key to

assets/spaCy-cheat-sheet.pdf at main Β· explosion/assets

πŸ’₯ Explosion Assets. Contribute to explosion/assets development by creating an account on GitHub.

GitHub

Π›ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Π°Ρ ситуация с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ tarfile Π² #python: Π’ Python ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ нашли Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ 15 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ.

Π’ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°?

Π£ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ TarFile.extractall ΠΈ TarFile.extract с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ path='.'. Но сам ΠΏΠΎ сСбС tar ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΈΠ±ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌΠΈ (Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с "/"), Π»ΠΈΠ±ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ (ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ".."). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы ΠΈΠ»ΠΈ пСрСзаписаны Π²Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ path Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

Если ΠΏΠΎΠΉΡ‚ΠΈ Π² Ρ‚ΠΈΠΊΠ΅Ρ‚ Π½Π° github, Ρ‚ΠΎ Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·ΠΎΡ‰Ρ€Π΅Π½Π½Ρ‹Π΅ способы эксплуатации с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ tar.

Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π»ΠΈ это ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ?

Если Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ со стороны Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² tarfile - Π½Π΅Ρ‚. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€ΠΎΠ²Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅Π΅ Π²Π»ΠΎΠΆΠΈΠ»ΠΈ Π°Π²Ρ‚ΠΎΡ€Ρ‹.

Если Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ со стороны Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ популярного языка программирования с Π½ΠΈΠ·ΠΊΠΈΠΌ ΠΏΠΎΡ€ΠΎΠ³ΠΎΠΌ вхоТдСния - Π΄Π°. Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ это опасная функция Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. О Ρ‡Π΅ΠΌ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌ ΠΏΠΎ красному написано Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Но Π²Ρ‹ ΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Π±Ρ‹Π²Π°Π΅Ρ‚? Один Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» Π΄ΠΎΠΊΡƒ, сдСлал ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ достовСрности Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ заюзал Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎΡ‡Π½ΠΎ зная, Ρ‡Ρ‚ΠΎ Π² Π΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅Ρ‚. А Π΅Π³ΠΎ ΠΊΠΎΠ»Π»Π΅Π³Π° ΡƒΠ²ΠΈΠ΄Π΅Π» этот ΠΊΠΎΠ΄ ΠΈ Π²Ρ‹Π·Π²Π°Π» Π΅Π³ΠΎ ΠΆΠ΅ для Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΠΈΠ· нСдостовСрного источника. И Π²ΠΎΡ‚ ΠΎΠ½Π° Π΄Ρ‹Ρ€Π° Π² бСзопасности Π½Π° Ρ€ΠΎΠ²Π½ΠΎΠΌ мСстС. ΠšΡ‚ΠΎ Ρ‚ΡƒΡ‚ Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚: ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ скопировал ΠΊΠΎΠ΄ ΠΈ Π½Π΅ выяснил Π΄Π΅Ρ‚Π°Π»ΠΈ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Ρ„ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²ΠΎ ΠΊΡ‚ΠΎ Ρ‚ΡƒΡ‚ Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° всё Ρ€Π°Π²Π½ΠΎ Π΅ΡΡ‚ΡŒ. А Ссли спроситС ΠΌΠΎΠ΅ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΡ… опасных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΏΠ°ΠΉΡ‚ΠΎΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ. Π›ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈ Π²Ρ‹ΠΊΠΈΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Press any key to

#OpenBSD Π² качСствС BIOS’а ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для #vmm ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ /etc/firmware/vmm-bios.

Будя ΠΏΠΎ всСму это собранный SeaBIOS:

SeaBIOS is an open source implementation of a 16bit X86 BIOS.

Π‘ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ Π²Π½ΡƒΡ‚Ρ€ΡŒ sgabios ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ:

The Google Serial Graphics Adapter BIOS or SGABIOS provides a means for legacy x86 software to communicate with an attached serial console as if a video card were attached.

#seabios #sgabios

Press any key to

Набросал для сСбя скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ β€œΠ±ΠΎΠ»ΡŒΡˆΠΎΠ΅ ΠΈ красноС” i3-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ Π½ΠΈΠ·ΠΊΠΎΠΌ зарядС Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ: https://tildegit.org/continue/openbsd_i3_battery/src/branch/main/openbsd_i3_battery.sh

Вдохновлялся скриптом i3-battery-popup, Π½ΠΎ написал свой ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ для OpenBSD, Π·Π°Π±Ρ€Π°Π² ΠΎΡ‚ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ Ρ„Π°ΠΉΠ» для увСдомлСния.

Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

./openbsd_i3_battery.sh -l 20 -t 300 -s ./openbsd_i3_battery.wav

Π“Π΄Π΅:

  • -l 20 - ΠΏΠΎΡ€ΠΎΠ³ срабатывания Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… ΠΎΡΡ‚Π°Π²ΡˆΠ΅Π³ΠΎΡΡ заряда Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ (ΠΌΠ΅Π½Π΅Π΅ этого значСния Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ увСдомлСния)
  • -t 300 - частота ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ (ΠΈ частота отобраТСния ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ)
  • -s ./openbsd_i3_battery.wav - ΠΏΡƒΡ‚ΡŒ ΠΊ Π°ΡƒΠ΄ΠΈΠΎ-Ρ„Π°ΠΉΠ»Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ воспроизводится ΠΏΡ€ΠΈ Π½ΠΈΠ·ΠΊΠΎΠΌ зарядС Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ (Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· Π·Π²ΡƒΠΊΠ°)

#openbsd #i3 #i3wm

openbsd_i3_battery

Π£Π²Π΅Π΄ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎ Π½ΠΈΠ·ΠΊΠΎΠΌ зарядС Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ. ΠžΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅: OpenBSD, i3

tildegit

A brainf*ck (esoteric programming language) interpreter written in sed + m4 macros  

https://github.com/faithanalog/sedfuck

GitHub - faithanalog/sedfuck: brainfuck interpreter written in sed

brainfuck interpreter written in sed. Contribute to faithanalog/sedfuck development by creating an account on GitHub.

GitHub

Google Online Security Blog: Use-after-freedom: MiraclePtr

ΠžΡ…, Π½Π΅ люблю Π±Ρ€ΡŽΠ·ΠΆΠ°Ρ‚ΡŒ, но… ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΄ΠΎ:

β€œIt’s hard, if not impossible, to avoid use-after-frees in a non-trivial codebase” β€œΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π΅Π· UAF…”

–

β€œWhen the application calls free/delete and the reference count is greater than 0, PartitionAlloc quarantines that memory region instead of immediately releasing it.” β€œβ€¦ поэтому Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π°Π· ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Ρ‘ΠΌ ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½ для освобоТдСнной памяти”.

Π§ΠΈΡ‚Π°Π΅ΠΌ дальшС:

β€œWe successfully rewrote more than 15,000 raw pointers in the Chrome codebase into raw_ptr<T>, then enabled BackupRefPtr for the browser process on Windows and Android (both 64 bit and 32 bit) in Chrome 102 Stable.”

Π‘Π΅Ρ€ΡŒΠ΅Π·Π½ΠΎ? Π£ вас Π² ΠΊΠΎΠ΄Π΅ Π±Ρ‹Π»ΠΎ 15 тысяч сырых ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Π° Π²Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚Π΅ ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½ для освобоТдСнной памяти? ΠœΠΎΠΆΠ΅Ρ‚ стоит Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ со схСмой владСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ Π² ΡƒΠΌΠ½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°?

А ΠΊΡ‚ΠΎ Π·Π° это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ: ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просто Π΄ΠΎΠΊΡƒΠΏΠΈΡ‚ Π΅Ρ‰Π΅ ΠΆΠ΅Π»Π΅Π·Π°:

β€œSo we were able to spend some of those savings on security: MiraclePtr increased the memory usage of the browser process 4.5-6.5% on Windows and 3.5-5% on Android”

β€œOn Windows, no statistically significant performance regressions were observed on most of our top-level performance metrics like Largest Contentful Paint, First Input Delay, etc. The only adverse change there1 is an increase of the main thread contention (~7%). On Android1, in addition to a similar increase in the main thread contention (~6%), there were small regressions in First Input Delay (~1%), Input Delay (~3%) and First Contentful Paint (~0.5%).”

И Π³ΡƒΠ³Π»Ρƒ Π½Π° это просто ΠΏΠ»Π΅Π²Π°Ρ‚ΡŒ:

β€œWe don’t anticipate these regressions to have a noticeable impact on user experience, and are confident that they are strongly outweighed by the additional safety for our users.”

#security #cpp #uaf

Use-after-freedom: MiraclePtr

Posted by Adrian Taylor, Bartek Nowierski and Kentaro Hara on behalf of the MiraclePtr team Memory safety bugs are the most numerous cat...

Google Online Security Blog
Π–Π°Π²Π° всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π°Π²Ρ‚ΠΎ-Π½ΠΎΠΌ-Π½ΠΎΠΌ-Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.