forked from dardevelin/neu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
195 lines (128 loc) · 6.52 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
Neu 1.8.1 - 2/28/15
-Updated to use LLVM and Clang 3.6. When updating from a previous
version of Neu, one should remove neu/llvm and re-run 'make llvm'.
-Important fixes to NDatabase and NVSemaphore.
-Added has() to sequence containers.
Neu 1.8.0 - 1/23/15
-Added JSON parser and generator (NJSONParser and
NJSONGenerator). See test/regress/json for an example.
-Fixes to NDatabase.
-Fixes to NList.
-Added variant of nvar::pushBack() and pushFront().
Neu 1.7.2 - 1/12/15
-Java interface fixes for Linux and other minor fixes.
Neu 1.7.1 - 1/6/15
-Simplified build process. Added INSTALL quick-start notes. In the
top-level Makefile, the 'llvm' target is now used to download and
build LLVM and Clang in one step with 'make llvm'. NO_PRECISE is now
set by default so libneu_core will be built without GMP and MPFR.
Neu 1.7.0 - 1/3/15
-Added a first version of the Neu Java interface. See the updated Neu
guide for details and the NJObject class, Java classes in neu/java,
the neu-java command, and test/regress/java1 for an example.
-Various added methods and minor fixes and changes to nvar.
-Finished implementation of NML parser token tags and other minor
fixes and additions to parsers.
-NERROR() now displays source file name and line number.
-Added various methods to nstr.
-An nvar which holds a floating point value will now always be
printed with a decimal point, e.g "1.0" rather than "1".
Neu 1.6.0 - 12/12/14
-Added a first version of the Neu Haskell interface which allows
Haskell code to be run from C++ and allows Haskell code to be
conveniently constructed dynamically using a familiar N code
representation. The Haskell interface consists of a parser
(NHSParser) which parses Haskell code to an N code representation
and NHSGenerator for going the other direction. The Haskell N code
can be run() via an NHSObject. The neu-haskell command is a simple
instantiation of NHSParser and NHSObject, allowing Haskell code to
be interpreted and using the -show flag, to allow the Haskell N code
to be viewed. See test/regress/nhs1 for an example.
Neu 1.5.0 - 12/7/14
-Added the ability to store and restore NObject and its
subclasses. NObjectBase defines an interface for a "restore
constructor": NObjectBase(const nvar& v, RestoreFlag) and the
virtual method: void store(nvar& v). The top-level class should
define a key "type" in v which gives the name of the stored object
class, e.g: v["type"] = "MyObject"; (only if this has not already
been set by a subclass) and then encodes its stored data in an nvar
keyed on the name of the class, e.g: v["MyObject"][<stored
attributes>] and last calls store() on its superclasses. NClass now
defines a static method recreate() that can reconstruct an arbitrary
NObjectBase object given that it adheres to the interface above and
a proper NClass method reconstruct() has been implemented - neu-meta
will now generate this method automatically if it finds a restore
constructor for the class. For examples, see the restore
constructors and store() on NScope, NObject, and examples/store.
-Added NObject::Eval(). In NML, parsing a complex nvar that has
nested symbolic values, will now be wrapped in Eval() to ensure that
nested symbolic values will be properly evaluated.
-Added nvar::none() which is equivalent to, but faster than: v ==
none.
-Added NObject::handleSymbol() and NObject::setHandleSymbol() to
allow subclasses of NObject to define a custom symbol handler.
-Added a variant of nvar::isFunction().
-Renamed NProgram::require() to use().
-Added nvar::precision() for computing the numerical precision of a
string. This is a helper method used in the parsers.
-Attempting to pack an nvar containing an object now packs as undef
instead of throwing an NError.
-Improvements and fixes to neu-meta. On the Mac, configs have been
updated to work with Mac OS X Yosemite and Xcode 6.1.
-Added NProgram::toArgv().
-Added nvar::sequenceType() and mapType().
-Various other minor fixes and improvements.
Neu 1.4.3 - 10/19/14
-Added threads param to NParser::parse().
-Minor fixes and improvements to NDatabase.
-Added various comments to neu/include headers to clarify the usage
of some methods.
-Improved RNG in NPL using drand48().
-Renamed NSys::stripPath() to NSys::popPath().
-NBroker::authenticate() now gets passed the communicator which it
can use for authentication, e.g: connected client's hostname and IP
address.
-Minor adjustments to NPQueue and type containers.
Neu 1.4.2 - 9/25/14
-Fixes related to NMObject. Changed NFunc signature so it passes the
name of the function before the arguments vector. To enable
NMObject, now use the builtin option / config item _mathKernelPath
instead of creating a symbolic link in neu/bin. As an example see:
conf/neu_conf.nml
Neu 1.4.1 - 9/22/14
-Updates related to neu-meta and its config files to enable it to
work with the latest release of Xcode on the Mac (6.0.1).
-When compiling LLVM/Clang for use with Neu, it is no longer
necessary to compile LLVM/Clang with libcxx.
Neu 1.4.0 - 9/15/14
-Performance improvements to the interpreter, including changes to
NObject and nvar. Changed NFunc to pass its args via an nvec instead
of nvar. Renamed NObject::process() to run() and instead of creating
several temporaries whose value is not returned, NObject has been
changed to inline these with calls to run(). Added a more efficient
return/break/continue control flow mechanism. Through these and
other changes, the interpreter runs roughly %20 faster in several
test cases.
-Several important fixes to nvar.
-Renamed nvar::hasKey() to has().
-Renamed nvar::addKey() to add().
-Added nvar::enumerate and ForEach(), which in NML borrows from C++
syntax:
for(vi : v){
// vi is the i-th item in sequence v or...
}
... if v is a map, the the key/value pair is enumerated in vi's
2-vector, with the value provided as an nvar*
-libneu_core can now be compiled without GMP and MPFR by setting
NO_PRECISE in Makefile.defs. In this case, the underlying nreal is a
double.
-In parsing NML and NPL as well as printing, a list now looks like:
`[1,2,3]
Instead of: (1,2,3)
-Completed nstr methods to spec. with C++ 11 string.
-Updated neu-meta to recognize nqueue, nset, nhset, nmap, nhmap, and
nmmap as N-compatible types.
-NSet and NHashSet now have operator<<() for insert and
nvar::operator<< now works with both set types.
-Added test/regress/database
-In parsing and printing: [flag:true] is now shortened to: [flag:]