Files
FoxLang/CHANGELOG.md

6.3 KiB
Raw Permalink Blame History

FoxLang 5.0.1 - Changelog

🆕 Новые возможности

Встроенная функция read_file()

  • Чтение файлов: Новая функция read_file(filename) для чтения текстовых файлов
  • Умная обработка: Автоматически пропускает комментарии (строки начинающиеся с #) и пустые строки
  • Безопасность: Возвращает пустую строку при ошибке чтения файла
  • Применение: Идеально подходит для чтения конфигурационных файлов

Встроенная функция http_get()

  • HTTP запросы: Новая функция http_get(url) для выполнения GET запросов
  • Простота использования: Один вызов функции для получения данных с сервера
  • Интеграция: Использует системный curl для надежности
  • Применение: Работа с API, загрузка данных, веб-скрапинг
string config = read_file("config.txt");
if (config != "") {
    print("Config loaded: " + config);
}

FoxLang 5.0.0 - Changelog

🚀 Крупные нововведения

1. Пользовательские функции

  • Полная поддержка функций с параметрами и возвратом значений
  • Локальные области видимости для параметров функций
  • Рекурсивные вызовы функций
  • Поддержка всех типов в параметрах и возврате (int, float, string, bool, void)
int factorial(int n) {
    if (n <= 1) {
        return 1;
    }
    return n * factorial(n - 1);
}

2. Модульная система с пользовательскими функциями

  • Библиотеки с функциями: Теперь include("lib.fox") поддерживает пользовательские функции
  • Правильная область видимости: Функции из библиотек доступны в основном коде
  • Режим импорта: Функции регистрируются, но код библиотеки не выполняется
// 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 внутри функций
  • Контекст функций: Изолированные области видимости
  • Обработка ошибок: Лучшие сообщения об ошибках

Лексер

  • Исправлена логика: Идентификаторы с подчеркиваниями обрабатываются корректно
  • Приоритет ключевых слов: Только полные совпадения считаются ключевыми словами

📋 Примеры использования

Пользовательские функции

string greet(string name, int age) {
    return "Hello, " + name + "! You are " + age + " years old.";
}

void main() {
    string message = greet("Alice", 25);
    print(message);
}

main();

Библиотеки с функциями

// 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);

Современный синтаксис

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