πŸ’Ύ Archived View for any-key.press β€Ί forth β€Ί retro.gmi captured on 2024-08-18 at 17:11:35. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Retro: соврСмСнный Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ Forth

Π£ мСня ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Ρ€ΡƒΠΊΠΈ Ρ‡Π΅ΡΠ°Π»ΠΈΡΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Forth. И Ρ‚ΡƒΡ‚ ΠΌΠ½Π΅ Π½Π° Π³Π»Π°Π·Π° попалась Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ систСма:

gemini://retroforth.org/

http://retroforth.org/

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

МнС Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ понравился этот Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ Forth'Π°:

"Retro is not a traditional Forth"

Π›ΡŽΠ±ΠΎΠΉ Forth это, фактичСски, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина: ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π΄Π²Π° сСтка ΠΈ обратная польская нотация. ΠŸΡ€ΠΈ Π³Ρ€ΡƒΠ±ΠΎΠΌ рассмотрСнии Retro Π½Π΅ сильно отличаСтся ΠΎΡ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Forth. Но Ссли Π²Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π² процСсс ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π° с классичСскими рСализациями Π±ΡƒΠ΄Π΅Ρ‚ ощутимая. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ здСсь Π½Π΅ Π²ΠΎΠ·ΡŒΠΌΡƒΡΡŒ, Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΡ‚ΠΎΡˆΠ»ΡŽ ΠΊ Π³Π»Π°Π²Π΅ "Syntax" ΠΊΠ½ΠΈΠ³ΠΈ-руководства (doc/RETRO-Book.md). А Ρ‚Π°ΠΊ ΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, посвящСнный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π² Retro: doc/Interpreter.md.

