Files
FoxLang/CHANGELOG.md

159 lines
6.3 KiB
Markdown

# 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, превращая его в полноценный язык программирования с поддержкой пользовательских функций и современной модульной системы.