# FoxLang 5.0.1 - Changelog ## πŸ†• НовыС возмоТности ### ВстроСнная функция read_file() - **Π§Ρ‚Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²:** Новая функция `read_file(filename)` для чтСния тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ² - **Умная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°:** АвтоматичСски пропускаСт ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (строки Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с #) ΠΈ пустыС строки - **Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ:** Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡƒΡΡ‚ΡƒΡŽ строку ΠΏΡ€ΠΈ ошибкС чтСния Ρ„Π°ΠΉΠ»Π° - **ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅:** ИдСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для чтСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ### ВстроСнная функция http_get() - **HTTP запросы:** Новая функция `http_get(url)` для выполнСния GET запросов - **ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° использования:** Один Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для получСния Π΄Π°Π½Π½Ρ‹Ρ… с сСрвСра - **Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ:** Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ систСмный curl для надСТности - **ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅:** Π Π°Π±ΠΎΡ‚Π° с API, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π²Π΅Π±-скрапинг ```cpp string config = read_file("config.txt"); if (config != "") { print("Config loaded: " + config); } ``` --- # FoxLang 5.0.0 - Changelog ## πŸš€ ΠšΡ€ΡƒΠΏΠ½Ρ‹Π΅ нововвСдСния ### 1. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ - **Полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ** с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ - **Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ области видимости** для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ - **РСкурсивныС Π²Ρ‹Π·ΠΎΠ²Ρ‹** Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ - **ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° всСх Ρ‚ΠΈΠΏΠΎΠ²** Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π΅ (`int`, `float`, `string`, `bool`, `void`) ```cpp int factorial(int n) { if (n <= 1) { return 1; } return n * factorial(n - 1); } ``` ### 2. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ систСма с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ функциями - **Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с функциями**: Π’Π΅ΠΏΠ΅Ρ€ΡŒ `include("lib.fox")` ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ - **ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости**: Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ доступны Π² основном ΠΊΠΎΠ΄Π΅ - **Π Π΅ΠΆΠΈΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°**: Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π½ΠΎ ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ выполняСтся ```cpp // math_lib.fox int add(int a, int b) { return a + b; } // main.fox include("math_lib.fox"); int result = add(5, 3); // Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚! ``` ### 3. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ синтаксис ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² - **ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠΉ**: `user_name`, `get_public_ip`, `my_function` - **Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ лСксСр**: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ с `_` Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами - **Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ**: ВсС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ### 4. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ†ΠΈΠΊΠ»ΠΎΠ² - **Π¦ΠΈΠΊΠ» for**: Полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° `for (init; condition; step) { ... }` - **Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Π΅ while Ρ†ΠΈΠΊΠ»Ρ‹**: Π›ΡƒΡ‡ΡˆΠ°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° условий - **Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹**: ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° любого уровня влоТСнности ## πŸ”§ ВСхничСскиС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ### ΠŸΠ°Ρ€ΡΠ΅Ρ€ ΠΈ AST - **НовыС ΡƒΠ·Π»Ρ‹**: `FuncDefNode`, `ReturnNode`, `ForNode` - **Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°**: `return` Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ - **ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ**: Π˜Π·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ области видимости - **ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок**: Π›ΡƒΡ‡ΡˆΠΈΠ΅ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ### ЛСксСр - **Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°**: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ с подчСркиваниями ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ - **ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов**: Волько ΠΏΠΎΠ»Π½Ρ‹Π΅ совпадСния ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами ## πŸ“‹ ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования ### ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ```cpp string greet(string name, int age) { return "Hello, " + name + "! You are " + age + " years old."; } void main() { string message = greet("Alice", 25); print(message); } main(); ``` ### Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с функциями ```cpp // utils.fox int max(int a, int b) { if (a > b) return a; return b; } void print_array(array arr, int size) { int i = 0; while (i < size) { print("arr[" + i + "] = " + get(arr, i)); i = i + 1; } } // main.fox include("utils.fox"); int maximum = max(10, 20); array numbers 3; set(numbers, 0, 5); set(numbers, 1, 10); set(numbers, 2, 15); print_array(numbers, 3); ``` ### Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ синтаксис ```cpp string user_name = "john_doe"; int user_age = 25; bool is_admin = false; string get_user_info() { return "User: " + user_name + ", Age: " + user_age; } void check_permissions() { if (is_admin) { print("Admin access granted"); } else { print("Regular user access"); } } ``` ## πŸ”„ ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ - ВсС скрипты FoxLang 4.x ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ - ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (`print`, `input`, `fox`) Π½Π΅ измСнились - Бинтаксис массивов ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… остался ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ ## πŸ› Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ошибки - Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² с подчСркиваниями - УстранСны ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ - Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ парсСра ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ - Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ ошибки области видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… --- **ВСрсия 5.0.0** прСдставляСт собой Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ шаг Π²ΠΏΠ΅Ρ€Π΅Π΄ Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ FoxLang, прСвращая Π΅Π³ΠΎ Π² ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ язык программирования с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ соврСмСнной ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ систСмы.