NumeRe v1.1.7 "Chandrasekhar" is available!
Here are the latest updates on the development of NumeRe and anything else that might be relevant to read.
We mainly publish development updates here. Other topics can be found here rather rarely and very irregularly.
Release notes of older releases may be found in the archive.
published: 27.08.225
Today we publish the new version 1.1.7.2508 (ChangesLog) named after the astro physicist Subrahmanyan Chandrasekhar, who caclulated the Chandrasekhar limit of the mass of white dwarfs.
The default UI style has been changed to a more bluish theme. Click on "RESET" for the "UI THEME" within the "Style" tab in the settings dialog to load the new default theme (only if you want to change, of course).
The default icon for files used within the file tree has been changed to appear more neutral
The function zip() combines multiple arrays elementwise into embedded clusters in the returned cluster
The function getuserinfo() will return a key-value list containing user information
The command mail can be used to send e-mails via a SMTP server
The date() function will now also accept strings as its "formatting type" parameter
getfileparts() will now return the host as drive for UNC paths, i.e. "\\MY.SERVER.TDL"
String functions, which convert one input into an array, do now return arrays of clusters (one for each input element). Notable candidates: textparse(), to_value(), split() and all character classifier functions like is_alnum()
Functions for base-n encoding encode_base_n() and decoding decode_base_n() have been added
Structures were added: dictstruct (a structure/dictionary mixture), file (for arbitrary file accesses), path (for all type of paths), queue (FIFO storage) and stack (LIFO storage)
readxml() can import XML files and readjson() can import JSON files (both are imported as dictstruct instances)
The command obj can be used to declare procedure-local objects and structures (including categories)
The index operator VAR[IDX] can now be used on usual vectors. It also accepts the dimension variable nlen
A duration type is now available to increase the date-time logic
The performance of the new parser implementation was greatly improved and is now at about 70-80% of the previous approach for scalar operations
Vectorial variables are now supported in matop, but not fully compatible to inline created vectors using the brace syntax {x,y,z,...}, because they will not be auto-expanded to matrices if necessary. To resolve this, either wrap the vectorial variable into additional braces or enclose it into an explicit repmat() call. This is a known issue and will be resolved in a future version together with the complete rework of matop.
Variable method resolution is much more precise now
It is now possible to use SQL placeholders in SQL statements and supply the parameters via params=[PARAMLIST]
HTML exports of tables will now also parse a simplified markdown syntax, so that headlines, code segments, bold and italic text are possible
Many improvements and fixes
This is a stable release and builds ontop of the changes from the last release candidate.
If you experience troubles with downloads from SourceForge (esp. via MS Edge for Business), consider downloading from Github directly (see assets section at the end of the release notes).
If you have any wishes for the future, please let us know! Either by eMail, Discord or directly entered into the ticket system. They will be heard in any case!
The full list of changes can be found in the ChangesLog.
published: 26.04.2025
Today we publish the release candidate version 1.1.7.2504 (ChangesLog). We're pleased to announce that again over 60 changes are part of this release.
The starting page was greatly reworked and provides more options.
Double-clicking on any embedded cluster in the table viewer window will open the embedded cluster in a new table viewer window. Standard variables can now also be viewed in a table viewer. This is especially useful for vectorial variables.
The table viewer can now sort and filter the displayed table according a selected column.
You can now change the file filters for each of the default folders in the left tree. The option can be found beneath the path settings in the settings dialog.
Detection of readable and loadable files has been improved, so that you can now also read files without known extension.
Table autosizing has been sped up and vertical alignment of cells with empty lines has been improved.
The method autocompletion recommendation has been improved and should now return better fitting candidates. The autocompletion in the terminal is much faster now.
Window layouts are now also part of the dependency analysis and will correctly return their event procedures.
The command install will now automatically search through the package repository for a package with matching filename.
Large tables won't calculate the complete stats anymore, if opened in the table viewer (this is for performance reasons).
A possibility to define a post-install script for a package was added to the package creator. The "required version" of packages now uses the correct variant of the current version for checking, e.g. "v.1.1.7.2412". The package creator will now log the last modification time of each bundled procedure in its project file. Once the project is loaded again, it is checked, whether there have been any file modifications in the mean time.
It is now possible to set a custom HTTP header and a payload if you want to interact with REST APIs using url.
The command print can now also display a table's contents (the first and last 5 rows) in the terminal.
The function convertunit() allows for unit conversions towards SI units (like the corresponding table methods).
The function getoverlap() returns the overlap of all to be passed intervals.
The functions complement(), intersection() and union() provide means to apply set theory operations.
The new table method TAB().replacevals() can be used to replace every occurence of a set of values with new values.
The option nobars can be used together with hist to switch the output graph to a dashed line plot with distinct marks at the bars' positions. This can be handy if you try to compare multiple histograms in a single diagram.
Most table methods accept now table column names in addition to column IDs. Note: If there are multiple columns with the same name, in general, all will be used for the table method.
The target folders used with move or copy can now contain wildcards within their path as well and will be replaced by their counterpart of the copied/moved filename, if it exists.
Improved and cleaned the stats command: some field were renamed or replaced with more important values.
The automatic type conversion now avoids automatic conversions from floating point to int.
The function cnt() will now return 0 if void values are inserted as its argument (note that this is not true for an array of void values). Completely empty and uninitialized columns and empty tables will now also return void instead of nan or an empty string.
The function student_t will no longer subtract 1 from the passed DOF internally.
The interface for odesolve and fit have been adapted to follow the current syntax approach more.
The return value of the table method TAB().indexof() has been changed to a cluster, where consecutive index sets are stored as embedded clusters.
The table method TAB().anovaof() will now return the results of multi-dimensional ANOVAs in distinct embedded clusters.
Important: The table methods TAB().categoriesof() and TAB().categorize() will now return an array of categories (see function category() for reference) instead of a key-value list. This might break some code.
No experimental change in this release
The kernel was greatly rewritten and supports much more different types and functionalities. Strange typing problems shouldn't appear any more. Overall performance should be improved (although at the cost that some segments might run slower)
We now only provide a 64 bit version due to limitations of external libraries
We'll now provide an up-to-date PDF documentation with every new release (including this one)
A Report an issue feature has been added, which you can use even without an GitHub account
Many improvements and fixes
This is a beta version. Some features are subject to change. If you experience problems, please let us know
If you experience troubles with downloads from SourceForge (esp. via MS Edge for Business), consider downloading from Github directly (see assets section at the end of the release notes).
If you have any wishes for the future, please let us know! Either by eMail, Discord or directly entered into the ticket system. They will be heard in any case!
The full list of changes can be found in the ChangesLog.
published: 28.12.2024
Today we publish the beta version 1.1.7.2412 (ChangesLog). We're pleased to announce that again 70 changes are part of this release. Note that this is an actual BETA version due to the major kernel changes included in this release.
The table viewer was improved and does now provide a categoricaly conditional cell colouring scheme
The terminal history has now a search bar
It is now possible to hide the main window using set windowshown=false and unhide it again. Using set appautoclose=true, the app will automatically close itself, once the last open window has been closed. Note that those settings are not saved and only affect NumeRe for the current running session.
remove may now also remove folders (and folder structures recursively)
k means clustering is now available as table method TAB().kmeansof(...)
New functions: uuid(), strjoin(), getdisplayscale(), is_void(), is_equal(), is_ordered(), is_unique()
New statistical functions: rms(), skew(), exc(), stderr(), inv_pct()
New time-specific functions: today(), get_utc_offset(), is_daylightsavingtime(), is_leapyear()
New noise functions: ridgedmulti(), billownoise(), voronoinoise()
Functions for converting between different numerical data types and for creating categories were added.
NumeRe can now interact with databases using the command database. Available interfaces for now are: MySQL/MariaDB, SQLite, ODBC. PostGreSQL is NOT supported right now due to dependency issues.
Table method updates: Table method modifiers .scwin() and .srwin() have been added and can be used to define a moving window for multi argument functions. Table method handling has been improved and chaining with the new internal method system is now possible. The new table method modifier .cells() together with .rows or .cols allows for selection of table cells along the direction of application.
Table columns can now have (physical) units to represent data even better. The units will be detected automatically (if possible), or you can use the dedicated methods to modify the unit of each column.
Tables may now be exported in MarkDown and HTML format and it's now also possible to copy only a part of a table to another table at a desired location using TAB(i1:i2,j1:j2) = TAB2(i1:i2,j1:j1) syntax.
Local variables may now also be declared within control flow blocks. Note that they are only declared for the first time per execution the control reaches their command.
Index-based for loops can now have an additional condition as their second argument (i.e. for (i = 1:0, a != b)), which is checked before each loop iteration.
The interaction between custom windows and the window command has been cleaned and improved. Some interactions will now return more fitting data types. It might be possible that this change will break some existing solutions. Furthermore, the textfield can now be configured as type=markup to support simplified markdown styling.
The tabs created with group -style=tabs ... in window layouts can now have an ID and an onchange event handler firing when the user changes the tab. It is also possible to access the properties of the tab group using window ... -get and window ... -set.
The window command option options={KEY-VALUE-LIST} can be used to modify additional window element properties. This option is currently only supported for tablegrid elements, where one can change the minimal number of rows and cols.
Clusters can now be created as hierarchical data structures, i.e. clusters can now contain clusters in their fields. You can use the .sel(ID) method for navigating and .unwrap to unwrap the whole structure in a single-level cluster. Writing a set of values into a single cluster element will embed them as a sub-structure. Reading this single element, will return the embedded structure.
The kernel was greatly rewritten and supports much more different types and functionalities. Strange typing problems shouldn't appear any more. Overall performance should be improved (although at the cost that some segments might run slower)
We now only provide a 64 bit version due to limitations of external libraries
We'll now provide an up-to-date PDF documentation with every new release (including this one)
A Report an issue feature has been added, which you can use even without an GitHub account
Many improvements and fixes
This is a beta version. Some features are subject to change. If you experience problems, please let us know
If you experience troubles with downloads from SourceForge (esp. via MS Edge for Business), consider downloading from Github directly (see assets section at the end of the release notes).
If you have any wishes for the future, please let us know! Either by eMail, Discord or directly entered into the ticket system. They will be heard in any case!
The full list of changes can be found in the ChangesLog.
published: 18.04.2024
Today we publish the new version 1.1.6.2404 (ChangesLog) named after the physicist Hendrik Casimir, who is best known for his work on the Casimir effect.
An optional feature to extract the argument types of functions, methods and procedures based upon their names, was added.
Usability of mouse-over tooltips was improved. It should now be possible to show the fulltips of arguments inside of function parentheses again.
The auto-indentation functionality does not interfere with CTRL-Z any more.
The new plotting option stacked enables the stacking of bars and hbars on each other.
Bar charts now always include the value y=0. In some situations it is reasonable to enable origin=sliding as an additional plotting option.
One can now pass custom axis ticks using a list of strings instead of the newline-separated strings.
It is now possible to create new columns in tables if values are assigned to an unknown column using string indexing with the column headlines, i.e. TABLE(:, "MY-COL-HEADLINE"). The new column will be appended at the end of the table.
matop functions now also accept matrix results as their scalar inputs. For consecutive scalar inputs, even a single vector can be passed, e.g. matop zero({1,3})
We added support for coloured window themes. If you want to test it, the setting can be found at the end of the syntax colour list. Recommended colour sets are the blue set (foreground: rgb(159,213,244) and background: rgb(234,245,253)), the light grey set (foreground: rgb(82,82,82), background: rgb(181,183,185)) and the splash-image set (foreground: rgb(214,177,182), background: rgb(222,237,234))
Increased performance of stfa, audioread and some statistics functions.
write now uses noquotes as default. The parameter was removed and has no effect any more.
If the values nan and inf are used within an index vector, then they are treated as invalid values and will always return an invalid value.
Many improvements and fixes
This is a stable release and builds ontop of the changes from the last release candidate.
If you experience troubles with downloads from SourceForge (esp. via MS Edge for Business), consider downloading from Github directly (see assets section at the end of the release notes).
If you have any wishes for the future, please let us know! Either by eMail, Discord or directly entered into the ticket system. They will be heard in any case!
The full list of changes can be found in the ChangesLog.
published: 05.02.2024
Today we publish the release candidate version 1.1.6.2402 (ChangesLog). We're pleased to announce that over 80 changes are part of this release.
Added feature of autowrapping for comments if line indicator is active.
Using the new file dialog and selecting "App", one can create a custom app from some predefined templates
The terminal rendering speed was increased, it provides global variables for autocompletion, autocompletion was improved generally
The table viewer will now group common table header rows together, creating a virtual hierarchy. Strings are also automatically wrapped around and the grid lines can be hidden
Folding has been enabled for LaTeX files and a simple lexer for INI files was added
getfilelist() and getfolderlist() may now follow shell links (*.LNK files)
getuilang() returns the user's current language, getfilediff() returns the unified diff of two files, the functions to_utf8() and to_ansi() can be used to convert to and from UTF-8 encoded strings
vectshift() and circshift() perform element shifts in matrices
Weibull probability functions and probability density functions for all distributions
Multiple new string functions with corresponding methods: firstch(), lastch(), startswith(), endswith()
New table methods: TAB().insertXYZ(), TAB().removeXYZ(), TAB().reorderXYZ() (XYZ means rows, cols or cells) and TAB().shrink()
TAB().convert() now provides an "auto" mode and may now convert more different number formats (notably EU and US separators for decimals and thousands). TAB().fndcols() can now be used with regular expressions
The "value" column type of tables was extended to provide far more different fundamental data types, e.g. "value.f32" or "value.ui8". Some file types will now be loaded with the best fitting data type
Loading and saving of regular file types with custom file extensions is now possible
Procedures can now be called with relative namespaces
Conditional expressions in if and while, which return multiple values, have now all return values being considered (implictly using and())
leave extends the functionality of break by jumping out of all nested control flow statements (with exception of procedure ... endprocedure)
One can create QR codes with qrcode
More interaction possibilities to interact with and create custom windows, layouts can now be defined dynamically via strings and custom windows may now be used as dialogs.
Conditional breakpoints (available via right-click in the editor)
Column headlines are now usable for column indices, i.e. TABLE(:, "MY-COL-HEADLINE")
We now provide 32 bit and 64 bit versions. The 64 bit version is likely to be faster and more versatile so switching is greatly encouraged
We'll now provide an up-to-date PDF documentation with every new release (including this one)
File loading was improved in many scenarios
Many improvements and fixes
This is a release candidate. Some features are subject to change. If you experience problems, please let us know
If you experience troubles with downloads from SourceForge (esp. via MS Edge for Business), consider downloading from Github directly (see assets section at the end of the release notes).
If you have any wishes for the future, please let us know! Either by eMail, Discord or directly entered into the ticket system. They will be heard in any case!
The full list of changes can be found in the ChangesLog.
published: 16.05.2023
Today we publish the new version 1.1.5.2305 (ChangesLog) named after the physicist Pavel Alekseyevich Cherenkov, who was able to explain the Cherenkov radiation. This time 30 changes have been incorporated into this version, which are mostly fixes to the version v1.1.5.2303.
It's now possible to define an enumeration using the syntax declare enum -> {VAL1, VAL2, ...}
The documentation browser can now be opened again using help window and similar. The necessary time for opening up with this method was greatly reduced.
Empty cells are now preserved, if one converts string columns to logical columns.
Multiple head rows in tables and data files are now much better supported for XLS, XLSX, ODS and CSV
Copying and moving (using copy and move) of mixed-value tables is now possible again.
It's now possible to deactivate the table auto-save by setting the interval to zero
Downloading of zip files now works as expected.
The calculation of needed memory per table and cluster does now reflect better the actually needed memory.
TAB().num now also considers strings as valid values for the num() operation and empty columns are now correctly calculated as empty if used with TAB().cnt.cols
Improved performance when copying a large table out of the table viewer.
Procedures execute now always the latest changes without the need of waiting a few seconds
Plain app names were removed from code and moved to the langauge files (allows also translations of the app name).
Many improvements and fixes
If you have any wishes for the future, please let us know! Either by eMail, Discord or directly entered into the ticket system. They will be heard in any case!
The full list of changes can be found in the ChangesLog.
published: 15.03.2023
Today we publish the release candidate version 1.1.5.2303 (ChangesLog). This time again nearly 100 changes have been incorporated into this version, so that comprehensive changes are to be expected.
A large number of table methods have been added: TAB().pcorrof(), TAB().scorrof(), TAB().covarof(), TAB().*rankof(), TAB().zscoreof(), TAB().anovaof(), TAB().fndcols(), TAB().indexof(), TAB().countif(), TAB().binsof(), TAB().categoriesof(), TAB().categorize(), TAB().rows, TAB().cols
A filter() function was added to matop to filter a matrix with an arbitrary kernel
A large number of random distributions (Laplace, Cauchy, Rayleigh, Landau, Levy (alpha stable), Fisher-F, Student-T) were added as functions
Functions to work with time values were added: as_date(), as_time(), weekday(), weeknum()
sha256() function calculates SHA-256 of strings and files
to_time() and timeformat() now use automatic pattern matching if no pattern is given
The range-based for loop has been added as for (ITER -> RANGE) and can also have multiple iterators at once
archive files can be packed with pack and unpacked with unpack
diff can now differentiate numerically up to the third order
hist2d now also supports time axes (experimental)
vect can now also generate vector plots from complex functions and complex data grids
With the new plot options ohlc ("Open-High-Low-Close") and candlestick, plots can be generated for the display of price developments (stocks)
Tables can now have columns with logical values and columns with categories. In addition, the Table Viewer has received further functionalities that further simplify the interaction with tables
External files are now under automatic version control. Furthermore, restoring a previous version has been improved so that the current file is now automatically overwritten. In addition, a menu option has been added to compare two different files with each other
It is now possible to disable the "floating" of most windows on the main window
Procedures in the file tree now show their signature and documentation (if available) as tooltip
It is now possible to copy text with styling information from the editor to MS-Word or MS-PowerPoint with an appropriate menu option
It is now possible to drag code with comments into the terminal. The code is executed normally
When creating a new file, a helpful dialog with more information about the file types now appears
The support of Excel files and JCAMP-DX files has been improved
The help command and the documentation browser have been improved and now also show function and procedure documentation
Toolbar icons have been updated and modernized. Three selectable styles are available in the options (Purist, Focused (default) and Colourful). It is also possible to extend the toolbar over the entire window width
Many improvements and fixes
If you have any wishes for the future, please let us know! Either by eMail, Discord or directly entered into the ticket system. They will be heard in any case!
The main changes can be found in the ChangesLog.