forked from cpgf/cpgf
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchangelog
230 lines (207 loc) · 16.3 KB
/
changelog
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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
2017-03-25 version 1.6.0
Now the library requires C++11.
Rewrote the callback system using C++ variadic template.
Rewrote GVariant using C++ variadic template.
Optimized script binding performance. Now the performance is a little more than doubled.
Added script array support in script binding engine. Now C++ code can access arrays defined in script.
Script binding, now script can inherit from C++ class. Available in Lua, V8, and SpiderMonkey.
Added script context in script binding.
Added customized value converter in script binding.
In GMetaType, added function baseIsStdString and baseIsStdWideString to determine if a meta type is std::string or std::wstring.
Added VC 2012 and VC 2013 entries in build makefile for easy use.
Added source group in CMake build file to filter files better in VC IDE.
Optimization in script binding. Now the script objects are reused when possible when passing C++ objects to the script engine. Slightly lower memory and higher performance.
Added stack trace message in V8 runner. Now the error line number and stack frames can be printed to the console.
Fixed a memory leak in V8 script binding when constructing V8 object from C++.
Fixed a bug that the script instance cache may cause crash when the library is shutting down, due to unordered uninitialization.
Fixed a bug that script function can't live after its owner script object is freed. Now script function can have its own lifetime.
Build config, removed "-D_SECURE_SCL=0 -D_HAS_ITERATOR_DEBUGGING=0" in VC building to avoid linking error with third party libraries.
Build config, building with nmake will generate cpgf.lib in folder lib/Debug/ or lib/Release/, instead of lib/
2013-07-26 version 1.5.6
Added Mozilla SpiderMonkey JavaScript binding. Only tested on Windows with VC.
Added GScriptValue to represent values in script binding.
Enhanced fundamental type handling in script binding. Now the overloaded function with bool, integer, real (float, double) can be selected correctly.
Upgraded thirdparty library jsoncpp to 0.6.0 rc2 from 0.5.0. The new version supports int64. The library is used in the serialization library.
Fixed a memory leak in script runner.
Fixed a compile error in CMake file when some third party libraries are not available.
Fixed a compile error when compiling in VC in Win64 mode.
Fixed a compile error when /Zc:wchar_t- is set in VC.
Fixed a gcc 4.7.2 warning when deleting object which lacks of virtual destructor.
Fixed a compiler error in rapidxml in gcc 4.7.2.
Backward incompatible changes:
GScriptObject::gainScriptFunction was renamed to getScriptFunction, and the return value was changed to GScriptValue.
GScriptObject::createScriptObject result type was changed to GScriptValue, which stores an interface IScriptObject.
In GScriptObject, the function bindXXX (such as bindClass) and getXXX (such as getClass) are now deprecated. They will be removed in the future. Use GScriptObject::getValue and GScriptObject::setValue instead.
Removed file gfunctionextractor.h and function extractFunction, use gselectfunctionbyarity.h and selectFunctionByArity instead.
2013-05-05 version 1.5.5
Added tweening and timeline library.
Added generic property accessors, getter and setter.
Refactored meta property to reuse generic property accessors.
Fixed a bug that using function (not pointer) as property accessor may cause wrong address crash in VC.
Fixed a bug that using policy GMetaRuleExplicitThis on property setter may cause wrong argument being selected.
Fixed a compile error in gstdint.h in VC 2012.
2013-02-23 version 1.5.4
Improved property supporting in serialization. Now the serialization library can handle properties with getter and setter functions properly.
Added including header <cstddef> to gcontainer.h to avoid not finding ptrdiff_t error on some system.
2012-12-09 version 1.5.3
Python script binding now supports C++ operator overloading.
Metagen tool can put template instantiations in separated source file.
Now meta data for Irrlicht 3D engine supports Irrlicht 1.8.
2012-11-24 version 1.5.2
Added meta data for Irrlicht 3D engine. Now we can use Irrlicht in Lua, JavaScript and Python.
18 samples in Irrlicht were converted to Lua, JavaScript and Python.
Added function "import" in script binding core service to load libraries at runtime from within script.
Added GMetaObjectArray to use C++ object array in script.
Added GMetaDebug to ease debugging script. Now script can set break point (int 3) and trace messages.
Added GMetaCore to provide core functions in script. cloneClass was moved to GMetaCore. A new function "cast" was added to cast object from script. To use "cast", RTTI must be enabled in the meta data.
Improved reflecting for variadic functions, now suppport non-variadic parameters. E.g, int myVariadicFunc(int a, const char * b, GMetaVariadicParam * v);
Now dotted nested namespace can be passed to createScriptObject. E.g, createScriptObject("a.b.c"), then script can use the script object a.b.c
Added function holdObject to GScriptObject and IScriptObject to hold meta data which is created dynamically.
Added meta traits to manage script object lifetime. Now script engine can handle cpgf interfaces correctly.
Metagen can reflect bitfield as property by adding getter and setter functions.
Metagen can wrap C++ operator overloading with named function, which is usable by script.
Metagen can split large source file to smaller files.
Now fromVariant<GVariant>(variant) will return the variant directly.
Changed the utility functions in gmetaapiutil.h from template to non-template, to keep the API minimal.
Moved and renamed gbytearray.h/cpp to metautility/gmetabytearray.h/cpp, and renamed class GByteArray and GMetaByteArray.
Renamed byte array functions getMemory/getCurrentMemory to getPointer/getCurrentPointer.
Now when passing to method parameter, or setting to field, object pointer can be casted correctly according to the class hierarchy. This is useful in multiple inheritance.
Removed function gainScriptObject from GScriptObject and IScriptObject. Now createScriptObject can return the existing script object.
Improved meta traits.
Now in reflection, the base meta class can be resolved correctly even it is reflected later than derived classes.
Now converting an C++ object to GVariant won't trigger any operator & overloading.
Fixed a bug that in script, assign an object with another variable with same instance may cause the object be freed.
Fixed a bug that in Python binding, None value was not handled when passing from script to C++ and it was converted to wrong GVariant.
Fixed a bug that in V8 Javascript binding, there is null pointer crash if the object constructor returns NULL. Now an exception is raised instead of crash.
Fixed a bug that function isInheritedFrom in GMetaClass and IMetaClass works wrong.
Fixed a bug that if a GVariant holding a reference to fundamental, when casting it to a fundamental in different type size, the result is wrong.
Fixed a bug that script binding doesn't distinguish between functions which are only different in constness.
2012-10-13 version 1.5.1
Support shared pointer in script binding. There are meta traits for shared pointer in C++11, Boost, and cpgf.
Removed class GMetaVariant and file gmetavariant.h
Added new variant type vtTypedVar to support holding meta type in GVariant.
Script object created by createScriptObject in Python binding, now supports attribute access as a.attr instead of a["attr"], to be consistent with other script bindings.
Added destroyInplace to meta class to destruct an object but don't free the memory.
Fixed a bug that invokeScriptFunction may crash if the calling function or object is freed during the function call.
Fixed a bug that GVariant converts shadow object to wrong pointer. (It was assumed to convert to value, now it can be converted to pointer)
Fixed a bug that the meta policy transfer object owner ship doesn't work for method parameter in script binding.
Removed gbytearrayapi.h, removed IByteArray to minimum the API interface.
2012-09-22 version 1.5.0
Significantly rewritten the script binding engine. Now the code is much better!
Now script can "inherit" from C++ class, in a unified way. Script can call cpgf.cloneClass to do that. See unit tests of metagen.
Now script can pass meta class back to C++. In script, func(CppClass), in C++, func(IMetaClass * cppClass).
Rename function injectMetaClassToScript to injectObjectToScript which is more appropriate.
2012-07-28 version 1.4.5
Fixed a bug that in V8 binding, passing existing C++ object to script will cause a new object is created.
In script binding, now script function can override C++ virtual member functions.
Fixed memory leak in class GMetaVariant.
Removed meta name replacer from meta data.
2012-07-07 version 1.4.4
Script binding supports wide string (wchar_t *) in method parameters and return value.
vtByteArray is removed from GVariant.
Now script binding doesn't auto convert IByteArray * to void *, the script should use IByteArray::getMemory to pass the pointer.
Lua binding, fixed a bug that no exception was thrown when assigning to enumerator value.
Refactored the script binding engines a lot.
Added code for tutorials in samples folder.
2012-06-09 version 1.4.3
Added Python script binding for Python 2.7.3. (warning -- may memory leak)
Function fromVariant -- now integer 0 can be auto casted to NULL pointer.
Fixed a bug that the ownerItem in GMetaItem in a dangling define may point to bad pointer.
2012-05-26 version 1.4.2
Added object pool to interface based reflection APIs to reduce memory fragment and improve performance.
Added Lua 5.2 support in script binding. Now both Lua 5.1 and 5.2 are supported.
Fixed a bug in Lua binding that global accessor uses wrong table.
2012-05-19 version 1.4.1
Added meta data for SFML library. All meta data is auto generated by the tool metagen.
Added sample code to demonstrate using SFML in Lua and V8 Javascript.
Rewrote the tool metagen in Java.
Enhanced metagen to be able to handle more complicated classes.
Added script runner to make executing script easier.
Now a normal function can be reflected as meta constructor. Useful to add extra constructors to classes.
Split CMakeLists.txt to several single files for better structure.
Added separated temporary folders to CMake build for MinGW and VC.
Changed build.config.txt do disable all non-core component, such as Lua, V8 binding, by default.
Fixed a few compile errors when reflecting certain kind of classes.
Fixed a bug that cause crash on bad pointer when reflecting nested classes.
Fixed a bug that crashes when base class is not reflected in script binding.
Fixed a bug in Lua binding that treated nil as 0, now nil will be converted to (void *)0.
2012-04-22 version 1.4.0
Added serialization library.
Added meta traits for script binding and serialization.
The old meta converter of std::string is refactored to meta traits.
Now GVariant supports wide string.
Fixed a bug that annotation interface may point to NULL meta annotation.
Added sample and unit tests for serialization.
2012-02-26 version 1.3.0
Added a tool written in Perl to generate meta data from Doxygen XML files automatically. (Basic features, only tested with Box2D)
Added meta data for Box2D physical engine.
Added a sample application for Box2D binding.
Now the OpenGL metadata can be compiled with GCC.
Added the OpenGL sample to cmake build file.
Added policy GMetaPolicyDestructorAbsent to allow meta data for class with private destructor.
Added class GDefineMetaInfo in gmetadefine.h to ease splitting meta data building to different source files. (Reduce using templates).
Added "dangle" and GDefineMetaDangle.
Added function getStdTypeInfo to GTypeInfo to get C++ type info.
Removed all virtual functions from meta templates to reduce code bloat (the unit test executable size is decreased by 10%).
Fixed a bug that _class prototype in GMetaDefine is wrong.
2012-02-05 version 1.2.5
Support parameters default value for meta invokable. Method, constructor and object functor operator.
Refactored GMetaEnum to remove unnecessary code.
2012-01-28 version 1.2.4
Added meta data for OpenGL, GLU, and GLUT.
Added binary data support (via IByteArray) in script binding.
Added a sample application to show how to use OpenGL in Lua and V8 Javascript.
Extended meta enum to accept a GVariant. Now meta enum can be not only integer, but also float, pointer, string, etc. Useful to reflect constants.
Fixed a bug in V8 binding that enum value can't be accessed through class.
2012-01-24 version 1.2.3
Added script function wrapper. Now script can pass script function to C++ as method parameters.
Added script object wrapper. Now script can pass script object to C++ as method parameters.
Added meta data for STL iterator, vector, list and deque.
V8 binding -- Added object property enumerator. Now using for..in will enumerate all meta data in the object.
Added policy GMetaRuleGetterExplicitThis and GMetaRuleSetterExplicitThis for property getter and setter.
Added vtInterface in GVariant.
Improved code portability, now the library can compile in Intel C++ Compiler Composer XE and Embarcadero C++ Builder 2010.
Fixed a bug that in script binding, if a method returns GVariant, the result will be wrongly converted to an object.
2012-01-07 version 1.2.2
Added meta policy GMetaRuleExplicitThis.
Support binding object functor as meta method.
Support C++0x/C++11 rvalue reference in variant, callback and reflection.
Support return reference to fundamental from script function. (Pass by value instead of reference)
Renamed GDefineMetaClass::inner to GDefineMetaClass::declare.
Now the meta class created by GDefineMetaClass::declare can be freed automatically if it's not added to other class.
Refactored to make script binding less dependence on static variables.
Fixed a bug that can't cast a variant with fundamental to const T &.
Fixed a bug that crash when return unbound nested class from member function in V8 binding.
2011-12-18 version 1.2.1
Fixed the code compatibility. Now the library can be compiled by GCC 3.4.2. (Tested with MingW GCC).
Remove a type casting between void * and function pointer in gcallback. Now the library is more compatible with C++ standard.
Added xcode project generating in CMake build.
2011-12-17 version 1.2.0
Added new meta data definition syntax. Now no macro is required to build the meta data.
Added bindAccessible in script binding.
Removed gmetareflect .h and .cpp, which was macro based meta data reflection.
2011-12-10 version 1.1.0
Added Google V8 Javascript engine binding.
Added non-meta data support in script binding. The script can use arbitrary data type. (void *, T *, while T is not reflected).
Added second parameter "void ** outInstance" to function GScriptObject::getMethod
Refactored unit tests of script binding.
Added unit tests for script binding of Lua and V8.
Removed GScriptName and changed all name type to const char *
Fixed a memory bug that cause binding engine wrong references to GScriptConfig on the stack.
Fixed memory leak in GScopedInterface when call "reset" with same pointer.
Fixed a bug that can't access a member object's member in script binding. (a.b.c = 1 will cause a.b be copied, now a.b is referenced)
2011-11-27 version 1.0.1
Refactored Lua binding, using better and faster algorithm to travel for data and methods.
Distinguish static and member data access in Lua binding.
Add: class GMetaClassTraveller in gmetaclasstraveller.h to ease iterating class hierarchy.
Add: function gdynamic_cast in gglobal.h for safe and fast dynamic cast.
Add: unit tests test_lua_basic.cpp, test_lua_operator.cpp, test_lua_hierarchy.cpp
Bug fix: binding Lua operators to wrong meta table.
Bug fix: Lua passes two parameters to __unm operator that cpgf doesn't handle correctly.
Bug fix: some exceptions raised by interface API were not detected in Lua binding. Now re-throw it to Lua.
Memory leak fix: leak when exception is raised during any Lua callback.
Remove: function getMethodList and getMethodListInHierarchy from GMetaClass and IMetaClass. They were replaced with better algorithm.
Remove: error output to stderr in Lua binding.
Add separate license file.
2011-11-05 version 1.0.0
First release.