Version 1.7.6 (2026-01-22)
  + Strengthen CI/CD pipeline with updated GitHub Actions workflows
  + Fix compilation issues with FORTIFY_SOURCE and Rprintf calls
  + Fix C warnings and improve compatibility
  + Add pkgdown documentation site support
  + Prepare package for CRAN submission

Version 1.0-48 (2015-06-02)
  + strings in trim.c was freed after they are created by strdup

Version 1.0-47 (2015-05-05)
  + The package is fully compatible now with bioinfolib (i.e. public version of bios) and tested for the new bioinformatics server


Version 1.0-44 (2014-10-30)
  + Add \code{assertDesign}, \code{assertContrast}, and \code{assertDesignContrast}
  + Start using Roxygen2 to make inline documentations (really a cool tool!)

Version 1.0-43 (2014-08-15)
  + registerLog adds an extra option, append=FALSE, to provide alternative behavior to the logging machinary. Note that the default behaviour has changed from this version: previously files are only appended and never overwritten; from now on an existing file will be overwritten unless the append option is manually set to TRUE.
  + (Internal) add appendLogger function, which checks redundancy of loggers by the connection description string, in order to avoid appending loggers that have been in the list again.
  + Add silencio, a small helper function to keep function running quitely.

Version 1.0-42 (2014-08-08)
  + Modify summarizeRows and summarizeColumns so that they accept additional parameters and pass them to the function

Version 1.0-41 (2014-07-30)
  + Add chosenFew to print long vectors

Version 1.0-40 (2014-06-30)
  + longdf2matrix is updated to be more efficient. Instead of using 'reshape', it builds the matrix directly by populating the elements.

Version 1.0-39 (2014-04-14)
  + scriptInit set options(warn=-1) in order to supress unwanted warnings
  + add createDir for scripting

Version 1.0-38 (2014-01-28)
  + doLog updates

Version 1.0-36 (2014-01-24)
  + writeLog and doLog use 'fmt' as the first parameter

Version 1.0-35 (2014-01-20)
  + Add a generic logging mechanism. User (especially script programmer) can use registerLog/doLog to write log messages into arbitrary number of loggers, which can be either files or connections.

Version 1.0-34 (2014-01-10)
  + assertFile and assertDir returns invisible \code{TRUE} in case the files/directories exist.
  + basefilename and extname add option 'lower.case'
  + Add writeLog to write loggings

Version 1.0-33 (2013-08-14)
  + keepMaxStatRow has been refactored, giving isMaxStatRow (keepMaxStatRowInd) to return logical/integer vector

Version 1.0-32 (2013-07-24)
  + Add qsystem to run system commands quietly
  + Add rmat to remove file/directories at a future time point
  + Add closeFileDevice() which quietly closes current device
  + openFileDevice() now sets useDingbat=FALSE by default for PDF outputs in order to achieve better compatibility with SVG files, and sets dpi as a parameter.

Version 1.0-31 (2013-07-19)
  + qqmsg only quits R when the session is not interactive.

Version 1.0-30 (2013-07-17)
  + openFileDevice use cairo as the PNG engine, since X11 engine does not seem to work in a non-interactive session

Version 1.0-29 (2013-06-27)
  + summarizeRows and summarizeColumns keep column/row names of the input matrix

Version 1.0-28 (2013-05-16)
  + Add removeInvarCol to remove invariable columns from a data frame or matrix

Version 1.0-27 (2013-05-15)
  + Move scriptInit from ribiosArg to ribiosUtils

Version 1.0-26 (2013-02-19)
  + A substantial update of helping pages. Now almost every function exported by the ribiosUtils package has manuals and examples.
  + Add longdf2matrix to convert long-format data frame into matrix.
  + add compTwoVecs to compare two vectors using set operations

Version 1.0-25 (2012-12-04)
  + Add new function: trim, to trim (strip) leading and/or tailing spaces

Version 1.0-24 (2012-11-19)
  + Add new function: keepMaxStatRow, as a S4-object-independent implementation of the 'keepMaxStatProbe' function in ribiosExpression.It is faster and more generic.
  + extname adds an option to allow values other than NA returned if not found.

