добавлена новая глобальная переменная UI_SCALE, которая содержит коэффициент масштабирования интерфейса; пример использования: button_size = PPI * UI_SCALE * 0.5;
изменен формат константы PIXILANG_VERSION;
операция OP_COPY теперь доступна и для функции op_cn() (для заполнения прямоугольной области одним значением);
новая операция обработки данных для функции op_cn(): OP_SUB2 (вычитание с измененным порядком операндов (N - C1[ i ]));
новае операции обработки данных для функции op_cc(): OP_EXCHANGE (обмен значений), OP_BMUL (if C2[ i ] == 0 { C1[ i ] = 0 }), OP_COMPARE;
новые операции обработки данных для функций op_cc() и op_cn(): OP_COPY_LESS (копировать при условии C1[ i ] < C2[ i ]), OP_COPY_GREATER;
новая операция обработки данных для функции op_ccn(): OP_MUL_RSHIFT (умножение с последующим сдвигом результата);
теперь контейнер можно масштабировать с интерполяцией; пример: resize( img, 100, 100, PIXEL, RESIZE_INTERP2 );
добавлены флаги для функции resize(): RESIZE_INTERP1 (грубое масштабирование), RESIZE_INTERP2 (линейная интерполяция), RESIZE_UNSIGNED_INTERP2, RESIZE_COLOR_INTERP1, RESIZE_COLOR_INTERP2;
добавлена опция для load(): LOAD_FIRST_FRAME - загрузить только первый кадр анимации;
добавлены опции экспорта в JPEG: JPEG_TWOPASS, JPEG_H1V1, JPEG_H2V1, JPEG_H2V2; подробности использования в примере examples/graphics/save_jpeg.pixi;
новые функции: zlib_pack(), zlib_unpack() - для паковки/распаковки контейнера с использованием библиотеки zlib;
новая функция: show_memory_debug_messages( enable );
новые функции: color_gradient() и gradient() для рисования 2D градиента в пиксельном или любом другом контейнере;
новая функция: split_ycbcr() - аналогична split_rgb(), только для преобразования в/из формата YCbCr;
новая функция: fprintf() - форматный вывод текста в указанный поток (открытый функцией fopen() или fopen_mem());
новые функции: logf() - форматный вывод текста в буфер для логов (журнал событий); get_log() - получить текущий лог;
новые функции: set_disk0(), get_disk0(); подбробности использования в примере examples/graphics/virtual_disk.pixi;
новые функции: fload() и fsave() для загрузки и выгрузки из/в поток данных, открытый функцией fopen или fopen_mem;
новая функция: fopen_mem() - открыть файл, который находится в контейнере (в памяти);
новая функция: setxattr() (posix);
новая функция: gl_draw_arrays() - гибрид OpenGL функций glColor4ub(), glBindTexture(), glVertexPointer(), glColorPointer(), glTexCoordPointer(), glDrawArrays();
новая функция: gl_blend_func() - полный аналог OpenGL функции glBlendFunc();
Еще бы встроенный дебаггер, и было бы вообще круто )
Еще пожелания:
если это возможно, чтобы выводилась ошибка при попытке чтения неинициализированной переменной;
также ошибка при попытке обращения к элементу контейнера, который неинициализирован;
цикл for, так как постоянно зависает из-за того что забыл увеличить счетчик перед continue
Увы, rand() 32-битным сделать не могу, так как на 16-битном уже построено много программ.
По поводу ошибки некорректного адреса - как только появится встроенный дебаггер, сразу же появятся номера строк во всех ошибках без исключения :) Просто сейчас отладочная информация о структуре исходника нигде не сохраняется - не успел реализовать.
Ну можно тогда сделать функцию rand32 или random. А что, встроенный дебаггер планируется? Вот это было бы незаменимой вещью. Веский аргумент в пользу pixilang, если выбирать между ним и другим языком.
Нашел ошибку - интерпретатор показывает неправильный номер строки с ошибкой, если в этом файле используется include.
Кстати, идея насчет отладчика, чтобы помимо чисел и строк можно было просматривать контейнеры с картинками