ΠžΡ‚Ρ‡Ρ‘Ρ‚ ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ FreeBSD Π·Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ²Π°Ρ€Ρ‚Π°Π» 2019 Π³ΠΎΠ΄Π°

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° FreeBSD с апрСля ΠΏΠΎ июнь 2019 Π³ΠΎΠ΄Π°. Из ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ:

  • ΠžΠ±Ρ‰ΠΈΠ΅ ΠΈ систСмныС вопросы
    • Core team принял Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ для изучСния возмоТности ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° исходных тСкстов ΠΈΠ· Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ систСмы управлСния исходными тСкстами Subversion Π² Π΄Π΅Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ систСму Git.
    • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ fuzzing-тСстированиС ядра FreeBSD с использованиСм систСмы syzkaller ΠΈ исправлСн ряд выявлСнных ΠΏΡ€ΠΈ этом ошибок. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° прослойка для fuzzing-тСстирования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для совмСстимости с 32-разрядным ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° систСмах с 64-разрядным ядром. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ запуска syzkaller Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Π½Π° Π±Π°Π·Π΅ bhyve. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ этапС планируСтся Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΎΡ…Π²Π°Ρ‚ тСстированиСм систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ LLVM sanitizer для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ядра, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ netdump для сохранСния Π΄Π°ΠΌΠΏΠΎΠ² ядра Π²ΠΎ врСмя ΠΊΡ€Π°Ρ…ΠΎΠ² ΠΏΡ€ΠΈ fuzzing-тСстировании ΠΈ Ρ‚.ΠΏ.
    • ΠΠ°Ρ‡Π°Π»Π°ΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ обновлСнию Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ zlib Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра. Для доступа ядра ΠΊ ΠΊΠΎΠ΄Ρƒ zlib ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ contrib/zlib ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π² sys/contrib/zlib, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» crc.h для избСТания ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° с zlib/crc.h. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° чистка ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, зависимого ΠΎΡ‚ zlib ΠΈ inflate. Π”Π°Π»Π΅Π΅ планируСтся ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сборки ядра ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ со старым ΠΈ Π½ΠΎΠ²Ρ‹ΠΌ zlib для постСпСнного ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… сТатиС;
    • ОбновлСна инфраструктура эмуляции окруТСния Linux (Linuxulator). Π Π°ΡΡˆΠΈΡ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… инструмСнтов Linux, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° strace. Π’ ΠΏΠΎΡ€Ρ‚Ρ‹ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ linux-c7-strace, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для трассировки исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Linux вмСсто ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ truss ΠΈ ktrace, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ спСцифичныС для Linux Ρ„Π»Π°Π³ΠΈ ΠΈ структуры. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ linux-ltp с исполняСмыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Linux Test Project ΠΈ Ρ€Π΅ΡˆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ с исполняСмыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, скомпонованными с Π½ΠΎΠ²Ρ‹ΠΌΠΈ вСрсиями glibc;
    • РСализация ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ чистки привязок ΠΊ физичСским страницам памяти (delayed invalidation) Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ pmap ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½Π° использованиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ большого числа ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ unmap;
    • Π˜Π·ΠΌΠ΅Π½Ρ‘Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ vnode Π² процСссС выполнСния систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² сСмСйства execve(), Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ execve() для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сборки с распараллСливаниСм запуска компилятора);
  • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ
    • Π’ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π΅ bhyve ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Live-ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ гостСвых ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ хоста Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Save/Restore, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΈΡ‚ΡŒ Π³ΠΎΡΡ‚Π΅Π²ΡƒΡŽ систСму с сохранСниСм состояния Π² Ρ„Π°ΠΉΠ», Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
    • Π§Π΅Ρ€Π΅Π· использованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libvdsk Π² bhyve Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° дисковых ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ QCOW2. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ трСбуСтся установка
      ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ вСрсии bhyve, которая ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½Π° использованиС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ libvdsk. Π—Π° ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π² libvdsk Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ чтСния ΠΈ записи, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Copy-On-Write. Из ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π·Π°Π΄Π°Ρ‡ отмСчаСтся интСграция libvdsk Π² основной состав bhyve;

    • Π’ ΠΏΠΎΡ€Ρ‚Ρ‹ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° систСма сбора ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ΅
      Maltrail, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»ΠΎΠ²ΡƒΡˆΠΊΠΈ для врСдоносных сСтСвых запросов (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ IP ΠΈ Π΄ΠΎΠΌΠ΅Π½Ρ‹ ΠΈΠ· Ρ‡Ρ‘Ρ€Π½Ρ‹Ρ… списков) ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ свСдСния ΠΎ выявлСнной активности Π½Π° Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ сСрвСр для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊ;

    • Π’ ΠΏΠΎΡ€Ρ‚Ρ‹ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ для выявлСния Π°Ρ‚Π°ΠΊ, Π°Π½Π°Π»ΠΈΠ·Π° Π»ΠΎΠ³ΠΎΠ² ΠΈ отслСТивания цСлостности Ρ„Π°ΠΉΠ»ΠΎΠ² Wazuh (Ρ„ΠΎΡ€ΠΊ Ossec с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с ELK-Stack);
  • БСтСвая подсистСма
    • ΠžΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ena с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ поколСния сСтСвых Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² ENAv2 (Elastic Network Adapter), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² инфраструктурС Elastic Compute Cloud (EC2) для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ EC2 Π½Π° скоростях Π΄ΠΎ 25 Gb/s. Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ena Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° NETMAP.
    • Π’ΠΎ FreeBSD HEAD принят Π½ΠΎΠ²Ρ‹ΠΉ стСк MMC/SD, основанный Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ CAM ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ устройства с интСрфСйсом SDIO (Secure Digital I/O). НапримСр, SDIO ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ WiFi ΠΈ Bluetooth модулях для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Raspberry Pi 3. Новый стСк Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс CAM для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ SD-ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ· ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ устройств, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠΠ°Ρ‡Π°Π»Π°ΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ созданию Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² для бСспроводных Ρ‡ΠΈΠΏΠΎΠ² Broadcom, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ FullMAC (Π½Π° сторонС Ρ‡ΠΈΠΏΠ° выполняСтся ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ своСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ своСго бСспроводного стСка 802.11);
    • ВСдётся Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ NFSv4.2 (RFC-7862) для FreeBSD. Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии NFS Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ posix_fadvise, posix_fallocate, Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² SEEKHOLE/SEEKDATA Π² lseek, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ локального копирования частСй Ρ„Π°ΠΉΠ»Π° Π½Π° сСрвСрС (Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ).

      Π’ настоящСС врСмя для FreeBSD ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° базовая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ LayoutError, IOAdvise, Allocate ΠΈ Copy. ΠžΡΡ‚Π°Ρ‘Ρ‚ΡΡ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Seek, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для использования lseek(SEEKHOLE/SEEKDATA) с NFS. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ NFSv4.2 планируСтся Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² FreeBSD 13;

  • БистСмы хранСния ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы
    • Близится ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° подсистСмы FUSE (File system in USErspace), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ поставляСмый Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ устарСл ΠΈ содСрТит ΠΌΠ½ΠΎΠ³ΠΎ ошибок. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° FUSE 7.23 (Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π°ΡΡŒ вСрсия 7.8, выпущСнная 11 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄), Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊΠΎΠ΄ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π°Π² доступа Π½Π° сторонС ядра («-o default_permissions»), Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π²Ρ‹Π·ΠΎΠ²Ρ‹ VOP_MKNOD, VOP_BMAP ΠΈ VOP_ADVLOCK, обСспСчСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прСрывания ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ FUSE, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΈ unix-сокСтов Π² fusefs, появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования kqueue для /dev/fuse, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² монтирования Ρ‡Π΅Ρ€Π΅Π· «mount -u», Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° экспорта fusefs Ρ‡Π΅Ρ€Π΅Π· NFS, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡƒΡ‡Ρ‘Ρ‚ RLIMIT_FSIZE, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ„Π»Π°Π³ΠΈ FOPEN_KEEP_CACHE ΠΈ FUSE_ASYNC_READ, внСсСны Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° организация ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ;
    • Π’ ΠΊΠΎΠ΄ вытСснСния страниц памяти Π² Ρ€Π°Π·Π΄Π΅Π» ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ (swap pager) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ BIO_DELETE, которая позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ TRIM Π² процСссС удалСния Π±Π»ΠΎΠΊΠΎΠ² с SSD-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»Π΅ΠΉ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ срока ΠΈΡ… слуТбы.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° оборудования
    • ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ARM64 SoC Broadcom BCM5871X с процСссорами ARMv8 Cortex-A57, Π½Π°Ρ†Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° использованиС Π² ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°Ρ…, ΡˆΠ»ΡŽΠ·Π°Ρ… ΠΈ сСтСвых Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ…. Π—Π° ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… шин iProc PCIe, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° BNXT Ethernet, вСдётся Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡŽ встроСнного ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ΄Π²ΠΈΠΆΠΊΠ° для ускорСния IPsec. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π° Π² Π²Π΅Ρ‚ΠΊΡƒ HEAD оТидаСтся Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΡƒΠ³ΠΎΠ΄ΠΈΠΈ;
    • ΠΠ°Ρ‡Π°Π»Π°ΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ 64-разрядного SoC NXP LS1046A Π½Π° Π±Π°Π·Π΅ процСссора ARMv8 Cortex-A72 с ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ ускорСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сСтСвых ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², 10 Gb Ethernet, PCIe 3.0, SATA 3.0 ΠΈ USB 3.0. Π£ΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (multi-user SMP) ΠΈ SATA 3.0. Π’ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° USB 3.0, SD/MMC ΠΈ I2C. Π’ ΠΏΠ»Π°Π½Π°Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ethernet, GPIO ΠΈ QSPI. Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Π²Π΅Ρ‚ΠΊΡƒ HEAD оТидаСтся Π² 4 ΠΊΠ²Π°Ρ€Ρ‚Π°Π»Π΅ 2019 Π³ΠΎΠ΄Π°.
    • ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ mlx5en ΠΈ mlx5ib для Ethernet- ΠΈ InfiniBand-Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] ΠΈ ConnectX-6 [Dx]. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² Mellanox Socket Direct (ConnectX-6), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ пропускной способности Π΄ΠΎ 200Gb/s Π½Π° шинС PCIe Gen 3.0. Для многоядСрных Ρ‡ΠΈΠΏΠΎΠ² «BlueField» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° RShim. Π’ ΠΏΠΎΡ€Ρ‚Ρ‹ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ mstflint с Π½Π°Π±ΠΎΡ€ΠΎΠΌ диагностичСских ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² Mellanox;
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ систСма ΠΏΠΎΡ€Ρ‚ΠΎΠ²
    • ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ графичСского стСка. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π½ΠΈΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° drm.ko (Direct Rendering Manager) ΠΈΠ· ядра Linux 5.0. Π”Π°Π½Π½Ρ‹ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ рассматриваСтся ΠΊΠ°ΠΊ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΊΠ°ΠΊ graphics/drm-devel-kmod. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Linux KPI для совмСстимости с DRM API ядра Linux, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ трСбуСтся FreeBSD CURRENT. Из Linux Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ drm-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ vboxvideo.ko для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ GPU VirtualBox. ΠŸΠ°ΠΊΠ΅Ρ‚ Mesa ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π΄ΠΎ выпуска 18.3.2 ΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Ρ‘Π½ Π½Π° использованиС LLVM ΠΈΠ· ΠΏΠΎΡ€Ρ‚Π° devel/llvm80 вмСсто devel/llvm60.
    • Π”Π΅Ρ€Π΅Π²ΠΎ ΠΏΠΎΡ€Ρ‚ΠΎΠ² FreeBSD ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π»ΠΎ Ρ€ΡƒΠ±Π΅ΠΆ Π² 37000 ΠΏΠΎΡ€Ρ‚ΠΎΠ², число Π½Π΅Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… PR дСрТится Π½Π° ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠ΅ Π² 2146. Π—Π° ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ внСсСно 7837 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΡ‚ 172 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². ΠŸΡ€Π°Π²Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‚Π΅Ρ€Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ Π½ΠΎΠ²Ρ‹Ρ… участника. Π‘Ρ€Π΅Π΄ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ вСрсий Π² ΠΏΠΎΡ€Ρ‚Π°Ρ… ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. ВсС ΠΏΠΎΡ€Ρ‚Ρ‹ Π½Π° языкС Go ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ Π½Π° использованиС Ρ„Π»Π°Π³Π° «USES=go». Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π»Π°Π³ «USES=cabal» для ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Cabal, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для ΠΊΠΎΠ΄Π° Π½Π° Haskell. Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ строгий Ρ€Π΅ΠΆΠΈΠΌ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ стСка. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° вСрсия Python 3.6 вмСсто 2.7.
    • ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ Ρ€Π΅Π»ΠΈΠ· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ nsysctl 1.0, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰Π΅ΠΉ Π°Π½Π°Π»ΠΎΠ³ /sbin/sysctl, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ libxo для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΡ†ΠΈΠΉ. Nsysctl ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для наглядного наблюдСния Π·Π° состояниСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ sysctl ΠΈ прСдставлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π² структурированном Π²ΠΈΠ΄Π΅. Π’ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π²Ρ‹Π²ΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… XML, JSON ΠΈ HTML;

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