Agena

Скриншот программы:
Agena
Детали программы:
Версия: 2.11.5 обновление
Дата загрузки: 22 Jun 18
Разработчик: Alexander Walz
Тип распространения: Бесплатная
Популярность: 23

Rating: nan/5 (Total Votes: 0)

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` должно быть опущено:

  • <Литий> & GT; попробовать
    <Литий> & GT; error ('oops!')
    <Литий> & GT; поймать
    <Литий> & GT; печать (LastError)
    <Литий> & GT; YRT;
  • 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` в отношении обработки ошибок.

Что нового в версии 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`. В сущности, оба варианта выполняют цикл хотя бы один раз, пока не будет проверено данное условие.
  • Примеры:

  • <Литий> & GT; для i до 5 do
    <Литий> & GT; печать (я)
    <Литий> & GT; как i & lt; 3
    <Литий> & GT; для i в [1, 2, 3, 4, 5] do
    <Литий> & GT; печать (я)
    <Литий> & GT; пока i & gt; = 3
  • Новый цикл `do / until` повторяется до тех пор, пока не будет выполнено определенное условие:

  • <Литий> & GT; c: = 0;
    <Литий> & GT; сделать
    <Литий> & GT; inc c;
    <Литий> & GT; печать (с)
    <Литий> & GT; до c & gt; = 3
  • В числовых циклах `for` предложение` to` может не передаваться больше. Вместо этого, когда вы не выполняете предложение `to`, цикл повторяется до тех пор, пока не будет достигнуто наибольшее число, представленное на вашей платформе, в C HUGE_VAL:

  • <Литий> & GT; для i do
    <Литий> & GT; печать (я)
    <Литий> & GT; спосо
  • Новый оператор `onsuccess` в операторах` if` и `case` выполняет кусок, если хотя бы одно из условий истинно. Примеры:
    <Литий> & GT; flag: = false;

  • <Литий> & GT; если 1 = 0, то
    <Литий> & GT; печать (0)
    <Литий> & GT; elif 1 = 1, затем
    <Литий> & GT; Печать (1)
    <Литий> & GT; OnSuccess
    <Литий> & GT; flag: = true
    <Литий> & GT; еще
    <Литий> & GT; Печать (-1)
    <Литий> & GT; Fi;
    <Литий> & GT; печать (флаг);
  • True

  • <Литий> & 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; печать (флаг);
  • True
  • Новый оператор `import` позволяет импортировать одну или несколько библиотек, не помещая их имена в кавычки, например. «import calc, stats» эквивалентен «readlib (« calc »,« stats »)».
  • Параметр `alias` оператора` import` присваивает одно или несколько коротких имен инициализированным библиотечным функциям, например. «Импорт псевдонимов calc xpdiff» эквивалентен «с (« calc »,« xpdiff »)», а «import calc alias» эквивалентен «с (« calc »)».
  • Новый оператор `..` позволяет индексировать таблицы, даже если его левый операнд имеет значение« null ». В этом случае возвращается «null» и не выдается `попытка индексировать поле ... (пустое значение)`. Он похож на функцию «getentry», но в три раза быстрее. Примеры:
    <Литий> & GT; создать таблицу a;

  • <Литий> & GT; a.b:
  • NULL

  • <Литий> & GT; A.B.C:
  • Ошибка в stdin, в строке 1:
  • попытка индексировать поле `b` (нулевое значение)

  • <Литий> & GT; a..b..c:
  • NULL

  • <Литий> & GT; создать таблицу a;
    <Литий> & GT; а [1]:
  • NULL

  • <Литий> & GT; а [1] [2]:
  • Ошибка в stdin, в строке 1:
  • попытаться проиндексировать поле `?` (нулевое значение)

  • <Литий> & GT; A .. [1] .. [2]:
  • 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.

Что нового в версии 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,

  • <Литий> 30).
  • Новая функция `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 не имеет
  • не найден.

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

  • <Литий> & GT; с 'gdi';
  • 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 и которые будут применяться ко всем графикам, созданным в сеансе: разрешение окна, цветная карта, толщина линии и цвет фона. Конечно, пользователь может переопределить некоторые или все параметры для определенного графика. Особенности должным образом рассматриваются.

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

  • <Литий> & GT; с 'gdi';
  • 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 и которые будут применяться ко всем графикам, созданным в сеансе: разрешение окна, цветная карта, толщина линии и цвет фона. Конечно, пользователь может переопределить некоторые или все параметры для определенного графика. Особенности должным образом рассматриваются.

Что нового в версии 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, но все еще остаются бета-версиями. Вот предварительный просмотр:

  • <Литий> & GT; с 'gdi';
  • 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);

Что нового в версии 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

Похожие программы

Azure
Azure

3 Jun 15

Adobe Alchemy
Adobe Alchemy

3 Jun 15

Flex
Flex

12 Jul 17

Комментарии к Agena

Комментарии не найдены
добавить комментарий
Включите картинки!