Agena - это бесплатный, многоплатформенный и простой в освоении процедурный язык программирования, предназначенный для повседневного использования. Он может использоваться в графической, научной, лингвистической и образовательной среде, а также в приложениях для сценариев, поддерживающих все основные операционные системы.
Предлагает многочисленные средства контроля потока
Приложение предлагает многочисленные средства управления потоком, например, если. elif, else условия, case of и else условия, является оператором, численным для, от, до, и по циклам, комбинированными числами для циклов while и while, для циклов while и while, while и do / as, инструкцией skip, break оператора, а также проверки типа данных.
Предоставляет перечисления
Среди других функций мы можем упомянуть математическую библиотеку произвольной точности, легкую настройку вашей личной среды, простую в использовании систему пакетов, назначение перечислений, управление областью с помощью ключевых слов epoc / scope и многие другие привлекательные функции.
Под капотом и доступностью
Быстрый просмотр под капотом покажет нам, что проект написан на языках программирования C, BASIC, Lua и ALGOL 68, а это означает, что его синтаксис напоминает синтаксис этих проектов. Он полностью работает в среде консоли / терминала, что означает, что в нем нет графического пользовательского интерфейса (GUI).
Корабли с простым редактором
Несмотря на то, что программное обеспечение Agena является приложением командной строки, оно поставляется с простым графическим программным редактором под названием AgenaEdit, который имеет интегрированную среду Agena и возможности подсветки синтаксиса. Он сильно вдохновлен аналогичным редактором, разработанным Биллом Спицаком для кросс-платформенного инструментария C ++ GUI FLTK.
Работы по малине Pi
Графические возможности Agena поддерживаются в операционных системах GNU / Linux, Solaris, Mac OS X, Microsoft Windows, eComStation - OS / 2 и DOS. Его можно легко развернуть как на 64-битных, так и на 32-битных аппаратных платформах, и он был успешно протестирован на компьютерной плате Raspberry Pi на базе ARM.
Что нового в этот выпуск:
- новая функция «Исчисление и статистика»
Что нового в версии:
- новая функция «Исчисление и статистика»
Что нового в версии 2.9.4:
- новая функция «Исчисление и статистика»
Что нового в версии 2.8.5:
- новая функция «Исчисление и статистика»
Что нового в версии 2.8.2:
- новая функция «Исчисление и статистика»
Что нового в версии 2.6.1:
- `stats.chauvenet` теперь может проверяться специально для нижние или верхние выбросы, передав опцию `outlier = 'lower`` или` outlier =' upper`` соответственно.
- `bags.remove` вызвали ошибки сегментации. Это было исправлено. Более того, все функции `bags`, реализованные в C, были внутренне изменены.
- Метаметоды (недокументированные) для `+`, `-` и` * `не работали, если пакет` bags` не был вызван с помощью функции `with` или оператора` import / alias`. Это было исправлено.
Что нового в версии 2.5.4:
- `stats.chauvenet` теперь может проверять специфически для более низких или верхних выбросов, передавая опцию` outlier = 'lower`` или `outlier =' upper`` соответственно.
- `bags.remove` вызвали ошибки сегментации. Это было исправлено. Более того, все функции `bags`, реализованные в C, были внутренне изменены.
- Метаметоды (недокументированные) для `+`, `-` и` * `не работали, если пакет` bags` не был вызван с помощью функции `with` или оператора` import / alias`. Это было исправлено.
Что нового в версии 2.5.3:
- `stats.chauvenet` теперь может проверяться специально для нижние или верхние выбросы, передав опцию `outlier = 'lower`` или` outlier =' upper`` соответственно.
- `bags.remove` вызвали ошибки сегментации. Это было исправлено. Более того, все функции `bags`, реализованные в C, были внутренне изменены.
- Метаметоды (недокументированные) для `+`, `-` и` * `не работали, если пакет` bags` не был вызван с помощью функции `with` или оператора` import / alias`. Это было исправлено.
Что нового в версии 2.4.2:
- `stats.chauvenet` теперь может проверять специфически для более низких или верхних выбросов, передавая опцию` outlier = 'lower`` или `outlier =' upper`` соответственно.
- `bags.remove` вызвали ошибки сегментации. Это было исправлено. Более того, все функции `bags`, реализованные в C, были внутренне изменены.
- Метаметоды (недокументированные) для `+`, `-` и` * `не работали, если пакет` bags` не был вызван с помощью функции `with` или оператора` import / alias`. Это было исправлено.
Что нового в версии 2.3.0 RC1:
- Цифры `for` теперь поддерживают ключевое слово` downto ', чтобы вы могли рассчитывать без использования обязательного отрицательного размера шага `by`. В контексте «downto» размер шага «by» всегда должен быть положительным. `from 'start и` to' stop значения являются обязательными при использовании ключевого слова `downto '.
- Метаметоды '__finite', '__entier' и '__sqrt' больше не поддерживаются. Вместо этого добавлены три новых метатода для операций над структурами: «__union» для операций объединения, «__intersect» для определения пересечений и «__minus» для различий. Таким образом, пакет `bags` теперь также поддерживает эти три операции.
- Оператор `` целочисленного деления не поддерживал свой метаметод и вместо этого использовал тот, который используется для разделителя float (`/` operator). Это было исправлено.
- Новая функция `stats.gini` определяет коэффициент Джини, мера (in) равенства.
- Новая функция `stats.zscore` возвращает функцию, вычисляющую z-оценку (стандартную оценку) образца - число стандартных отклонений, которое образец выше или ниже среднего для распределения.
- `stats.sorted` теперь по умолчанию использует алгоритм Introsort вместо Quicksort. Это может ускорить вычисление времени три раза в условиях плохо обусловленных ситуаций (где Quicksort понадобится O (n ^ 2)), не жертвуя производительностью в обычных ситуациях. Фактически, Introsort использует Quicksort по умолчанию, а затем автоматически переключается на Heapsort, если глубина рекурсии достигает 2 * log (n, 2), где n - количество элементов в структуре.
- Вы можете переопределить эту логику, передав новую опцию quicksort, которая использует традиционный рекурсивный метод Quicksort для сортировки чисел. Кроме того, `stats.sorted` теперь также может использовать алгоритм Heapsort исключительно в случае передачи новой опции« heapsort »и нерекурсивного алгоритма Quicksort, разработанного Niklaus Wirth с новым вариантом« nrquicksort ».
- Новая функция `stats.meanmed` возвращает как среднее арифметическое, так и медиану распределения, или, альтернативно, среднюю и среднюю, ускоряя время вычисления, когда эти значения необходимы примерно на 20 процентов.
- Улучшено сообщение об ошибке оператора `size`.
Что нового в версии 2.1.1:
- Новые функции и исправления:
- `try / catch`: явная спецификация переменной ошибки сразу после того, как токен` catch` теперь является необязательным. Если переменная ошибки не указана, сообщение об ошибке автоматически сохраняется в локальной переменной `lasterror`, а ключевое слово` then` должно быть опущено:
- oops!
- Операция `try / catch` иногда не работала в процедурах (непризнанная переменная ошибки). Это было исправлено.
- Новая функция `net.wget` загружает HTML-страницы из Интернета.
- Настроено `skycrane.counter` на 10%. Функция теперь необязательно применяет Kahan-Ozawa вместо оригинального алгоритма суммирования Kahan, если новый третий аргумент является строкой «ozawa». Соответствующие источники C были изменены для предотвращения оптимизации компилятора, что также могло бы отменить оптимизацию.
- `argerror` теперь печатает пользовательское имя типа значения, полученного в сообщении об ошибке. Если значение не имеет определяемого пользователем типа, то его основной тип выдается.
- Новая опция 'a' для `debug.getinfo` возвращает количество аргументов, ожидаемых процедурой, благодаря Rob Hoelz 'LuaPowerPatch.
- Улучшено сообщение об ошибке «индекс вне диапазона» для строк.
- Изменены файлы `stats.agn`,` linalg.agn`, `library.agn` и` ansi.agn` в отношении обработки ошибок.
<Литий> & GT; попробовать
<Литий> & GT; error ('oops!')
<Литий> & GT; поймать
<Литий> & GT; печать (LastError)
<Литий> & GT; YRT;
Что нового в версии 2.1.0:
- Для нового вида обработки ошибок был введен новый оператор `try / catch`. Он был изобретен и написан Ху Цивей для Lua 5.1 еще в 2008 году.
- В общем случае любые предложения, в которых можно ожидать исключения, могут быть помещены в предложение `try`. Если выдается ошибка, генерируемая явным вызовом функции `error` или любому другому выражению, функции или оператору, управление немедленно переходит к соответствующему предложению` catch`, если оно присутствует, или к концу `try / yrt `если предложение` catch` не указано, игнорируя любые другие последующие операторы в предложении `try`.
- Защитные средства `protect / lasterror` все еще поддерживаются и всегда будут поддерживаться. Новый оператор управления также отлично работает с операциями `break`,` skip`, `redo` и` return`.
- Новый оператор `redo` перезапускает текущую итерацию цикла` for / to` и `for / in` с самого начала.
- Новый оператор `recip` возвращает инверсию числа x. Это эквивалентно выражению 1 / x, но быстрее.
- Новая функция `stats.ema` вычисляет экспоненциальную скользящую среднюю распределения. Новая функция `stats.gema` возвращает функцию итератора, возвращающую соответствующее экспоненциальное скользящее среднее распределения.
- `*%`, `+%` и `-%` возвращают `undefined` вместо правильного результата, если их правый операнд был равен нулю. Это было исправлено.
- Исправлено сообщение об ошибке в файле net.survey.
- Улучшены сообщения об ошибках для индексации пар и строк вне диапазона.
- В версиях ANSI, Solaris и DOS был настроен оператор `int`.
- Новая функция C API `agn_arraytoseq` преобразует числовой массив в последовательность и подталкивает эту новую последовательность поверх стека.
- Обновлено руководство.
Что нового в версии 2.1.0 RC:
- Новый оператор `redo` перезапускает текущую итерацию цикла` for / to` и `for / in` с самого начала. Пример: литий>
<Литий> & GT; flag: = true; & GT; для j в [10, 11, 12] do & gt; print ('before', j, flag); & GT; если флаг и j = 11, то & gt; четкий флаг; & GT; print ('- & gt;', j, flag, 'jump back') & gt; redo & gt; Fi; & GT; print ('after', j, flag) & gt; до j & gt; 12; перед 10 истинными после 10 истинными до 11 true - & gt; 11 ложный переход назад до 11 ложных после 11 ложных до 12 ложных после 12 ложных - Новый оператор `recip` возвращает инверсию числа x. Это эквивалентно выражению 1 / x, но быстрее.
- Новая функция `stats.ema` вычисляет экспоненциальную скользящую среднюю распределения. Новая функция `stats.gema` возвращает функцию итератора, возвращающую соответствующее экспоненциальное скользящее среднее распределения. Для его использования, пожалуйста, ознакомьтесь с исходным файлом src / stats.c, функциями C * ema.
- `*%`, `+%` и `-%` возвращают `undefined` вместо правильного результата, если их правый операнд был равен нулю. Это было исправлено.
- Исправлено сообщение об ошибке в файле net.survey.
- Новая функция C API `agn_arraytoseq` преобразует числовой массив в последовательность и подталкивает эту новую последовательность поверх стека.
Что нового в версии 2.0.0:
- Новые операторы и функции:
- Agena 2.0 совместим с Agena 1.12, но только то, что «токены», «псевдоним», «до» и «onsuccess» теперь являются ключевыми словами и больше не могут использоваться в качестве переменных. В настоящее время доступны версии Solaris, Debian (x86, PowerPC, Raspberry Pi), Windows, Mac и DOS для версии 2.0, включая обновленный Primer и Reference, который подробно описывает все новые функции.
- Новые варианты цикла `for / as` и` for / until` проверяют условие в конце текущей итерации и либо начинают следующую итерацию, либо покидают цикл. Это работает как с `for / to`, так и с` for / in`. В сущности, оба варианта выполняют цикл хотя бы один раз, пока не будет проверено данное условие.
- Примеры:
- Новый цикл `do / until` повторяется до тех пор, пока не будет выполнено определенное условие:
- В числовых циклах `for` предложение` to` может не передаваться больше. Вместо этого, когда вы не выполняете предложение `to`, цикл повторяется до тех пор, пока не будет достигнуто наибольшее число, представленное на вашей платформе, в C HUGE_VAL:
- Новый оператор `onsuccess` в операторах` if` и `case` выполняет кусок, если хотя бы одно из условий истинно. Примеры: литий>
<Литий> & GT; flag: = false; - True
- ложь
- True
- Новый оператор `import` позволяет импортировать одну или несколько библиотек, не помещая их имена в кавычки, например. «import calc, stats» эквивалентен «readlib (« calc »,« stats »)».
- Параметр `alias` оператора` import` присваивает одно или несколько коротких имен инициализированным библиотечным функциям, например. «Импорт псевдонимов calc xpdiff» эквивалентен «с (« calc »,« xpdiff »)», а «import calc alias» эквивалентен «с (« calc »)».
- Новый оператор `..` позволяет индексировать таблицы, даже если его левый операнд имеет значение« null ». В этом случае возвращается «null» и не выдается `попытка индексировать поле ... (пустое значение)`. Он похож на функцию «getentry», но в три раза быстрее. Примеры: литий>
<Литий> & GT; создать таблицу a; - NULL
- Ошибка в stdin, в строке 1:
- попытка индексировать поле `b` (нулевое значение)
- NULL
- NULL
- Ошибка в stdin, в строке 1:
- попытаться проиндексировать поле `?` (нулевое значение)
- NULL
- Новая функция `drem` оценивает остаток целочисленного деления x / y, но вопреки` irem` округляет внутренний фактор x / y до ближайшего целого, а не к нулю.
- Новая функция `skycrane.todate` возвращает текущую дату и время как форматированную строку.
- Новая функция `io.truncate` усекает файл в текущей позиции файла.
- Новая функция `io.move` изменяет позицию файла на заданное количество символов слева или справа.
- Новая функция `io.filesize` возвращает размер файла.
- `readlib` теперь принимает строки только как свои аргументы. Номера больше не допускаются.
- Если последний аргумент `with` является логическим` false`, тогда функция не записывает назначенные короткие имена на консоль (stdout).
- `strings.fields` теперь также принимает последовательность номеров индексов. Однако он не принимает индекс `0`.
- Установщик Debian Rabella Pi Wheezy теперь включает графический пакет `gdi`.
- Файл `change.log` теперь корректно отображается в Windows.
<Литий> & GT; для i до 5 do
<Литий> & GT; печать (я)
<Литий> & GT; как i & lt; 3
<Литий> & GT; для i в [1, 2, 3, 4, 5] do
<Литий> & GT; печать (я)
<Литий> & GT; пока i & gt; = 3
<Литий> & GT; c: = 0;
<Литий> & GT; сделать
<Литий> & GT; inc c;
<Литий> & GT; печать (с) литий>
<Литий> & GT; до c & gt; = 3
<Литий> & GT; для i do
<Литий> & GT; печать (я)
<Литий> & GT; спосо
<Литий> & GT; если 1 = 0, то
<Литий> & GT; печать (0)
<Литий> & GT; elif 1 = 1, затем
<Литий> & GT; Печать (1) литий>
<Литий> & GT; OnSuccess
<Литий> & GT; flag: = true
<Литий> & GT; еще
<Литий> & GT; Печать (-1) литий>
<Литий> & GT; Fi;
<Литий> & GT; печать (флаг);
<Литий> & GT; flag: = false;
<Литий> & GT; если 1 = 0, то
<Литий> & GT; печать (0)
<Литий> & GT; elif 1 = 0, затем
<Литий> & GT; Печать (1) литий>
<Литий> & GT; OnSuccess
<Литий> & GT; flag: = true
<Литий> & GT; еще
<Литий> & GT; Печать (-1) литий>
<Литий> & GT; Fi;
<Литий> & GT; печать (флаг);
<Литий> & GT; flag: = false;
<Литий> & GT; a: = 2;
<Литий> & GT; case a
<Литий> & GT; из 1, тогда
<Литий> & GT; Печать (1) литий>
<Литий> & GT; из 2, тогда
<Литий> & GT; печать (2) литий>
<Литий> & GT; OnSuccess
<Литий> & GT; flag: = true
<Литий> & GT; еще <Литий> & GT; Печать (-1) литий>
<Литий> & GT; ESAC;
<Литий> & GT; печать (флаг);
<Литий> & GT; a.b:
<Литий> & GT; A.B.C:
<Литий> & GT; a..b..c:
<Литий> & GT; создать таблицу a;
<Литий> & GT; а [1]: литий>
<Литий> & GT; а [1] [2]: литий>
<Литий> & GT; A .. [1] .. [2]: литий>
Что нового в версии 2.0.0 RC3:
- Новые варианты цикла `for / as` и` for / until` проверяют условие в конце текущей итерации и либо начинают следующую итерацию, либо покидают цикл. Это работает как для /, так и для циклов / in.
Что нового в версии 2.0.0 RC2:
- Новые варианты цикла `for / as` и` for / until` проверяют условие в конце текущей итерации и также начинают следующую итерацию или оставляют цикл. Это работает как для /, так и для циклов / in.
Что нового в версии 2.0.0 RC1:
- Новый оператор `import` позволяет импортировать одну или несколько библиотек, не помещая их имена в кавычки, например. «import calc, stats» эквивалентен «readlib (« calc »,« stats »)».
- Параметр `alias` оператора` import` присваивает одно или несколько коротких имен инициализированным библиотечным функциям, например. «Импорт псевдонимов calc xpdiff» эквивалентен «с (« calc »,« xpdiff »)», а «import calc alias» эквивалентен «с (« calc »)».
- Новый оператор `..` позволяет индексировать таблицы, даже если его левый операнд имеет значение« null ». В этом случае возвращается «null» и не выдается `попытка индексировать поле ... (пустое значение)`. Он похож на функцию «getentry», но в три раза быстрее.
Что нового в версии 1.12.9:
- Новые функции `io.getclip` и` io.putclip` обмениваются текстами между Agena и буфером обмена (только для Windows).
- `stats.prange` был переписан на C и стал на 60% быстрее.
- `os.cpuinfo` теперь возвращает правильную и дополнительную информацию о системах на базе ARM.
- В системах DOS и UNIX, включая Mac OS X и только в сложном домене, возведение в степень базы 0 с показателем 0 + r * I, с r любым ненулевым поплавком, возвращает `undefined` вместо 0. Это было исправлено.
- В системах DOS и UNIX, включая Mac OS X и только в сложном домене, возведение в степень базы 0 с показателем r + 0 * I с r любым положительным поплавком возвращает `undefined` вместо 0. Это были исправлены.
- `stats.obcount` и` stats.obpart` не могут включать значения в самый правый интервал. Это было исправлено.
- `calc.nakspline`,` calc.naksplinecoeffs`, `calc_clampedspline` и` calc_clampedsplinecoeffs` вызвали ошибки сегментации, если вызваны со структурой, содержащей слишком мало точек, то есть пары. Это было исправлено, возвращая `fail` в этих случаях.
- Потенциальные ошибки удаления памяти были удалены из `calc.neville`,` calc.interp`, `calc.newtoncoeffs`,` calc.naksplinecoeffs`, `calc.clampedsplinecoeffs`,` calc.nakspline`, и `calc.clampedspline`.
- Новая функция C API `agn_checkinteger` проверяет, является ли аргумент числом и целым числом, и, в отличие от` luaL_checkinteger`, в противном случае выдает ошибку.
Что нового в версии 1.9.0:
- Новая функция `alternate` возвращает свой первый аргумент, если его второй аргумент равен« null ». В противном случае он возвращает свой второй аргумент.
- Переключатель -b для исполняемого файла Agena удален, так как его вывод был таким же, как опция -v.
- Windows и UNIX / Mac версии `strings.utf8size` содержат потенциальную утечку памяти; это было изменено.
- Все двоичные DLL / SO-файлы из плюсовых библиотек больше не содержат неиспользуемый код, уменьшая их размеры до 10 процентов, в зависимости от операционной системы. Файл makefile и источники, ранее импортировавшие неиспользуемые файлы заголовков, были изменены. Например, это вообще уменьшает размер двоичных файлов Windows на 55 кбайт.
- Расширенный набор тестов.
- Обновлены файлы схемы.
Что нового в версии 1.6.0:
- Новые функции и функции:
- Новая функция `checktype` определяет, имеют ли все значения в структуре заданного типа.
- Новая функция `isint` проверяет, являются ли все ее аргументы целыми числами.
- Новая функция `strings.dleven` возвращает расстояние Дамерау-Левенштейна двух строк.
- Новая функция `stats.ad` определяет абсолютное отклонение всех значений в структуре.
- Новая функция `stats.countentries` подсчитывает количество вхождений всех элементов в структуре.
- Новая функция `stats.deltalist` возвращает структуру дельта соответствующих соседних элементов.
- Новая функция `stats.gmean` возвращает среднее геометрическое структуры.
- Новая функция `stats.hmean` возвращает среднее значение гармоники структуры.
- Новая функция `stats.ios` возвращает проверенный индикатор стабильности в дистрибутиве.
- Новая функция `stats.iqr` возвращает интерквартильный диапазон.
- Новая функция `stats.issorted` проверяет, отсортированы ли все числа в структуре в порядке возрастания.
- Новая функция `stats.moment` вычисляет момент данных данных о происхождении.
- Новая функция `stats.numbperm` возвращает количество перестановок.
- Новая функция `stats.percentile` определяет процентили.
- Новая функция `stats.skewness` возвращает асимметрию, индикатор симметрии распределения вероятности.
- Новая функция `stats.sumdata` суммирует все полномочия структуры о происхождении.
- `stats.tovals` теперь является библиотечной функцией C и, следовательно, на 40 процентов быстрее.
- С пустой таблицей или последовательностью, `stats.qmean`,` stats.mean`, `stats.gmean`,` stats.sd`, `stats.median`,
- `stats.var` теперь возвращает сбой.
- Максимальная длина для строки ввода в автономном интерпретаторе изменена с 512 до 2048 символов.
- Новая переменная среды `environ.maxpathlength` хранит максимальное количество символов для пути к файлу (исключая символ C).
- Новые переменные среды `environ.minnumber` и` environ.maxnumber` содержат минимальное и максимальное значение, которое может хранить номер Agena (в настоящее время ANSI-C double).
- Новая переменная среды `environ.umaxlong` включает в себя максимальное интегральное значение типа unsigned unsigned long в 32 + битных системах и без знака long на 16-битных машинах.
- C API:
- 100% -ная совместимость API Agena C с API Lua's C была восстановлена путем введения функций Lump's * dump. Таким образом, теперь вы можете хранить функции в двоичном представлении, например. используя `strings.dump` или lua_dump на уровне C.
- Введена новая функция `agnL_optboolean` для проверки дополнительных логических аргументов и возврата их в случае успеха.
- Исправления ошибок:
- `environ.globals` всегда заканчивается с ошибкой, это исправлено.
- `предполагать` возвращает false, при этом оба его аргумента или оцениваются как« неопределенные ». Теперь он возвращает true.
- Agena потерпела крах при прохождении пустой таблицы и разделителя на `join` - это было исправлено.
- Опция `colour` больше не игнорируется` gdi.plot`.
- С таблицами `stats.minmax` вернул неверное значение для минимума. Теперь он работает правильно.
- С пустой таблицей `stats.median` возвращается 0, теперь она возвращает сбой.
- В отличие от документации, `stringings.isending` возвращает 'true', при этом обе строки равны. Это было исправлено.
- `run` return` невозможно открыть файл`, если существующий скрипт Agena включал синтаксическую ошибку. Это было исправлено, полностью переписав функцию.
- Добавлен патч Lua 5.1.4 9: «Неверное генерирование кода для некоторых определенных [например, сложных] булевых выражений».
- Добавлен патч 11.5 Lua 5.1.4: «Парсер может собрать прототип при его создании».
- * Info: добавление патча 10 Lua 5.1.4, «метатет метаданных [__write / __ new] может не работать, если метатебель является его собственным метатебельным», для Agena нет необходимости, поскольку Agena уже работает правильно в этом случае.
- Удалено неиспользуемое ключевое слово `default`.
- Некоторое упрощение функций и функций.
- Улучшения:
- Добавлена версия _experimental_ `io.anykey` для версии Mac. Однако, по крайней мере, на Lion, нажатие клавиши иногда повторяется на оболочке.
- `utils.readcsv` теперь может необязательно возвращать все значения в CSV-файле в плоской последовательности.
- Пакет `clock` теперь поддерживает оператор деления` / `, добавляя его к метатете оператора` tm`.
- Поведение `with` было изменено, поскольку он не мог назначить короткие имена для многих библиотечных функций: если функции были помещены в таблицу .aux, не назначайте короткие имена для этих имен функций; в противном случае назначьте короткие имена для _all_ других функций пакета. Таким образом: `package.register` для регистрации всех функций библиотеки для` with` для назначения коротких имен больше не требуется. Он будет устаревшим в одном из следующих выпусков.
- Улучшен набор тестов.
- Руководство:
- Улучшено руководство и индекс.
- Консистенция:
- Для всех следующих переименований все еще поддерживаются следующие старые имена переменных.
- `environ.MinLong` был переименован в` environ.minlong`.
- `environ.MaxLong` был переименован в` environ.maxlong`.
- `environ.BufferSize` был переименован в` environ.buffersize`.
- `environ.PathSep` переименован в` environment.pathsep`.
- `environ.More` был переименован в` environ.more`.
- `environ.WithProtected` переименован в` environment.withprotected`.
- `environ.Os` переименован в` environ.os`.
- `environ.Cpu` переименован в` environ.cpu`.
- `environ.Release` был переименован в` environ.release`.
- `environ.GdiDefaultOptions` был переименован в` environ.gdidefaultoptions`.
- В Windows `os.login` и` os.computername` теперь возвращают 'fail', как это делают версии UNIX или OS / 2.
- Переключатель `-DCOMPAT13` был окончательно удален для компиляции версии Agena 1.3.x.
- Другое:
- Устаревший `calc.fseq` был удален. Вместо этого используйте `nseq`.
Что нового в версии 1.5.1:
- Исправлено `strings.fields`, которое вообще не работало. Кроме того, он был преобразован в библиотечную функцию C и, следовательно, в 2,6 раза быстрее.
- `strings.words` теперь принимает третий аргумент, если установлено значение` true`, последующие разделители игнорируются.
- Удалена возможная утечка безопасности из `io.write` и` io.writeline` и улучшена ее сообщения об ошибках.
- Исправлено `binio.readchar`, чтобы избежать проблем с файлами размером более 2 ГБ.
- Исправлены сообщения об ошибках функций `xbase.purge`,` xbase.readvalue`, `xbase.purge`,` ads.getvalues`, `binio.readshortstring`,` os.computername`, `os.login`, `os.fattrib`,` environ.kernel`, `package.register`.
- Теперь можно ввести терабайты с обозначением T, где - целое число, а T - символ `T`. Аналогично, g обозначает миллиарды и t триллионов. Для получения дополнительной информации см. Стр. 48 руководства.
- Обновлено руководство.
- В большинстве случаев все обратные переключатели совместимости в исходном коде C были удалены по причинам очистки кода. Это затрагивает только тех, кто пытается перекомпилировать Agena 1.5 или выше с полной обратной совместимостью с Agena 1.3 и 1.4 и с большей частью обратной совместимости с Lua 5.0 (кроме старой библиотеки Lua 5.0).
Что нового в версии 1.5.0:
- `map` теперь также может обрабатывать строки, заданные в качестве второго аргумента. Соответствующая функция и ее аргументы последовательно применяются к каждому символу слева направо, и результат возвращается в последовательности.
- `run`: если вы хотите загрузить и выполнить код из файлов с суффиксом 'agn', вам больше не нужно указывать суффикс в аргументе. Итак, `run 'test'` и` run' test.agn'` теперь совпадают.
- Ключевое слово `is` теперь обязано определять процедуры. (С помощью GCC используйте ключ -DCOMPAT14 для компиляции версии Agena, где ключевое слово `is` по-прежнему является необязательным.)
- Оператор `try` устарел и больше не поддерживается. (С помощью GCC используйте ключ -DCOMPAT14 для компиляции версии Agena, которая все еще содержит этот оператор.)
- Были удалены следующие функции `utils`:` arraysize`, `getarray`,` getwholearray`, `newarray`,` searcharray`, `setarray`. Для обратной совместимости они были добавлены в файл lib / compat.agn. (С GCC используйте ключ -DCOMPAT14 для компиляции версии Agena, которая все еще поддерживает исходные функции utils.)
- `utils.singlesubs` полностью переписан. Теперь он ожидает последовательность чисел как второй аргумент вместо прежней строковой структуры пользовательских данных stringarray. Это на 35% медленнее, чем предыдущая версия, но удаление структуры stringarray было более важным.
- `strings.include` разбился, если был вызван с 0 как второй аргумент. Это было исправлено.
- Прикладной патч Майкла Г. Шверна от 10 мая 2011 года к его вспомогательным функциям даты `32-бит-год 2038-Fix`, используемым пакетами` os` и `xbase` (` Make mktime64 () исправить входящую структуру tm как требуется ISO C).
- Внутренняя оптимизация кода: некоторая инициализация библиотеки и загрузка файлов. C-функции использовали стек для создания путей и строк имен файлов. Новая функция C aux `concat`, написанная Solar Designer, теперь используется во многих случаях.
- API Agena C теперь на 100% совместим с API Lua C, чтобы облегчить перенос пакетов C Lua в Agena.
- Таким образом, следующие функции были переименованы: lua_isnumber - & gt; agn_isnumber, lua_isstring - & gt; agn_isstring, luaL_optnumber - & gt; agnL_optnumber, luaL_checknumber - & gt; agnL_checknumber, luaL_optnumber - & gt; agnL_optnumber, luaL_checkinteger - & gt; agnL_checkinteger, luaL_optinteger - & gt; agnL_optinteger.
- Следующие макросы были переименованы: luaL_checkint - & gt; agnL_checkint, luaL_optint - & gt; agnL_optint.
- В отличие от прежней реализации Agena, lua_tonumber теперь возвращает 0, как в Lua, в случае, если не число было передано, вместо возврата HUGE_VAL.
- lua_setglobal2 удален. Вместо этого используйте lua_pushvalue и lua_setglobal.
Что нового в версии 1.4.2:
- Если в списке параметров процедуры определены определенные пользователем типы, в
- Процедурные вызовы не выдавались, и процедура выполнялась вместо этого, в следующих случаях:
- a) таблица, набор, последовательность, пара или процедура - без определения пользователем
- type - прошло,
- b) для данного параметра не передано никакого значения.
Что нового в версии 1.4.1:
- Сокращенные имена для `stats.quartiles` и` stats.mode` не могут быть назначены функцией `with`. Это было исправлено.
- Ошибочно, `with` не может назначить короткое имя для` gdi.settriangle`. Это было изменено.
- Улучшена обработка ошибок «calc.polygen».
- Улучшено сообщение об ошибке `fractals.draw` для отсутствующих файлов карты FRACTINT.
- Удалена устаревшая функция `strings.rseek`. Для обратной совместимости в файл lib / compat.agn добавлен `strings.seek`.
- Добавлен ключ -d для печати информации отладки при запуске интерпретатора.
- Версия Agena для Windows теперь скомпилирована с помощью GCC 4.5.2.
- Обновлены файлы языковых схем.
- Руководство обновлено.
Что нового в версии 1.4.0:
- Семантические изменения:
- Контрольные переменные цикла с числовыми циклами `for / to` теперь автоматически локальны для окружающих их блоков, а не для их (внутренних) циклов. Если локальная переменная с тем же именем, что и переменная управления контуром, была объявлена и назначена до
- выполнение числового цикла, оно перезаписывается последним значением итерации цикла. Таким образом, «внешний» переключатель в числовых циклах `for` больше не принимается. (С GCC используйте переключатель -DCOMPAT13 для компиляции версии Agena, которая все еще распознает, но игнорирует ключевое слово `external`.)
- С константой `fail`,` not` возвращается `true`, но с` fail`, назначенной переменной, `not` возвращает false. Это было изменено, то есть «a: = fail; not (a) 'теперь возвращает `true`.
- `stats.median` теперь возвращает` fail` вместо 0, если данная структура пуста.
- `utils.readcsv`: если одно пробел передается с опцией` delim`, и если параметр `ignorespaces 'не был задан, пробелы больше не удаляются автоматически до разделения каждой строки файла на его слова.
- Функция также имеет две новые опции: `header`, которая помещает первую строку в файле и` output`, которая позволяет хранить содержимое файла в словаре с его именами полей, определяемыми заголовком файла.
- Обозначение подстроки `$` больше не поддерживается. (С GCC используйте переключатель DCOMPAT13 для компиляции версии Agena, которая все еще поддерживает оператор `$`.)
- Расширения:
- Добавлены бесконечные do / od петли. Этот тип цикла бесконечно итерируется и может быть прерван только с помощью команд `break` или` return`. Это синтаксический сахар для `while true do ... od` loops.
- С таблицами `stats.minmax` ранее работал только с массивами. Это было изменено, то есть значения с соответствующими неположительными ключами (например, строки, неположительные целые числа, отрицательные и положительные поплавки и т. Д.) Теперь должным образом распознаются при оценке.
- `stats.mean`,` stats.qmean`, `stats.sd` и` stats.var` теперь также обрабатывают последовательности.
- Новая функция `stats.mode` возвращает все значения в последовательности или таблице с наибольшим количеством вхождений, то есть самой высокой частотой.
- Новая функция `stats.quartiles` возвращает первый, второй и третий квартили таблицы или последовательности _sorted_.
- Раньше недокументированные функции `linalg.matrix` были добавлены в руководство и улучшена обработка ошибок.
- Улучшена обработка ошибок `linalg.hilbert`.
- `gdi.setinfo` теперь принимает параметр` square`. Если `square = false`, то оси x и y не будут иметь одинаковую шкалу на графиках, созданных с помощью` gdi.plot`.
- Функция `gdi.plot` для рисования графики, к сожалению, не была документирована. Это было изменено.
- `gdi.plot` принимает две новые опции: опция« x »указывает горизонтальный диапазон, по которому отображается график, а опция« y »указывает вертикальный диапазон.
- Если структура PLOT передается в `gdi.plot`, который содержит только POINT, LINES, RECTANGLES, TRIANGLE, CIRCLE и ELLIPSE (включая их * FILLED варианты), то` gdi.plot` автоматически определяет масштабы (` gdi.setinfo` необязательно нужно вызывать).
- Функции OOP, унаследованные от Lua, теперь задокументированы в Приложении A9. Автор не рекомендует объектно-ориентированное программирование.
- Настройка:
- Настроенный `заполненный` оператор примерно на 3%.
- Tweaked `in`,` join`, `sadd`,` qsadd`, `replace`,` copy`, `unique` и Cantor устанавливают операторы на таблицах и устанавливают бит.
- С таблицами операторы `top` и` bottom` теперь быстрее на 5%.
- Оператор `size` не менее 8% быстрее, если таблица не содержит нулей.
- `linalg.mzip`,` linalg.mmul` и `linalg.transpose` были настроены примерно на 3% каждый.
- Числовые для / для циклов с дробными размерами шага были оптимизированы за счет уменьшения количества их управляющих переменных наполовину. Это, однако, не достигло какого-либо увеличения скорости.
- Патчи:
- Исправлено `linalg.ludecomp` для обнаружения сингулярных матриц. Кроме того, функция теперь может автоматически определять порядок данной матрицы.
- В отличие от руководства, `gdi.plot` автоматически не определял горизонтальные и вертикальные диапазоны. Это было исправлено.
- `gdi.plot` больше не игнорирует опцию` square`, заданную `gdi.setinfo`.
- `gdi.setinfo` добавляет настройки в структуры INFO, даже если они уже присутствуют. Это было изменено.
- Круги были неправильно построены `gdi.plot`. Это было изменено.
- Функция `gdi.plot` в большинстве случаев игнорирует индивидуальную окраску геометрических объектов. Это было изменено.
- В пакете gdi не были заданы короткие имена для `gdi.settriangle`,` gdi.settrianglefilled`, `gdi.setrectangle` и` gdi.setrectanglefilled`. Это было изменено.
- Пакет фракталов не присваивал короткие имена для функций пользовательского типа «esctime». Это было изменено. Исправлено сообщение об ошибке `fractals.draw`, если позиционные аргументы не были номерами.
- Разное:
- Функциональность `calc.fseq` была объединена с` nseq`. Для обратной совместимости `calc.fseq` по-прежнему является частью пакета calc, но функция фактически ссылается на реализацию` nseq`.
- Добавлена переменная `environ.FractScreenUpdates` в пакет фракталов для обозначения количества вертикальных линий (неотрицательное целое число), после чего фрактал будет обновляться в окне. Переменная `environment.FractOptimized` устарела.
- Вспомогательные функции gdi были перегруппированы.
Что нового в версии 1.3.3:
- Патчи к `instr`:
- Когда в режиме регулярного выражения оператор возвращает неверный результат, если задана начальная позиция.
- В режиме обычного поиска оператор возвратил ошибку вне диапазона, если начальная позиция не указана.
- За исключением режима обратного поиска, если совпадение не найдено, первый аргумент был возвращен вместо `null`.
- Исправлено сообщение об ошибке оператора `create` относительно последовательностей.
- В AgenaEdit при выпуске более одной структуры с одним вызовом `print` структуры не были напечатаны в полной форме, если первая структура показала метатет __tostring. Это было изменено.
Что нового в версии 1.3.2:
- Этот выпуск содержит исправления ошибок, расширения и улучшенное руководство:
- `dimension` создал интересные результаты, если структура была передана как
- инициализатора. Это было изменено: `dimension` теперь создает независимые копии
- при инициализации таблицы.
- Функциональность `strings.rseek` добавлена в оператор` instr`.
- Таким образом, `strings.rseek` устарел. Для обратной совместимости
- `strings.rseek` добавлен в файл lib / compat.agn.
- `strings.hits` теперь поддерживает регулярные выражения и захваты. Это поведение
- можно отключить, передав логическое значение в качестве третьего аргумента.
- `strings.isabbrev` и` strings.isending` теперь автоматически используют простой поиск
- Если никакие регулярные выражения или захваты не были переданы как часть второго
- аргумент.
- Tweaked `strings.ismagic` и` strings.isfloat`.
- Функция `log` теперь на 13% быстрее.
- При выводе нескольких структур с одним вызовом `print`,
- не были напечатаны в полной форме, если первая структура показала __tostring
- Добавлены категории функций в Главу 7, чтобы облегчить запуск для нового
- пользователей.
Структуры
<Литий> Метаметод. Это было изменено.
Что нового в версии 1.3.1:
- Были проблемы с вложенными вызовами следующих двоичных операторов: `xor`,` atendof`, `& amp; & amp;`, `||`, `^^`, `::` и `: - `, и, следовательно, также с красивым принтером, который выходит с ошибкой при печати вложенных структур. Это было исправлено.
- Четыре исправления для `os.list`: если опция 'r' была передана, текущий рабочий каталог был ошибочно изменен после завершения вызова.
- Если 'r' не был передан в качестве последнего аргумента, функция выдала ошибку.
- `null` не был принят в качестве первого аргумента для обозначения текущего рабочего каталога.
- В Windows 7 печать содержимого корневого каталога не работала, т. е. os.list ('c:') вернул содержимое текущего рабочего каталога.
- Когда строка была проиндексирована с не-номером, например. "str [null]", Agena вернула `null`. Теперь возникает ошибка.
- Если library.agn не найден, в предупреждении дважды выводится неверный путь. Это было изменено.
Что нового в версии 1.2:
- Оператор substring был переработан, но старая версия будет доступна до Agena 2.0: новая: `str [слева направо]`, старая была: `str $ (слева, справа)` , Пример: before: `str: = 'string'; print (str $ (2, 3)) `- & gt; 'tr' теперь: `str: = 'string'; print (str [от 2 до 3]) `- & gt; 'Тр'
- Теперь вы можете определить подсписок массивов таблиц и последовательностей с новым упомянутым выше синтаксисом: `s [слева направо]`. Пример: теперь: `a: = [10, 20, 30, 40]; print (a [от 2 до 3]) `- & gt; [20, 30] теперь: `a: = seq (10, 20, 30, 40); print (a [от 2 до 3]) `- & gt; seq (20, 30)
- Теперь функция `ops` позволяет указать возвращаемые значения, передавая последовательность своих позиций в качестве первого аргумента, например. ops (seq (1, -1), 10, 20,
- Новая функция `strings.include` вставляет последовательность символов в строку
- в данной позиции.
- Следующие функции теперь выдает ошибку вместо того, чтобы просто возвращать `fail` в
- случай сбоя: `os.remove`,` os.move`, `os.mkdir`,` os.rmdir`, `os.chdir`.
- Усовершенствования следующих операторов, работающих над наборами и последовательностями, относящимися к сборке мусора: `insert` statement,` union`, `intersection`,` minus`, `unique`,` copy`, `pop / top` и `pop / bottom`, и назначить назначения.
- Улучшено сообщение об ошибке `fractals.draw`, если файл цветной карты FRACTINT не имеет
- не найден.
<Литий> 30).
Что нового в версии 1.1.0:
- Этот выпуск содержит новые функции и очищенное пространство имен.
- Совместимость с Agena 1.0:
- Некоторые функции были удалены из Agena, а некоторые из них были преобразованы в функции пакета (см. ниже). Если вы все еще хотите их использовать, выпустите readlib 'compat' в командной строке или поместите вышеуказанный оператор в ваш файл инициализации, если вы предпочитаете обратную совместимость с Agena 1.0.
- Расширенная функциональность:
- Операторы `pop / top` и` pop / bottom` и `bottom` и` top` теперь могут также применяться к массивам таблиц.
- Когда вызывается с аргументами «null» или «no», `os.chdir` больше не выдает ошибку, а возвращает текущий рабочий каталог. Таким образом, прежняя функция `os.curdir` C была заменена на одну, написанную на языке Agena.
- `os.list` теперь рекурсивно перемещает подпапки, если задана новая опция 'r'.
- Теперь оператор `join` также принимает необязательный разделитель и поддерживает возможность указывать первый и последний элементы структуры, которые будут конкатенированы.
- `instr` теперь может искать из правого конца строки, передавая отрицательную позицию.
- Если таблица содержит другие таблицы, наборы, последовательности или пары, `copy` теперь знает, как правильно обрабатывать эти ссылки, если они встречаются несколько раз: если встроенная структура включена n раз, создается одна реальная копия и Вставляются ссылки n-1 на эту вновь создаваемую структуру. До этого были сделаны n независимых копий.
- Новая функция `isnonposint` проверяет, являются ли заданные числа целыми и неположительными.
- `io.close` теперь может закрыть несколько файлов только с одним вызовом.
- Функция `with` не присваивала короткие имена для следующих процедур пакета` math`: `convertbase`,` fraction`, `zeroin`,` todecimal`, `lcm`,` gcd` и ` ndigits`. Это было исправлено.
- Функция `rwritemode`, упомянутая в руководстве, не существовала. Теперь он доступен, но называется `rmode`.
- Улучшены сообщения об ошибках различных функций.
- Очистка пространства имен: переименованные или перемещенные функции:
- Функции базы данных `register` и` loadclib` были перенесены в библиотеку `package`.
- Бывшие функции базовой библиотеки `rdelete`,` rget`, `rinit`,` roinit`, `rmode`,` rset`, `remember` и` defaults` были перенесены в новый пакет `rtable` .
- Переименовал глобальную таблицу _Env в `environ`, которая теперь также содержит процедуры для доступа к среде.
- Бывшие глобальные переменные окружения `homedir` и` infolevel` были переименованы в `environ.homedir` и` environ.infolevel` соответственно.
- Следующие предыдущие функции базовой библиотеки были перенесены в пакет `environ`:` anames`, `attrib`,` gc`, `getfenv`,` globals`, `isselfref`,` pointer`, `setfenv` , `used`,` userinfo`, `__RESTART`,` __DOTTYPRINT`.
- `mapm.xtoNumber` был переименован в` mapm.xtonumber`, `mapm.xtoString` был переименован в` mapm.xtostring`. Для обратной совместимости старые имена функций все еще можно использовать, выполняя файл lib / compat.agn (сначала прочтитеlmib `mapm`, а затем загрузите файл compat.agn).
- Устаревшие функции и переменные:
- `strings.seek` устарел. Его функциональность была добавлена в оператор `instr`. Чтобы отключить режим сопоставления шаблонов «instr», пропустите начало поиска как третье, а «истинный» - в качестве четвертого аргумента. `instr` примерно на 40% быстрее в режиме сопоставления без шаблонов, чем` strings.seek`. Для обратной совместимости в файл lib / compat.agn добавлен `strings.seek`.
- Функция библиотеки `concat` была удалена. Вместо этого используйте `join`. Для обратной совместимости предыдущая функция была добавлена в файл lib / compat.agn.
- Функции `hasrtable` и` hasrotable` были удалены. Для обратной совместимости они были добавлены в файл lib / compat.agn.
- Функция `pcall` устарела. Вместо этого используйте `protect`. Для обратной совместимости функция была добавлена в файл lib / compat.agn.
- Функция «maptoset» устарела. Для обратной совместимости функция была добавлена в файл lib / compat.agn.
- Функция `os.alldirs` устарела. Используйте опции «dirs» и «r» в вызове `os.list` вместо этого. Для обратной совместимости функция была добавлена в файл lib / compat.agn.
- `os.isMac`,` os.isSolaris`, `os.isLinux`,` os.isWin`, `os.isOS2`,` os.isDOS`, `os.isHaiku` устарели. Вместо этого используйте вместо этого новые переменные среды environ.Os и environment.Cpu, что также ускоряет работу кода. Для обратной совместимости функции были добавлены в файл lib / compat.agn.
- Недокументированная переменная _VERSION удалена. Для обратной совместимости его назначение было добавлено в файл lib / compat.agn.
- Другие изменения:
- Функция API C API lua_rawsetstringnumber, упомянутая в руководстве, не существует. Это было изменено.
- Оптимизация кода для анализатора.
- В некоторых пакетах случайно несколько переменных были объявлены неявно глобальными. Это было исправлено.
- Исправлены и обновлены файлы примеров инициализации.
- Обновлен AgenaEdit.
- Обновлены файлы языковых схем.
- Установщики Linux теперь включают пакет xBase.
Что нового в версии 1.0.6:
- Улучшены сообщения об ошибках операторов `join`,` copy` и `filled`,` toset`, `toseq` и` totable` функций `операторов` insert`, `delete`,` pop`, и циклов `for`.
- С последовательностями Agena разбилась в следующей последовательности событий: 1) была выполнена инструкция `delete`, 2) последовательность therafter была пуста и 3) новый элемент был вставлен снова. Это было исправлено. (Внутренне оператор `delete` больше не внутренне уменьшает размер последовательности больше.)
- С большими строками `concat` разбился. Это было исправлено.
- С строками из 512 и более байтов может произойти сбой «join» и «replace». Это было исправлено. Эти два оператора теперь также намного быстрее, чем когда-либо прежде.
- `math.isprime` возвращает неверные результаты с аргументами & gt; 2 ^ 31 (смутно указано в руководстве). Это было исправлено путем расширения диапазона аргументов до целых чисел со значениями до +/- 2 ^ 63.
- `math.nextprime` и` math.prevprime` имели ту же проблему с более крупными аргументами, такими как `math.isprime`. Это также было изменено. С аргументом 2 `io.nextprime` ложно вернул 5 вместо 3. Это также было исправлено.
Что нового в версии 1.0.5:
- `join` может свернуть Agena и в противном случае вести себя непредсказуемо, если результирующая строка
- превышено 512 байт. Это было изменено.
- Если `restart` был вызван после того, как ошибка была выпущена в предыдущем
- , Ажена в редких случаях рушилась из-за коррупции в стеках. Это было
- исправлена.
- С новыми созданными таблицами, содержащими ровно один элемент хэш-части, `attrib`
- теперь возвращает правильные результаты для количества выделенных хеш-слотов (1 вместо 0).
- Исправлены сообщения об ошибках `qsadd` и` sadd`.
- Улучшены сообщения об ошибках операторов `join`,` copy` и `filled` и` insert`
- и `delete`.
- Улучшена обработка ошибок `read`,` save` и `fractals.draw`.
- Усовершенствования make-файлов.
- Размеры буферов теперь стандартизованы в источниках.
Что нового в версии 1.0.4:
- Так как во время инициализации были зарегистрированы редкие сбои (в некоторых случаях Windows XP SP 3 и OpenSolaris 134), сбор мусора теперь отключается на этапе инициализации. Эти редкие ошибки сегментации произошли в OpenSolaris при запуске двоичного файла Agena в его укрывающемся каталоге с правами root, а в XP при нажатии на значок рабочего стола Agena с правами локального администратора.
- Введен ключ -d в параметры командной строки для печати информации во время инициализации Agena.
- Введена правильная обработка ошибок, если память не может быть внутренне выделена: `trim`,` upper`, `lower`,` os.curdir` и `strings.rseek`.
- Удалены потенциальные утечки памяти в функциях инициализации C agenaL_initialise и agenaL_setLibname, а также в `io.write *` и `print`.
Что нового в версии 1.0.3:
- Новая функция `protect` вызывает процедуру в защищенном режиме и выхватывает любую возможную ошибку, чтобы вычисление не прерывалось. В случае ошибки он устанавливает строку ошибки в глобальную переменную `lasterror`. Это связано с `pcall`, но не возвращает код состояния в качестве первого результата.
- `attrib` теперь возвращает правильные результаты с пустыми структурами. С пустыми структурами функция неправильно подсчитала один назначенный элемент хэша раньше.
- `attrib` теперь возвращает количество байтов, занятых таблицами, наборами и последовательностями, а также новый ключ« байтов ». Количество возвращенных байтов основано на иногда противоречивой информации, доступной в сети.
- `replace` разбил Agena, если итоговая строка превысила 512 байт. Это было изменено.
- `accept` теперь возвращает 'Assumption failed.' вместо «предположения не удались».
- Новая функция C API lua_setglobal2 устанавливает значение в верхней части стека глобальному имени. В отличие от lua_setglobal, значение не выставляется.
- Очистка кода lobject.h (Структура таблицы) и lapi.c (actnodesize macro). Функция Bugfix to C API agn_deletertable в случае, если Agena скомпилирована с не-void lua_assert. Измените на возвращаемое значение функции savestate, которая используется во время инициализации, чтобы предотвратить (небольшую) вероятность повреждения стека.
Что нового в версии 1.0.2:
- Новая процедура `os.setenv` устанавливает переменные среды на уровне операционной системы. Функция первоначально была написана Марком Эдгаром.
- В Windows `os.getenv` теперь вызывает собственную функцию Windows API, чтобы получить значения переменных среды. Код Windows написан Марк Эдгар.
- Новая функция os.environ возвращает все назначенные переменные среды в таблице. Функция первоначально была написана Марком Эдгаром.
- `io.open` теперь добавляет указатель FILE, имя и режим успешно открытого файла в новую таблицу` io.openfiles`. `io.close` удаляет запись из` io.openfiles`, если файл может быть успешно закрыт.
- При вызове без аргументов `io.read` теперь возвращает ошибку, если вызвано без аргументов в AgenaEdit (в попытке прочитать клавиатуру).
- Если в AgenaEdit вызывается `io.anykey` и` io.getkey`, отображается соответствующее сообщение об ошибке.
- Одна из инициализаций инициализации была изменена, чтобы избежать возможного повреждения стека (хотя проблем никогда не было).
- os.isMac ('ppc') теперь работает на машинах PowerPC.
- Главы 4 и 6 руководства и справочника были пересмотрены и расширены. Был добавлен индекс и сделано много косметики.
- Сохраненная правильная информация о версии для исполняемого файла Windows.
Что нового в версии 1.0:
- Уважаемые дамы и господа,
- после почти четырех лет разработки я опубликовал Agena 1.0, язык процедурного программирования, полученный из источников Lua C.
- Мое сообщество на самом деле очень, очень мало, но некоторые пользователи сказали мне, что это было прекрасно, полезно и стабильно.
- Я был бы очень рад, если бы вы просмотрели Agena и сообщили мне о ваших результатах. Если вы не сочтете это полезным, сообщите мне лично и дайте мне возможность исправить проблемы.
Что нового в версии 0.34.1d:
- Эта версия включает обновленную версию графического интерфейса AgenaEdit (см. исполняемый файл agenaedit).
Что нового в версии 0.34.1:
- AgenaEdit с подсветкой синтаксиса и встроенным механизмом времени исполнения был выпущен с Agena 0.34.1.
Что нового в версии 0.34.0:
- AgenaEdit с подсветкой синтаксиса и встроенным механизмом выполнения был выпущен с Agena 0.34.0.
Что нового в версии 0.33.2:
- Вышла версия Agena 0.33.2 с поддержкой файла xBase.
Что нового в версии 0.33.1:
- Вышла версия Agena 0.33.1 с поддержкой файла xBase.
Что нового в версии 0.33.0:
- Новый пакет `xbase` может читать и записывать файлы xBase, совместимые со стандартом dBASE III.
- Пакеты `binio` и` ads` теперь могут обрабатывать файлы длиной до 2 ^ 63 байта. Прежде чем они смогут обрабатывать только файлы размером до 2 ^ 31 байт.
- Новые функции `io.lock`,` io.unlock`, `binio.lock`,` binio.unlock`, `ads.lock` и` ads.unlock` блокируют файл от доступа для чтения и записи другое Agena
- или даже другие приложения, если последние используют протокол блокировки.
- Функция baselib `read` больше не может быть перезаписана` with`.
- Новый `package.checkClib` проверяет, был ли инициализирован пакет, хранящийся в динамической библиотеке C. Если нет, он возвращает предупреждение, напечатанное на экране, и создает пустую таблицу пакетов. В противном случае он ничего не делает.
- Порт Haiku теперь поддерживает динамические библиотеки ссылок.
Что нового в версии 0.32.3:
- Вышла версия Agena 0.32.3 с новыми и настроенными функциями Calculus.
- Пользователям Mac больше не нужно устанавливать дополнительные библиотеки зависимостей.
- Теперь доступен порт Haiku.
Что нового в версии 0.31.5:
- Эта версия содержит встроенную графику, произвольную математику точности и улучшенные функции.
Что нового в версии 0.31.3:
- Добавлен пакет фракталов, чтобы легко рисовать фракталы в Solaris, Mac, Linux и Windows.
- В Solaris и Linux `gdi.mouse` теперь возвращает стандартные значения для нажатых кнопок мыши (то же самое, что и в версиях Mac и Windows).
- Когда задана опция -v, Agena теперь больше не выполняет файлы инициализации.
- В UNIX или Mac имена файлов инициализации всегда должны быть `.agenainit`, независимо от того, находятся ли они в / usr / agena / lib или в личной папке.
- Бинарный дистрибутив Mac для процессоров Intel работает на 30% быстрее, чем предыдущие версии.
- Функция `io.getkey` теперь доступна в версии Mac OS X.
- В Mac теперь `os.system` возвращает полную информацию о операционной системе и типе CPU. Обратите внимание, что он возвращает информацию о ядре Дарвина и что первая запись в результирующей таблице теперь является «Дарвином», а не «MacOSX».
- `os.memstate`,` os.freemem` и `os.beep` теперь поддерживают Mac OS X.
- `io.anykey` доступен на всех платформах, но возвращает` fail` на DOS и Mac. Таким образом, `gdi.draw` больше не будет вызывать ошибки на Mac при использовании опции` mouse`.
- `os.listcore` был расширен, чтобы возвращать только имена файлов, каталогов или ссылок. '' и «..» теперь не возвращаются.
- `os.list` не распознал никаких параметров и вместо этого вернул пустой список. Это было исправлено. Кроме того, теперь параметры можно комбинировать. '' и '..', поскольку первый аргумент теперь правильно распознан.
- `os.curdir` теперь автоматически заменяет обратную косую черту в пути, определенном с помощью косой черты.
- `os.fstat` и` ads.attrib` разбил Agena, если дата файла превысила вторник, 19 января 2038 года. Это было исправлено путем возврата пустой таблицы для ключа даты (os.fstat), или 0/0/01 00:00:00, (ads.attrib).
- `utils.calendar` разбил Agena, если его аргумент был недействительным, отрицательным или слишком большим. Это было изменено. Кроме того, если дата не во вторник, 19 января 2038 года, возвращается правильная дата.
- Новые функции `os.screensize` и` os.mousebuttons` возвращают текущее разрешение экрана и количество кнопок прикрепленной мыши, соответственно (только для Windows).
- Файл agena.ini.sample был переименован в .agenainit.sample в дистрибутивах UNIX / Mac.
- Новый make-файл для Solaris теперь отправляется с привязкой mapma Agena для полной компиляции исходных источников MAPM, написанных Michael C. Ring.
Что нового в версии 0.31.2:
- Пакет mapm для математической точности арбитража теперь также доступен в версии DOS для Agena.
- Количество цифр, используемых пакетом mapm, инициализируется до 17 цифр при запуске Agena для DOS или OS / 2 Warp. Ранее значение по умолчанию было 1 цифрой.
- Код C для привязки MAPM стандартизирован. Ранее исходные файлы DOS и OS / 2 отличались от исходных файлов для UNIX и Windows.
- Небольшие улучшения для установщиков Windows и Mac OS X.
- В Mac документация теперь доступна в библиотеке / документации / Agena вместо / Users / Share / Agena.
- Функции sin, cos, arcsin, arccos и arctan вернули -0 вместо 0 как мнимую единицу, что привело к неправильным результатам, если возврат этих функций был применен к другим функциям, таким как ln (т. е. знак мнимой единицы результата этих других функций было неверным). Это было исправлено установкой мнимой единицы от -0 до 0 при возврате sin, cos, arcsin, arccos и arctan.
- Функции arcsin и arccos возвращают неверные результаты для аргументов z, если abs (real ((z))) & lt; 1. Это было исправлено.
- В OS / 2 наиболее сложные арифметические функции возвращены неопределенными. Это было исправлено.
- Обратите внимание, что в OS / 2 и DOS в сложной области все еще остаются проблемы с операторами arccos и arcsin, которые возвращаются в определенных ситуациях неопределенными.
- Теперь версии Windows, i386 Solaris 10 и Linux были скомпилированы с помощью GCC 4.4.x (и без xmath86.h), что значительно уменьшило количество ошибок в сложной арифметике. На самом деле сложные сложные математические тесты возвращают нулевые ошибки. Версия Sparc была скомпилирована с GCC 4.3.3 для Sun Sparc и имеет меньше ошибок в сложной арифметике чисел, чем версия 0.31.1.
- Переименовали следующие файлы include: config.h - & gt; agncfg.h, chelpers.h - & gt; agnhlps.h, agnxlib.h - & gt; agnxlib.h.
- В Mac gdi.mouse теперь возвращает стандартные значения нажатых кнопок мыши.
Что нового в версии 0.31.1:
- Agena 0.31 включает в себя все основные инструменты для построения точек, линий, кругов, эллипсов, прямоугольников, дуг. и т. д., чтобы контролировать размер изображения и цвета.
Что нового в версии 0.31.0:
- Выпущена версия согласования языка с исправлением ошибки. См. Журнал изменений для того, что изменилось.
Что нового в версии 0.30.4:
- Теперь Agena имеет встроенную графику. Это позволит вам строить графики, изображения и т. Д. В окнах X11 или Win32 или в файлах GIF, PNG, JPEG, FIG или PostScript, как в Solaris, Linux, так и в Windows. Agena связывается с графической библиотекой g2, написанной Любомиром Милановичем и Хорстом Вагнером, для предоставления этих новых возможностей.
- Agena 0.30 включает в себя все основные инструменты для построения точек, линий, кругов, эллипсов, прямоугольников, дуг. и т. д., чтобы контролировать размер изображения и цвета.
- gdi package v0.1.4 от 20 декабря 2009 г.
- arc, arcfilled, background, circle, roundfilled, clearpalette, close, тире, эллипс, эллипс заполненный, флеш, шрифт, initpalette, чернила, lastaccessed, line, newline, newpoint, open, plot, plotfn, point, rectangle, rectanglefilled , сброс, resetpalette, setinfo, setoptions, структура, текст, толщина, треугольник, trianglefilled, useink
- Функция plotfn рисует один или несколько графиков функций в одном реальном, необязательно вместе с осями, построенными в определенном пользователем цвете. Также может быть задан диапазон для оси y, иначе Agena определяет наилучшую настройку. Существуют различные другие параметры, которые могут быть установлены с помощью функции setoptions и которые будут применяться ко всем графикам, созданным в сеансе: разрешение окна, цветная карта, толщина линии и цвет фона. Конечно, пользователь может переопределить некоторые или все параметры для определенного графика. Особенности должным образом рассматриваются.
<Литий> & GT; с 'gdi';
Что нового в версии 0.30.3:
- Вышла версия Agena 0.30.3 со встроенной графикой, произвольной математикой точности и улучшенными функциями.
Что нового в версии 0.30.2:
- Теперь Agena имеет встроенную графику. Это позволит вам строить графики, изображения и т. Д. В окнах X11 или Win32 или в файлах GIF, PNG, JPEG, FIG или PostScript, как в Solaris, Linux, так и в Windows. Agena связывается с графической библиотекой g2, написанной Любомиром Милановичем и Хорстом Вагнером, для предоставления этих новых возможностей.
- Agena 0.30 включает в себя все основные инструменты для построения точек, линий, кругов, эллипсов, прямоугольников, дуг. и т. д., чтобы контролировать размер изображения и цвета.
- gdi package v0.1.4 от 20 декабря 2009 г.
- arc, arcfilled, background, circle, roundfilled, clearpalette, close, тире, эллипс, эллипс заполненный, флеш, шрифт, initpalette, чернила, lastaccessed, line, newline, newpoint, open, plot, plotfn, point, rectangle, rectanglefilled , сброс, resetpalette, setinfo, setoptions, структура, текст, толщина, треугольник, trianglefilled, useink
- Функция plotfn рисует один или несколько графиков функций в одном реальном, необязательно вместе с осями, построенными в определенном пользователем цвете. Также может быть задан диапазон для оси y, иначе Agena определяет наилучшую настройку. Существуют различные другие параметры, которые могут быть установлены с помощью функции setoptions и которые будут применяться ко всем графикам, созданным в сеансе: разрешение окна, цветная карта, толщина линии и цвет фона. Конечно, пользователь может переопределить некоторые или все параметры для определенного графика. Особенности должным образом рассматриваются.
<Литий> & GT; с 'gdi';
Что нового в версии 0.29.0:
- Теперь Agena имеет встроенную графику. Это позволит вам отображать графики, изображения и т. Д. В окне или в файле GIF, PNG, JPEG, FIG или PostScript в Solaris, Linux и Windows путем включения привязки к графической библиотеке g2, написанной Любомиром Милановичем и Хорст Вагнер.
- Agena 0.29.0 содержит все основные инструменты для построения точек, линий, кругов, эллипсов, прямоугольников, дуг. и т. д., чтобы управлять цветом, а также создавать файлы изображений или открывать окна X11 или Win32.
- В одном из ближайших обновлений пользовательский интерфейс высокого уровня, содержащий функции gdi.plotfn и gdi.plot, позволяет вам отображать одномерные функции и наборы точек «на лету». Две функции уже включены в Agena 0.29.0, но все еще остаются бета-версиями. Вот предварительный просмотр:
- gdi package v0.1.0 от 24 ноября 2009 г.
- arc, background, circle, clearpalette, close, тире, эллипс, fillArc, fillCircle, fillEllipse, fillRectangle,
- fillTriangle, flush, fontsize, initpalette, ink, lastaccessed, line, open, plot, plotfn, point, rectangle, reset,
- resetpalette, setinfo, setoptions, структура, текст, толщина, треугольник, useink
- Функция plotfn рисует график функции в одном реальном, необязательно вместе с осями, построенными в определенном пользователем цвете. Также может быть задан диапазон для оси y, иначе Agena пытается определить наилучшую настройку. Существуют различные другие параметры, которые могут быть установлены с помощью функции setoptions и которые будут применяться ко всем графикам, созданным в сеансе: разрешение окна, цветная карта, толщина линии и цвет фона. Конечно, пользователь может переопределить некоторые или все параметры для определенного графика. Особенности должным образом рассматриваются.
- plotfn (sin (x) * x & gt ;, -5, 5, color ~ 'blue', axiscolour ~ 'gray', res ~ 640: 480);
<Литий> & GT; с 'gdi';
Что нового в версии 0.27.2:
- Новая функция baselib toSet преобразует строку в набор ее символов, а также таблицу или последовательность в набор.
- io.readlines исправлена для обработки строк с более чем 2048 символами. Теперь функция также выдает ошибку, если сбой внутренней памяти. Размер внутреннего буфера уменьшен с 2048 байт до 512 байт. Вы можете изменить это, назначив другое значение AGN_IOREADLINES_MAXLINESIZE в файле agnconf.h.
- io.readlines теперь также принимает файлы. При использовании дескрипторов файлов, в отличие от имен файлов, обратите внимание, что вы должны закрыть файл вручную после использования io.readlines.
- io.readlines больше не возвращает пустую таблицу, если файл не существует. Вместо этого он выдает сообщение об ошибке.
- toSeq теперь возвращает ошибку вместо отказа, если она не получает строку, набор или таблицу.
- Используемая функция baselib была расширена и может возвращать использование памяти в байтах, килобайтах и gbytes. Теперь это C-функция.
- Недопустимая функция gcinfo была удалена. Его функциональность была использована при использовании.
- Новая функция C API agn_usedbytes возвращает количество байтов, используемых системой.
- Исправлено неверное сообщение об ошибке toTable.
- переименована функция AOI `agn_isioforcerror` в` agn_isioforceerror`.
Что нового в версии 0.27.0:
- Добавлена функция ошибки math.erf и дополнительная функция ошибки math.erfc.
- Добавлена функция Бесселя первого рода math.besselj и функция Бесселя второго рода math.bessely. Порядок задается первым аргументом, аргументом которого является второй аргумент.
- Если новая переменная среды _EnvIoForceError установлена на ненулевое значение (по умолчанию), то io.open, io.readlines и различные функции binio завершаются с ошибкой вместо обычного возврата.
- binio.readbytes и binio.readchar возвратили пустую последовательность вместо отказа в случае, если файл, который нужно прочитать, не существует. Это было изменено: сбой или ошибка теперь возвращается.
- arcsin и arccos теперь являются операторами и, следовательно, примерно на 40% быстрее.
- Добавлен оператор xor, который выполняет логическое исключение-OR для значений, которые оцениваются как true, false, fail и null.
- Добавлен оператор atendof, который проверяет, заканчивается ли слово в данной фразе и возвращает его позицию в виде числа. Оператор возвращает null, если строки имеют одинаковую длину, по крайней мере одна из них - пустая строка, или слово не заканчивается в данном шаблоне.
- hasrtable теперь возвращает true, если у него есть таблица записи чтения-записи (обновляется оператором return).
- Новая функция hasrotable определяет, имеет ли функция таблицу сохранения только для чтения (которая не может быть обновлена оператором return) и возвращает true или false.
- Новые операторы gethigh и getlow получают верхний и нижний байты от числа (т. е. C double).
- Новые операторы sethigh и setlow устанавливают верхний и нижний байты в число (т. е. C double).
- Новые диапазоны операторов, bor, bxor и bnot ведут побитовые и / или эксклюзивные или дополнительные операции над числами.
- Новая функция `kernel` настраивает настройки ядра Agena. В настоящее время он может изменить способ работы побитовых операторов (использование подписанных или беззнаковых целых чисел) и как печатаются числа.
- При действительных числах x, math.argument теперь возвращает Pi вместо 0, если x & lt; 0.
- Из-за ошибки в базовых библиотечных функциях ANSI C arcsin и arccos произвели неправильные результаты со сложными числами, если их мнимая часть была нулевой в системах UNIX. Это было исправлено.
- math.isPrime сообщает false с номером 2. Это было исправлено.
- В отличие от руководства, abs возвратил 2 с ошибкой. Теперь он возвращает -1 как задокументированный.
- Пакет бит удален.
- Добавлена новая функция C API agn_isioforcerror, которая проверяет, установлено ли значение _EnvIoForceError для значения, отличного от нуля.
- Новая функция API C agn_setbitwise определяет, будут ли операторы band, bor, bnot, bxor и shift внутренне вычислять с помощью либо подписанных, либо беззнаковых целых чисел.
- Новая функция C API agn_getbitwise возвращает режим, заданный agn_setbitwise.
- Новая функция C API agn_setdigits устанавливает количество цифр, используемых для печати чисел.
- Новая функция C API agn_getdigits определяет количество цифр, используемых для печати чисел.
- Внутренний: удалена устаревшая запись «REPL» из luaP_opnames.
- Установщик Windows был усовершенствован, теперь проверяет ранее установленную версию Agena, предотвращая запуск установщика, если другой экземпляр уже запущен, а также некоторые другие небольшие улучшения.
Требования
- Ncurses
- GNU Readline
Комментарии не найдены