Version 1.0-23 (2012-11-02)
  + Internal changes: functions dealing with checking existence of files/directories are centralized in file_dir.R 

Version 1.0-22 (2012-10-24)
  + haltifnot: a typo was fixed in the msg
  + assertFile: error message is now more informative, printing files that do not exist.

Version 1.0-21 (2012-10-22)
  + Debugging set.R: mset.R does not fail with a vector as input: the vector is simply returned.

Version 1.0-20 (2012-10-17)
  + Add haltifnot, a function adapted from 'stopifnot', to print informative error messages

Version 1.0-19 (2012-10-03)
  + Add matchv, imatch, imatchv, ipmatch, ipmatchv for case-insentative matches

Version 1.0-18 (2012-10-02)
  + Add munion, mintersect and msetdiff for _m_ultiple-set operations.
  + Add midentical to test whether all objects are identical

Version 1.0-16 (2012-06-22)
  + Add mmatch function: It performs efficient multiple matching between vectors using BIOS-C codes. Thanks to Roland Schmucki for sharing C codes.
  + Documentation and test files were added for mmatch
  + matchColumnIndex (and consequently matchColumn) uses mmatch for multiple matching, improving speed drastically
  + Add assertFile, assertDir, isDir, checkDir, checkFile, ... functions for scripting
  + Add various 'small' functions from on-going projects
  + Implement half of missing documentations

Version 1.0-15 (2012-06-20)
  + matchColumnIndex is not a little more efficient in doing the multiple matching. However it requires substantion re-coding in C to make it as efficient as normal match. The work is ongoing.

Version 1.0-14 (2012-06-06)
  + Add functions for scripting uses: setDebug, unsetDebug, isDebugging and isIntDebugging

Version 1.0-13 (2012-05-07)
  + srv/Makevars now use bioenv defined variable names, instead of hard-coding dependencies
  + Minor change in the pwdecode documentation
  + The version has been installed on biostat server

Version 1.0-12 (2012-03-22)
  + Add pwdecode function (with C backend) to decode passwords encypted with pwencode command-line tool
  + (Internal) pwdecode has a parsimonious Makevar file. And it successfully avoids the die mechanism of BIOS system by providing a imposter macro.

Version 1.0-11 (2012-03-09)
  + Add matrix2longdf function to convert a matrix into long format data.frame
  + Add extname function to get extension of file names
  + Add openFileDevice function to open a display device as a file, preparing to print plots to the file.

Version 1.0-10 (2012-02-10)
  + Both matchColumnIndex and matchColumn function supports both column index and column names, and the matching of row names.
  + Both matchColumnIndex and matchColumn supports the multi parameter, specifying the behaviour of function in multiple-matching cases.
  + matchColumnIndex over-writes the column with the master vector: also in the case of multiple mapping.
  + Documentations have been added for matchColumn and matchColumnIndex.

Version 1.0-9 (2012-02-06)
  + Add verbose function to allow verbose-level specific printing of verbose information, especially useful in programs with user interfaces.

Version 1.0-8 (2012-01-18)
  + The library function is checked for the support of "quietly" option in libordie by checking the base package version (>=2.13.0 supports quietly=TRUE)

Version 1.0-7 (2011-12-21)
  + Add isError function for try-error catch blocks
  + qqmsg tests whether message is empty, if no no message will be print, in order to prevent a blank line to be printed

Version 1.0-6 (2011-12-19)
  + Remove the dependency on the gsl library, which causes problem when the path is not known.

Version 1.0-5 (2011-12-19)
  + Add summarizeRows and summarizeColumns to summarize rows/columns by factor
  + Add the documentation for the dfFactor function.

Version 1.0.4 (2011-12-16)
  + Add qqmsg (function and documentation) to quitely quit a R session.  
  + add libordie function to silently load a library when possible or kill the R session otherwise

Version 1.0.3 (2011-12-15)
  + Add the methods package into depend list

Version 1.0.1 (2011-11-28)
  + Add data.frame and matrix manipulation methods
  + Updated the fme_cor function, although it is not finished.