Retro Π²Π²ΠΎΠ΄ΠΈΡ‚ понятиС "сигил". Π‘ΠΈΠ³ΠΈΠ» позволяСт ΠΏΠΎ ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΠΎΠΌΡƒ прСфиксу ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² (слов, Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами) ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ. ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ, Π½Π° ΠΌΠΎΠΉ взгляд, являСтся рСализация строк-Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ². Для задания строки-Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ символ-прСфикс ' Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ΄Ρ‘Ρ‚ содСрТимоС строки. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, выдСляя ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ‚ΠΎΠΊΠ΅Π½, встрСтит Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ 'hello, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΎΠΊΠ΅Π½ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° сигила строк (') ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сформируСт содСрТимоС строки ΠΈ помСстит ссылку Π½Π° эту строку Π² стСк. Или Π΄Ρ€ΡƒΠ³ΠΎΠΉ яркий ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ слова. Если Π² классичСском Forth ΠΌΡ‹ выдСляСм символ : Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½:

: name ;

Π’ΠΎ Π² Retro символ : являСтся сигилом ΠΈ Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡΡ‚ΡŒ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ слова Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½:

:name ;

Бводная Ρ‚Π°Π±Π»ΠΈΡ†Π° самых ярких Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Retro ΠΎΡ‚ классичСского Forth сформирована Π² Ρ„Π°ΠΉΠ»Π΅ doc/Cross-Reference.md.

Помимо сигилов Π² Retro ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ ΠΌΠ°Π·ΠΊΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ элСмСнты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования: Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ([ ]) ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ функциями. НапримСр условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ логичСский Ρ„Π»Π°Π³, Π½ΠΎ ΠΈ адрСс исполняСмого ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трСбуСтся ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Ссли Ρ„Π»Π°Π³ TRUE:

s:get

s:length n:zero? [ 'empty_string s:put nl ] if
empty string

Π“Π΄Π΅:

Π•ΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ своСобразный Π°Π½Π°Π»ΠΎΠ³ замыкания: Hyperstatic Global Environment. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ `doc/Hyperstatic.md`.

Nga

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ двухстСковая машина Retro, ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ инструкции, называСтся Nga.

Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ vm/ прСдставлСны Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках программирования. Π­Ρ‚Π°Π»ΠΎΠ½Π½ΠΎΠΉ (ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) являСтся рСализация Π½Π° Π‘ΠΈ (vm/nga-c/). Но Ссли интСрСсны Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ„Π°ΠΉΠ» doc/Nga.md Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ unu (Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСн дальшС) даётся рСализация Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ коммСнтариями.

Muri

Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Retro Π½Π΅ инструкции "Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ" процСссора, Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Π½Π΅Ρ‘ спроСктированный ассСмблСр - Muri. Набор инструкций Nga относится ΠΊ классу MISC:

ВикипСдия: Minimal instruction set computer

ВсС инструкции, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΈ, ΠΈΠΌΠ΅ΡŽΡ‚ сокращённоС Π΄Π²ΡƒΡ…ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ΅ инструкций Π² ΠΎΠ΄Π½ΠΎΠΉ ячСйкС памяти:

    st       sw       li       du
    00010000:00000100:00000001:00000010

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π½Π°Π±ΠΎΡ€ инструкций Muri описан Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "Internals: Nga Virtual Machine" ΠΊΠ½ΠΈΠ³ΠΈ-руководства ΠΏΠΎ Retro.

Устройства Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ (I/O extensions)

Помимо Π½Π°Π±ΠΎΡ€Π° инструкций Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Nga Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° (устройства). Π§Π΅Ρ€Π΅Π· эти устройства Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Nga ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с "внСшним ΠΌΠΈΡ€ΠΎΠΌ". Устройства сгруппированы ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ:

ВсС устройства, ΠΊΡ€ΠΎΠΌΠ΅ Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. ДоступныС устройства ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ сборки систСмы. НапримСр Π½Π° Windows-сборкС ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Unix.

РСализация Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ„Π°ΠΉΠ»Ρ‹ vm/nga-c/dev-*.c) ΠΈ forth-ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ (Ρ„Π°ΠΉΠ»Ρ‹ interface/*.retro).

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ doc/DEVICES.txt.

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·: ngaImage

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ исполняСт Nga располоТСн Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ngaImage. Он собираСтся (Π² основном) ΠΈΠ· retro.muri and retro.forth. Π’ этих Ρ„Π°ΠΉΠ»Π°Ρ… (ΠΈΠ· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ image/) ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ языка ΠΈ основных слов стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Unu

Π€Π°ΠΉΠ»Ρ‹ исходного ΠΊΠΎΠ΄Π° (Π² основном с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .retro) написаны Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ unu. Π€ΠΎΡ€ΠΌΠ°Ρ‚ unu Π²Ρ‹Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² исходных тСкстов "Π½Π° ΠΈΠ·Π½Π°Π½ΠΊΡƒ": вмСсто написания ΠΊΠΎΠ΄Π° ΠΈ помСчания особых строкам (ΠΈΠ»ΠΈ кусков строк) коммСнтариями Π² unu Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ строки Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

Π‘Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ строкой ~~~

НапримСр ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ строку "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!" (Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ):

~~~

'ΠŸΡ€ΠΈΠ²Π΅Ρ‚,_ΠΌΠΈΡ€! s:put nl

~~~

А ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΎΠ±Ρ€Π°ΠΌΠ»Ρ‘Π½Π½Ρ‹Π΅ строками ```, Π² этом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ содСрТат тСстовый ΠΊΠΎΠ΄. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ исполняСтся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ запускС retro с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -t. Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠ±Π° Ρ‚ΠΈΠΏΠ° Π±Π»ΠΎΠΊΠΎΠ².

Π‘ΠΏΠΎΡ€Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π•ΡΡ‚ΡŒ ряд Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Π»ΠΎΠ³ΠΈΠΊΠ° появлСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… понятна, Π½ΠΎ (Π½Π° ΠΌΠΎΠΉ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ взгляд) довольно спорна.

Но ΠΏΡ€ΠΈ этом стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ цСлостноС Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (ΠΊΠ°ΠΊ это происходит Π² случаС с Retro), Π΄Π°ΠΆΠ΅ с Π½Π΅ самыми ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ, Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·Π½ΠΎΡˆΡ‘Ρ€ΡΡ‚Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° "best practices".

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ _ Π² символ ΠΏΡ€ΠΎΠ±Π΅Π»Π° Π² Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°Ρ…

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΎΠ±ΠΎ Ρ‡Ρ‚ΠΎ придётся ΡΠΏΠΎΡ‚ΠΊΠ½ΡƒΡ‚ΡŒΡΡ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ: ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ символа _ Π² ΠΏΡ€ΠΎΠ±Π΅Π» Π² Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°Ρ…. ΠžΡ‚ΠΊΡƒΠ΄Π° взялось это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΏΠΎΠ»Π½Π΅ понятно: Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ классичСского Forth, Π² Retro Π²Π½Π°Ρ‡Π°Π»Π΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΌ символов токСнизируСтся (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, фактичСски, разбиваСтся ΠΏΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹ΠΌ символам), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ сигилом (Ссли Ρ‚ΠΎΠΊΠ΅Π½ начинаСтся с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ символа, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ' для строк).

Для получСния нСпосрСдствСнно символа _ руководство языка ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² форматирования строк:

'This_has_spaces_and_under\_scored_words. s:format

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ 0-символа ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ buffer:add

Π•ΡΡ‚ΡŒ (казалось Π±Ρ‹) довольно простоС слово - buffer:add.

$ retro-describe buffer:add
buffer:add

  Data:  n-
  Addr:  -
  Float: -

Append a value to the current buffer.

Class: class:word | Namespace: buffer | Interface Layer: all

Однако это слово Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ добавляСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ символ Π² Π±ΡƒΡ„Π΅Ρ€, Π½ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ 0-символ послС Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ символа (Ρ†ΠΈΡ‚Π°Ρ‚Π° ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ-руководства):

Use `buffer:add` to append a value to the buffer. This takes a single value and will also add an ASCII:NULL after the end of the buffer.

Π­Ρ‚ΠΎ, фактичСски, Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ выдСляя Π±ΡƒΡ„Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² дальнСйшСм Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ buffer:add, ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π° ΠΎΠ΄Π½Ρƒ ячСйку большС (для ASCII:NULL). Π”Π°ΠΆΠ΅ Ссли Π² Π±ΡƒΡ„Π΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π½Π΅ строка. НС люблю Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ постоянно "Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² ΡƒΠΌΠ΅".

РСализация s:split/*

Π•ΡΡ‚ΡŒ Π΄Π²Π° слова Π² Retro, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ каТутся ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ:

$ retro-describe s:split/string
s:split/string

  Data:  ss-ss
  Addr:  -
  Float: -

Split a string on the first occurrence of the specified string. After the split, the top stack item will be the part of the string before the specified substring, and the second item will be the rest of the original string.

Class: class:word | Namespace: s | Interface Layer: all
$ retro-describe s:split/char  
s:split/char

  Data:  sc-ss
  Addr:  -
  Float: -

Split a string on the first occurrence of the specified character.

Class: class:word | Namespace: s | Interface Layer: all

И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ (вСроятно я пропустил эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΠΊΠ½ΠΈΠ³Π΅-руководствС) ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ "Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ", Ссли элСмСнт ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ строка разбиваСтся отсутствуСт Π² строкС (ΠΈΠ· Ρ„Π°ΠΉΠ»Π° image/retro.forth):

The `s:split` splits a string on the first instance of a given character. Results are undefined if the character can not be located.

Π’Ρ‹ ΠΆΠ΅ Ρ‚ΠΎΠΆΠ΅ "Π»ΡŽΠ±ΠΈΡ‚Π΅" Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅? На ΠΌΠΎΠΈΡ… простых тСстах я Π²ΠΈΠ΄Π΅Π» Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ пустой строки ΠΈ Π²Ρ‹Π»Π΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π’ΠΎ Π΅ΡΡ‚ΡŒ (ΠΏΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌΡƒ) ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ s:split/string ΠΈΠ»ΠΈ s:split/char Π½ΡƒΠΆΠ½ΠΎ ΠžΠ‘Π―Π—ΠΠ’Π•Π›Π¬ΠΠž ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ раздСлитСля Π² исходной строкС. И Π²ΠΎΡ‚ "Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² ΡƒΠΌΠ΅" стало Π½ΡƒΠΆΠ½ΠΎ Ρ‡ΡƒΡ‚ΡŒ большС.

Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ строки

Π•ΡΡ‚ΡŒ ряд слов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ (Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚) Π½ΠΎΠ²Ρ‹Π΅ строки: s:get, s:format, s:reverse ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Но ΠΏΡ€ΠΈ этом ΠΎΠ½ΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ строки.

Π’ Retro Π΅ΡΡ‚ΡŒ концСпция Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… строк: Π΅ΡΡ‚ΡŒ цикличСский Π±ΡƒΡ„Π΅Ρ€ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ TempStrings (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 32) строки Π½Π° TempStringMax (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 512) символов. И всС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½Π½Ρ‹Π΅ ("Π½ΠΎΠ²Ρ‹Π΅") строки ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π² Ρ‚Π°ΠΊΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€.

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΠΎΠΏΡ‹Ρ‚Π°Π΅ΠΌΡΡ ввСсти 600 символов Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ s:get. Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚? Π”Π° Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ... рСализация Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ строки. Π’ "Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС" Π±ΡƒΠ΄Π΅Ρ‚ пСрСзаписана ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ врСмСнная строка ΠΈΠ· цикличСского Π±ΡƒΡ„Π΅Ρ€Π° (которая выдСлится Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ заполнится своими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΏΠΎΠ±ΠΈΠ² наш Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚).

$ retro
RETRO 12 (2024.9)
524288 Max, 44626 Used, 479662 Free
s:get
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
s:put
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs:put

Но Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρƒ мСня ΡΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹:

$ retro
RETRO 12 (2024.9)
524288 Max, 44626 Used, 479662 Free
s:get 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ERROR (nga/execute): Invalid instruction!
At 1545, opcode 120
Instructions: 120d 0d 0d 0d 

И количСство нСявной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ снова Π½ΡƒΠΆΠ½ΠΎ "Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² ΡƒΠΌΠ΅", растёт.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ бСзопасности

Всё эти нСявныС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ "ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Ρ‚ΡŒ" сдСланы Π² ΡƒΠ³ΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. И (с ΠΎΠ΄Π½ΠΎΠΉ стороны) Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΏΠ»Π°Ρ‚ΠΈΠΌ Π·Π° Ρ‚ΠΎ, Π·Π° Ρ‡Ρ‚ΠΎ Π½Π΅ просили. Но Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ строгих ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ. НапримСр ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ»Π΅Π²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² коррСктности свой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. К соТалСнию "ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ" Ρ‚Π°ΠΊΠΈΡ… возмоТностСй Π² Retro Π½Π΅Ρ‚. Π₯отя Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π΅ΡΡ‚ΡŒ Π² классичСском Forth.

ΠŸΡ€ΠΎΠ±Π° ΠΏΠ΅Ρ€Π°

НСсмотря Π½Π° всС нСприятныС особСнности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я описал Π²Ρ‹ΡˆΠ΅, ΠΌΠ½Π΅ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Retro. Π’ качСствС "ΠΏΠΎΠ΄ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ³ΠΎ" я сдСлал Gemini Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ для Google ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°:

GTransl πŸ” Gemini Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ ΠΊ Google ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΡƒ

Π― написал Π΅Π³ΠΎ Π² нСсколько ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, постСпСнно изучая Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ систСмы. Π”ΡƒΠΌΠ°ΡŽ я ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Retro нСбольшиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ "для сСбя". И, судя ΠΏΠΎ Π΅Π³ΠΎ устройству, ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму ΠΏΠΎΠ΄ свои поТСлания.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· ActivityPub (Fediverse) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ здСсь:

https://honk.any-key.press/u/continue/h/4Qr7Z63gFwM491k6r9