* Bug 16111 fixed: now isglobal supports array of strings
[scilab.git] / scilab / CHANGES.md
1 Welcome to Scilab 6.1.X
2 =======================
3
4 This file details the changes between Scilab 6.1.X (this development branch), and the previous release 6.0.X.
5 For changelogs of earlier releases, please see [Scilab 6.0.0](https://help.scilab.org/docs/6.0.0/en_US/CHANGES.html).
6
7 This file is intended for the specific needs of advanced users, and describes:
8 - High-level new features,
9 - Changes in installation, compilation, and compatibility,
10 - Changes in the language,
11 - New and modified features, in each module,
12 - Changes in functions (removed/added/modified),
13 - Bug fixes.
14
15 This is an in-development version which might be unstable.
16 Please report any thing we could have missed, on the [mailing lists][1] or on the [bug tracker][2].
17
18 [1]: http://mailinglists.scilab.org
19 [2]: http://bugzilla.scilab.org
20
21
22 Main new features
23 -----------------
24
25 For a high-level description of the main new features of this release, please consult the [embedded help](modules/helptools/data/pages/homepage-en_US.html). It is also available as the "What's new" page of the help, by simply typing `help` in Scilab console.
26
27 In summary, the main new features are:
28 * Webtools utilities added for HTTP protocol, JSON data usage
29 * Profiled values are available as Scilab values 
30
31 Installation
32 ------------
33
34
35 Compilation
36 -----------
37
38 * GNU autotools have been updated to :
39    - automake 1.15
40    - autoconf 2.69
41    - libtool 2.4.6 (patched for macOS)
42
43 * Linux/macOS build defines `_GLIBCXX_USE_CXX11_ABI=0` to use a pre-C++11 ABI on Scilab and toolboxes builds.
44
45 * Migration to Microsoft Visual Studio 2017 and Intel Composer 2018
46
47
48 Dependencies
49 ------------
50
51
52 Packaging & Supported Operating Systems
53 ---------------------------------------
54
55 * Scilab embedded JVM is Java 8. To run or compile Scilab you need at least:
56   - Windows:
57      - Windows 10 (Desktop)
58      - Windows 8 (Desktop)
59      - Windows 7
60      - Windows Vista SP2
61      - Windows Server 2008 R2 SP1 (64-bit)
62      - Windows Server 2012 (64-bit)
63   - Mac OS X:
64      - Intel-based Mac running Mac OS X 10.8.3+, 10.9+
65   - Linux:
66      - Red Hat Enterprise Linux 5.5+, 6.x (32-bit), 6.x (64-bit), 7.x (64-bit)
67      - Oracle Linux 5.5+, 6.x (32-bit), 6.x (64-bit), 7.x (64-bit)
68      - Ubuntu Linux 12.04 LTS, 13.x
69      - Suse Linux Enterprise Server 10 SP2+, 11.x
70
71     For more information, please consult: [What are the system requirements for Java?](http://java.com/en/download/help/sysreq.xml)
72
73 * [SSE2](https://en.wikipedia.org/wiki/SSE2), Streaming SIMD Extensions 2 support is now mandatory to run Scilab on Linux i686.
74
75
76 Feature changes and additions
77 -----------------------------
78
79 * Empty strings are used as the default values on String allocation
80 * HTTP get, post, put, upload, patch, delete functions added
81 * JSON encoding / decoding for Scilab datatypes added
82 * Memory invalid accesses have been greatly reduced thanks to :
83   - PVS-Studio inspections blog report
84   - Coverity scan weekly source analysis
85 * bitget() is upgraded:
86   - It now accepts positive Signed encoded integers.
87   - It now supports the new uint64 and int64 types of encoded integers.
88   - For decimal numbers: bits with indices > 52 can now be retrieved (up to `log2(number_properties("huge"))` = 1024).
89   - For decimal numbers `x > 2^52`, querried bits below `%eps` (indices < log2(x)-52) now return `Nan` instead of 0.
90   - Several bits can now be retrieved from each component of an input array.
91 * `edit` now accepts a line number as text (like "23").
92 * `profileEnable`, `profileDisable`, `profileGetInfo` could be used to instrument functions and gather execution information within Scilab.
93 * `prettyprint()` is upgraded:
94   - Integer and Text input are now actually supported.
95   - Default input arguments can be skipped instead of still having to be provided.
96   - The result string is better formatted to be easily wrappable and indentable.
97
98 Help pages:
99 -----------
100
101 * overhauled / rewritten: `bitget`, `edit`
102 * fixed / improved:  `bench_run` `M_SWITCH`
103
104 User Interface improvements:
105 ----------------------------
106
107 * The `ans` variable is editable as any other variable
108 * Commands history is saved *before* executing a command to have the correct history on crash.
109 * Used memory per variable is displayed by BrowserVar to give the user numbers on memory usage repartition and let the user `clear` the big ones first.
110
111 Xcos
112 ----
113
114 * Default ending time reduced from 100000 to 30, to fit default scope block
115
116
117 API modification
118 ----------------
119
120
121 Obsolete functions or features
122 ------------------------------
123 * `frexp` becomes an internal. Please use `[m,e]=log2(x)` instead.
124
125
126 Removed Functions
127 -----------------
128
129 * `hypermat` was obsolete and has been removed. Please use `matrix` instead.
130 * `square` was obsolete and has been removed.
131 * `xgetech` was obsolete and has been removed. Please use `gca` instead.
132
133
134 Known issues
135 ------------
136
137
138 Bug Fixes
139 ---------
140
141 ### Bugs fixed in 6.1.0:
142 * [#2694](http://bugzilla.scilab.org/show_bug.cgi?id=2694): `bitget` did not accept positive integers of types int8, int16 or int32.
143 * [#8784](http://bugzilla.scilab.org/show_bug.cgi?id=8784): Automatic self-adjusting blocks `SCALE_CSCOPE` & `SCALE_CMSCOPE` in Xcos.
144 * [#9673](http://bugzilla.scilab.org/show_bug.cgi?id=9673): Priority of colon `:` operator was too low
145 * [#14604](http://bugzilla.scilab.org/show_bug.cgi?id=14604): `emptystr()` is 40x slower with 6.0.0 wrt 5.5.2
146 * [#14605](http://bugzilla.scilab.org/show_bug.cgi?id=14605): fixed - `bench_run` was too strict about the specification of tests names.
147 * [#14606](http://bugzilla.scilab.org/show_bug.cgi?id=14606): Memory used by variables returned by `[names,mem]=who()` was always zero.
148 * [#14741](http://bugzilla.scilab.org/show_bug.cgi?id=14741): The syntax `[m,e]=log2(x)` was not documented. As public function `frexp()` was in duplicate with `[m,e]=log2(x)`.
149 * [#14812](http://bugzilla.scilab.org/show_bug.cgi?id=14812): Minor typos in messages.
150 * [#14863](http://bugzilla.scilab.org/show_bug.cgi?id=14863): In Xcos, the default ending time was unhandily high (100000), reduced it to 30.
151 * [#14982](http://bugzilla.scilab.org/show_bug.cgi?id=14982): `msprintf` segmentation fault was caught due to wrong size
152 * [#15087](http://bugzilla.scilab.org/show_bug.cgi?id=15087): Deleting rows or columns from a matrix is slow (regression)
153 * [#15269](http://bugzilla.scilab.org/show_bug.cgi?id=15269): `xgetech` was poor and stiff compared to any combination of `gca()` properties `.axes_bounds`, `.data_bounds`, `.log_flags`, and `.margins`. It is removed.
154 * [#15271](http://bugzilla.scilab.org/show_bug.cgi?id=15271): `bitget` needed to be upgraded.
155 * [#15321](http://bugzilla.scilab.org/show_bug.cgi?id=15321): `lu()` was leaking memory.
156 * [#15425](http://bugzilla.scilab.org/show_bug.cgi?id=15425): The Kronecker product `a.*.b` failed when `a` or `b` or both are hypermatrices, with one or both being polynomials or rationals.
157 * [#15523](http://bugzilla.scilab.org/show_bug.cgi?id=15523): `%ODEOPTIONS(1)=2` didn't work with solvers 'rk' and 'rkf' 
158 * [#15248](http://bugzilla.scilab.org/show_bug.cgi?id=15248): `lsq()`was leaking memory.
159 * [#15577](http://bugzilla.scilab.org/show_bug.cgi?id=15577): `edit` did not accept a line number as text, as with `edit linspace 21`.
160 * [#15668](http://bugzilla.scilab.org/show_bug.cgi?id=15668): `save(filename)` saved all predefined Scilab constants %e %pi etc.. (regression)
161 * [#15812](http://bugzilla.scilab.org/show_bug.cgi?id=15812): On assigning variables the source variable may become become corrupted
162 * [#15840](http://bugzilla.scilab.org/show_bug.cgi?id=15840): `grand(1,"prm",m)` yielded an unsqueezed size([size(m) 1]) hypermatrix
163 * [#15964](http://bugzilla.scilab.org/show_bug.cgi?id=15954): A complex empty sparse matrix could be obtained after insertion.
164 * [#15983](http://bugzilla.scilab.org/show_bug.cgi?id=15983): `group()` regressed in 5.5.2 due to a too intrusive fix.
165 * [#15984](http://bugzilla.scilab.org/show_bug.cgi?id=15984): display scale was wrong with Retina dispplays on OSX..
166 * [#15995](http://bugzilla.scilab.org/show_bug.cgi?id=15995): patch was missing in surface plot (regression)
167 * [#16003](http://bugzilla.scilab.org/show_bug.cgi?id=16003): Zoom with mouse scroll wheel was broken on simple surfaces.
168 * [#16005](http://bugzilla.scilab.org/show_bug.cgi?id=16005): The `intdec` example was biased and not robust when changing sampling frequencies.
169 * [#16007](http://bugzilla.scilab.org/show_bug.cgi?id=16007): Non-integer index in sparse makes Scilab crash.
170 * [#16012](http://bugzilla.scilab.org/show_bug.cgi?id=16012): `[struct() struct()]` crashed Scilab.
171 * [#16013](http://bugzilla.scilab.org/show_bug.cgi?id=16013): Load previously saved environment with "File/Load environment" menu failed.
172 * [#16014](http://bugzilla.scilab.org/show_bug.cgi?id=16014): after `x.a=1; x(:)=[]` x.a was an empty list. 
173 * [#16015](http://bugzilla.scilab.org/show_bug.cgi?id=116015): `intg(a,b,f)` called f(x) with x outside [a,b].
174 * [#16021](http://bugzilla.scilab.org/show_bug.cgi?id=16021): `tand([-90 90])` answered [Nan Nan] instead of [-Inf, Inf]. `cotd([-90 90])` answered [Nan Nan] instead of [0 0]. `1 ./cosd([-90 90])` answered [Inf -Inf] instead of [Inf Inf].
175 * [#16067](http://bugzilla.scilab.org/show_bug.cgi?id=16067): The display of matrices of signed integers was misaligned (regression of 6.0.0 vs 5.5.2)
176 * [#16071](http://bugzilla.scilab.org/show_bug.cgi?id=16071): `prettyprint(complex(1,%nan))` omitted the "+" in `1 + Nani`. It printed positive exponents with a useless "+". For any input nul polynomial, the string result never included the name of the variable. Default input arguments could not be skipped. ExportFormat was uselessly case-sensitive. For tex|latex: for text input, $ \ % & { } ~ and ^ special characters were not protected ; spaces were not protected, all words were concatenated ; for polynomials and rationals, the result string could be extremely long and not easily wrappable. For MathML: "<" was not protected ; <mi></mi> were missing for text input ; <mtable>, </mtable>, <mtr>, </mtr>, <mtd>, <mfenced> and </mfenced> tags were not wrapped and could not be indented. Delimiters: "" was not documented as possible value ; ")" was wrongly documented. Dynamical linear systems were not documented as possible input.
177 * [#16072](http://bugzilla.scilab.org/show_bug.cgi?id=16072): `prettyprint()` did not actually support input encoded integers.
178 * [#16075](http://bugzilla.scilab.org/show_bug.cgi?id=16075): `prettyprint()` was broken for cells.
179 * [#16085](http://bugzilla.scilab.org/show_bug.cgi?id=16085): insertion in an empty struct was broken.
180 * [#16087](http://bugzilla.scilab.org/show_bug.cgi?id=16087): Insertion of struct() in a non-empty struct crashed Scilab.
181 * [#16111](http://bugzilla.scilab.org/show_bug.cgi?id=16111): `isglobal` was not supporting non-scalar array of strings as input.
182
183