forked from dardevelin/neu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
147 lines (99 loc) · 5.1 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
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:]