Main Changes Scilab 4.X -> 5.0
==============================
License:
========
- License changed to CeCILL (fully compatible with the GPL v2)
More information about the CeCILL http://www.cecill.info/index.en.html
Therefore, Scilab is now a 100% free software.
Graphical User Interface:
=========================
- Advanced docking system
- Follow the Tango Desktop Project http://tango.freedesktop.org/
- GUI re-written in Java Swing:
+ Same GUI for all OS (Menubars, toolbars...)
+ Window docking available using FlexDock https://flexdock.dev.java.net/
- Uicontrols are now Java objects and can be included in a graphic window with graphics
- Dialogs are now Java objects (x_message, x_dialog...)
- Completion on variable and function names avaible using TAB key or CTRL-SPACE
Graphics:
=========
- New rendering engine based on JOGL (Java Binding for the OpenGL API):
* Support 3D hardware acceleration.
* Facet ordering issues fixed with the use of Z-buffer.
- Text possibilities extended:
* Support for floating point sizes.
* Text object are able to handle matrices of strings.
- All graphic objects are fully operational both in 2D and 3D modes.
- Clipping is operational both in 2D and 3D modes.
- New functions:
* swap_handles - Permute two handles in the graphic Hierarchy.
* relocate_handle - Move handles inside the graphic hierarchy.
- Obsolete functions:
* Using xgetmouse with a flag to avoid the event queue to be cleared is now obsolete. This functionnality will be removed in Scilab 5.1.
Graphic file export:
====================
- xs2jpeg, xs2png functions added to export graphics under jpeg and png formats.
- Removed functions xs2emf and xs2fig from export graphics.
Signal processing:
==================
- FFTW (Fastest Fourier Transform in the West) features added in Scilab.
+ fftw - fast fourier transform that use fftw library
+ fftw_flags - set computation method of fast fourier transform of
the fftw function
+ fftw_forget_wisdom - reset fftw wisdom
+ get_fftw_wisdom - return fftw wisdom
+ set_fftw_wisdom - set fftw wisdom
+ disposefftwlibrary - free fttw library
+ fftwlibraryisloaded - checks if fftw library is loaded
Sparse LU factorization:
========================
- UMFPACK features added in Scilab. Many thanks to Bruno Pincon.
+ umfpack - Solve sparse linear system
+ umf_lufact - LU factorisation of a sparse matrix
+ umf_lusolve - Solve a linear sparse system given the LU factors
+ umf_luinfo - Get information on LU factors
+ umf_luget - Retrieve LU factors at the Scilab level
+ taucs_chfact - Cholesky factorisation of a sparse Symmetric Positive Definite (s.p.d.) matrix
+ taucs_chsolve - Solve a linear sparse (s.p.d.) system given the Cholesky factors
+ taucs_chinfo - Get information on Cholesky factors
+ taucs_chget - Retrieve the Cholesky factorization at the Scilab level
+ res_with_prec - Computes the residual r = Ax-b with precision
+ cond2sp - Computes an approximation of the 2-norm condition number of a s.p.d. sparse matrix
+ condestsp - Estimate the condition number of a sparse matrix
+ PlotSparse - Plot the pattern of non nul elements of a sparse matrix
+ ReadHBSparse - Read a Harwell-Boeing sparse format file
Input/Output functions (files):
===============================
- New functions:
+ getdrives - get the drive letters of all mounted filesystems on the computer.
+ getrelativefilename - given an absolute directory and an absolute filename, returns a relative file name.
+ fullpath - creates an full path name for the specified relative path name.
+ is_absolute_path -
+ createdir - make new directory
+ removedir - remove a directory
+ deletefile - delete a file
+ fileext - returns extension for a file path
+ filesep - returns directory separator for current platform
+ pathsep - returns path separator for current platform
+ maxfiles - sets the limit for the number of files a scilab is allowed to have open simultaneously.
+ findfiles - Finding all files with a given filespec
- Profile changed:
+ ls under Linux/Unix has lost his second input argument (unix/linux command line option). It is now based on listfiles. ls in Scilab 5 will always return one file per line (2 per lines before)
- Rewrite in native code:
+ isdir
+ newest
Regular expression features:
============================
- Based on the library PCRE
- Involved functions
+ grep(...,'r')
+ regexp
+ strindex(...,'r')
+ strsubst(...,'r')
String manipulation:
====================
- New functions:
+ blanks - create string of blank characters
+ isalphanum - check that characters of a string are alphanumerics
+ isascii - tests if character is a 7-bit US-ASCII character
+ isdigit - check that characters of a string are digits between 0 and 9
+ isletter - check that characters of a string are alphabetics letters
+ regexp - find a substring that matches the regular expression string
+ strchr - locate first occurrence of character in string
+ strcmp - compare character strings
+ strcmpi - compare character strings (case independent)
+ strcspn - get span until character in string
+ strncpy - copy characters from strings
+ strrchr - locate last occurrence of character in string
+ strrev - returns string reversed
+ strspn - get span of character set in string
+ strstr - locate substring
+ strtod - convert string to double
+ strtok - split string into tokens
Functions:
==========
- New functions:
+ getdebuginfo
+ getscilabmode - returns scilab mode
+ getvariablesonstack - get variable names on stack of scilab
+ getmd5 - get the MD5 checksum of strings or files.
+ getmodules - returns list of modules installed in Scilab
+ with_module - Checks if a Scilab module is installed
+ islittleendian - Checks if machine architecture is "little-endian"
+ librarieslist - get scilab libraries
+ libraryinfo - get macros and path of a scilab library
+ completion - returns words that start with the text you pass as parameter.
- Rewrite in native code:
+ warning
Time and date functions:
========================
- New functions:
+ clock - return current time as date vector
+ eomday - return last day of month
+ weekday - return day of week
+ now - return current date and time
Binary, octal and hexadecimal representation:
=============================================
- New functions:
+ bin2dec - return integer corresponding to a binary form
+ bitand - AND applied to binary representation of inputs argument
+ bitcmp
+ bitget
+ bitor - OR applied to binary representation of inputs arguments
+ bitxor - XOR applied to binary representation of inputs arguments
+ dec2bin - return binary representation
+ dec2oct - return octal representation of integers
jvm module:
===========
+ with_embedded_jre - checks if scilab uses a embedded JRE
+ system_getproperty - gets the system property indicated by a specified key.
+ javaclasspath - set and get dynamic Java class path
+ javalibrarypath - set and get dynamic java.library.path
Localization:
=============
- New functions:
+ gettext(string) / _(string) - get text translated into the current locale
and domain
+ dgettext - get text translated into the current
locale and a specific domain domain
+ setlanguage(string)
+ getlanguage()
Online Help management:
=======================
- New functions:
+ check_help
+ del_help_chapter
+ add_module_help_chapter
+ del_module_help_chapter
- New Java help browser
- New help system based on DocBook
Metanet : graph and network toolbox
===================================
- New functions:
+ hilite_edges - highlights a set of edges
+ unhilite_edges - unhighlights a set of edges
+ hilite_nodes - highlights a set of nodes
+ unhilite_nodes - unhighlights a set of nodes
+ add_edge_data - associates new data fields to the edges data structure
of a graph
+ add_node_data - associates new data fields to the nodes data structure
of a graph
+ arc_length
+ nodedatafields - returns the vector of node data fields names
+ set_edges_id
+ set_nodes_id
+ show_arcs - highlights a set of arcs
+ show_edges - highlights a set of edges
+ update_graph - converts an old graph data structure to the current one
Windows_tools:
===============
- New functions:
+ consolebox - show or hide console box
+ findfileassociation - Searches for and retrieves a file association-related string from the registry.
+ dos - shell (cmd) command execution
History manager:
================
- New functions:
+ displayhistory - displays current scilab history
+ addhistory - add lines to current history
+ saveconsecutivecommands - Save consecutive duplicate commands
+ saveafterncommands - Save the history file after n statements are added to the file.
+ gethistoryfile - get filename used for scilab's history
+ sethistoryfile - set filename for scilab history
+ removelinehistory - remove the Nth line in history.
+ historysize - get number of lines in history
+ historymanager - enable or disable history manager
- Rewrite:
+ loadhistory
+ savehistory
+ gethistory
+ resethistory
Consoles:
=========
- Based on a joint project Artenum - INRIA/Scilab called Jrosetta
- Completion
+ Functions
+ Variables
+ Paths
Modules/toolboxes template:
===========================
- A template model has been defined to normalize how modules and toolboxes
should be.
+ See http://wiki.scilab.org/Scilab_Module_Architecture for module
+ See contrib/toolbox_skeleton/ for toolboxes
Source reorganisation:
======================
- Source code split into dedicated and clear modules
- Clear separation between the Scilab gateway (argument management, etc) and
the code
- Use XML declaration for the list of functions
- Use XML declaration for the list of modules (and activation or not)
- Massive cleanup of the code
- Thousand of warnings removed
- First step to a future Scilab API
New Scilab Functions:
=====================
- Function rewrited from Fortran to C for better maintenance
Scilab modes:
=============
- Scilab is now available in four modes:
+ Normal mode
The standard Java
+ NW (No window) mode
Run in command line but can launch help or rendering/graphics
(loads the Java Virtual Machine)
+ NWNI (No window No interactive) mode
Run in command line but no help, TCL or rendering
(do not load the Java Virtual Machine)
+ API mode
Scilab as API/computing engine
GNU/Linux - Unix:
=================
- New configure (based on autoconf)
- New compilation process (based on automake and libtool)
- Dynamic libraries
- Advanced numerical libraries can be used (Atlas, MKL...)
- Use librairies when available on the system
- Versioned libraries
- Easier profiling (memory and call graph)
- Better startup script
+ Debug
+ Profiling (valgrind)
Windows:
========
- Compilation process :
+ Visual Studio 2008 solution (requires Intel Fortran 10.1) support
+ Visual Studio 2008 express solution (fortran conversion with f2c) support
- Dynamic libraries
- Atlas 3.8 support (Core 2 Duo and more support)
- Intel Math Kernel Library support
- Better support on Windows Vista
Dynamic/incremental link:
=========================
- Module renamed to dynamic link
- Visual Studio 2008 support
- Under Linux/Unix, now based on basic autotools for the detection of compiler
and compilation.
- New functions:
+ getdynlibext - get the extension of dynamic libraries on your operating system.
TCL/TK:
=======
- New event loop
+ @TODO detail
- Provided with version 8.5 of TCL/TK
- Removed Functions:
+ tcl_?
Java/Scilab API:
================
- Refactoring of the Java API
Tests:
======
- Tests are now embedded into Scilab (binary and sources)
- Many tests added
+ Unitary
+ Non regression
+ Benchmarks
Internal API:
=============
- Used in functions GetRhsVar, PutLhsVar... The datatype naming have been
changed to:
+ "c" => STRING_DATATYPE
+ "S" => MATRIX_OF_STRING_DATATYPE
+ "d" => MATRIX_OF_DOUBLE_DATATYPE
+ "r" => MATRIX_OF_RATIONAL_DATATYPE
+ "I" => MATRIX_OF_VARIABLE_SIZE_INTEGER_DATATYPE
+ "i" => MATRIX_OF_INTEGER_DATATYPE
+ "b" => MATRIX_OF_BOOLEAN_DATATYPE
+ "z" => MATRIX_OF_COMPLEX_DATATYPE
+ "s" => SPARSE_MATRIX_DATATYPE
+ "l" => LIST_DATATYPE
+ "t" => TYPED_LIST_DATATYPE
+ "m" => MATRIX_ORIENTED_TYPED_LIST_DATATYPE
+ "p" => SCILAB_POINTER_DATATYPE
+ "h" => GRAPHICAL_HANDLE_DATATYPE
+ "f" => EXTERNAL_DATATYPE
These declarations are in modules/core/includes/stackTypeVariable.h
- define TRUE_ and FALSE_ removed for TRUE and FALSE
- Many other things... Have a look to the sources...
Scicos:
=======
- Test framework currently under development:
+ Unitary tests (30% done)
+ Non-regression tests (vs. Scicos 4.2 in Scilab 4.1.2) (30% done)
+ Benchmarks (0% done)