Фиксация мамы нолнан с сфере IT с симпатией к атусу стоещему на полигоне
с афроо лошадьми
This commit is contained in:
+158
@@ -0,0 +1,158 @@
|
||||
# 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, превращая его в полноценный язык программирования с поддержкой пользовательских функций и современной модульной системы.
|
||||
Reference in New Issue
Block a user