summaryrefslogtreecommitdiff
path: root/History.txt
blob: 8e1e8bd9f36151f1edf831b20d927d603ecfa506 (plain)
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
== 0.5.4 / 2009-11-26
* Bug fixes
  * FreeBSD compilation fixes
  * Use -mwin32 flag for cygwin builds
  
== 0.5.2 / 2009-11-06
* Bug fixes
  * powerpc64/ppc64 cpu detection
  * big-endian 64bit fixes
  * Use system libffi when possible

== 0.5.1 / 2009-10-19
* Bug fixes
  * fixed up struct-by-value result variadic invokers

== 0.5.0 / 2009-10-06

* Major improvements
  * New Function class
  * Structs can be passed and returned by value
  * Implement a custom trampoline for x86_64, resulting in roughly 30% speedup
  * Improve dispatch of functions which take (0..6) char/short/int/long/pointer arguments by between 50% and 200% on x86_64
  * Callbacks are now approximately 100% faster on x86_64
* Minor improvements
  * Add support for MacOSX Snow Leopard
  * Improve support for Windows releasing fat binaries on rubyforge
  * Better introspection in structs:
    * Add StructLayout::Field#type, size, offset, alignment and name 
      methods
    * Add StructLayout#fields which returns an array of 
      StructLayout::Field objects
  * Add automagic deducing of library name from module name. 
    Idea and prototype implementation from Matt Hulse
  * Callback fields in structs can now be both read and written
  * Add a bunch of new benchmarks
  * Lots of refactoring
* Experimental features
  * blocking functions (i.e. native code that blocks the thread) support
* Bug fixes
  * Fix RUBY-FFI_43 (rake gem dependency)

== 0.4.0 / 2009-08-05

* Major improvements
  * Add support for boolean types
  * Add support for methods as callbacks
  * Add FFI::IO.read as described in JRUBY-3636
* Minor improvements
  * Add Pointer::NULL constant
  * Add AbstractMemory#get_array_of_string()
  * Implement Pointer.new(address) and Pointer.new(:type, address)
* Bug fixes
  * Fix RUBY_FFI-38
  * Fix issues related to 1.9.1 build
  * Fix issues related to OSX build
  * Fix issues related to FreeBSD build
  * Fix issues related to OpenSolaris build

== 0.3.5 / 2009-05-08

* Bug fixes
  * Fix RUBY_FFI-17
  * Fix RUBY_FFI-21

== 0.3.4 / 2009-05-01

* Minor improvements
  * Add return statements to functions that call rb_raise(), in case
    rb_raise is not declared noreturn, to avoid gcc warnings.

== 0.3.3 / 2009-04-27

* Minor improvements
  * Implement RUBY_FFI-16 - Add support for anonymous callbacks
  * Add support for callback parameters in callbacks
  * Add support for function pointer return values
  * Callbacks can now coerce proc objects into function pointers for
    return values.
  * Implement FFI::Type and FFI::Type::Builtin
  * Add support for enumerations
* Bug fixes
  * Fix RUBY_FFI-19
  * Fix RUBY_FFI-15

== 0.3.2 / 2009-05-01

* Bug fixes
  * Fix JRUBY-3527 by passing RTLD_GLOBAL instead of RTLD_LOCAL

== 0.3.1 / 2009-03-23

* Bug fixes
  * Correctly save errno/GetLastError after each call.

== 0.3.0 / 2009-03-19

* Switch compilation to rake-compiler
  * Makes cross-compilation from linux -> win32 super easy
  * win32 support is available now, but highly experimental
* Performance improvements
  * struct field access approx 3x faster than 0.2.0
  * function invocation approx 20% faster than 0.2.0
* A bunch of minor improvements
  * Struct instances can now be passed as :pointer parameters without calling
    Struct#pointer
  * Support for array struct members
  * Structs are now padded correctly to the alignment of the struct's  
    largest field
  * Global library variables
  * Callbacks in global library variables
  * Strings passed in as :string arguments are scrubbed to avoid 
    poison-null-byte attacks.
  * Union support
  * nil can be passed as a :string argument (passed as NULL)
  * Structs can now be fields inside another struct
  * Lots of internal cleanups and refactorings.