annotate R/rdyncall/inst/doc/ANNOUNCEMENT.txt @ 54:918dab7a6606

- added callback support (comes with some bigger refactoring) - allow CPython's Py{CObject,Capsule} to be used as 'p'ointers
author Tassilo Philipp
date Tue, 02 Feb 2021 20:42:02 +0100
parents 0cfcc391201f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 Initial Announcement: Package rdyncall released on CRAN. (Version 0.7.3)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 Short Introduction
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 ------------------
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 The package facilities dynamic R bindings to the C interface of some common
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 shared libraries and a flexible Foreign Function Interface for the
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 interoperability between R and C.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 Since the initial presentation of the package at Use!R 2009, a number of
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 improvements have been done to rdyncall, the low-level DynCall libraries
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 and the build system for an official release on CRAN.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 Overview
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 --------
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 The package comprises a toolkit to work with C interfaces to native code from
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 within the dynamic R interpreter without the need for C wrapper compilation:
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 - Dynamic R bindings to some common C shared libraries, across platforms.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19 - Foreign Function Interface that supports almost all C arg/return types
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 and has built-in type-checking facility.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 - Portable naming and loading of shared libraries across platforms.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 - Handling of aggregate C struct and union data types.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 - Wrapping of R functions as C callbacks.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 - Binding of C functions to R in batches.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26 The intended audience for this package are developers experienced with C, that
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28 .. need complete R bindings of C libraries.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 .. want to write cross-platform portable system-level code in R.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30 .. need a FFI that supports almost all C fundamental types for arguments
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 and return types and thus does not need compilation of wrapper C code
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32 .. want to work with C struct/union types directly in R
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33 .. are interested in dynamic binding techniques between static and dynamic
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34 languages and cross-platform binding strategies.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37 Brief Tour 1/2: Dynamic R Bindings to C Libraries
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38 -------------------------------------------------
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40 The dynamic binding interface consists of a single function, similar to
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41 'library' or 'require':
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
42
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
43 > dynport(portname)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
44
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45 portname refers to a 'DynPort' file name that represents an R binding to a
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
46 common C interface and library.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
47 The function the above has the side effect of attaching a newly created R name
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48 space, populated with thin R helper objects to C entities of the underlying
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49 C library:
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
51 - call wrapper to C functions
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
52 - symbolic constants of C macros and enums,
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 - type information objects for C struct and union data types.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 The package contains a repository of the following DynPort files:
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 Port Name | Description of C Shared Library/API
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58 ------------+-------------------------------------------------
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
59 expat | Expat XML Parser Library
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
60 GL | OpenGL 1.1 API
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
61 GLU | OpenGL Utility Library
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
62 SDL | Simple DirectMedia Layer library
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
63 SDL_image | Loading of image files (png,jpeg..)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
64 SDL_mixer | Loading/Playing of ogg/mp3/mod music files.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
65 SDL_ttf | Loading/Rendering of True Type Fonts.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
66 glew | OpenGL Extension Wrangler (includes OpenGL 3.0)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
67 gl3 | strict OpenGL 3 (untested)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
68 R | R shared library
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
69 ode | Open Dynamics (Physics-) Engine (untested)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
70 cuda | NVIDIA Cuda (untested)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
71 opencl | OpenCL (untested)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
72 stdio | C Standard Library I/O Functions
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
73
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
74 In order to use a DynPort on a host system, the shared C libraries
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
75 need to be installed first.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
76
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
77 See manual page on 'rdyncall-demos' (type ?'rdyncall-demos') for a detailed
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
78 description of the installation notes for several libraries the above,
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
79 collected for a large range of operating-systems and OS distributions.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
80
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
81 Since the rdyncall package is alredy ported across major R platforms, code
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
82 that uses a DynPort can run cross-platform without compilation.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
83
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
84 Here is a small example for using the SDL and OpenGL for multimedia/3D:
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
85
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
86 -- snip
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
87
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
88 # load SDL and OpenGL bindings
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
89 dynport(SDL)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
90 dynport(GL)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
91
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
92 # initialize video sub-system
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
93 SDL_Init(SDL_INIT_VIDEO)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
94
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
95 # open double-buffered OpenGL window surface
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
96 surface <- SDL_SetVideoMode(640,480,32,SDL_OPENGL+SDL_DOUBLEBUF)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
97
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
98 # print dimension by accessing fields external C pointer to struct SDL_Surface
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
99 print( paste("dimenstion:", surface$w, "x", surface$h ))
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
100
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
101 # clear buffer
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
102 glClearColor(0.3,0.6,0.8,0)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
103 glClear(GL_COLOR_BUFFER_BIT)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
104
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
105 # update display
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
106 SDL_GL_SwapBuffers()
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
107
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
108 -- snap
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
109
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
110 A more detailed version including user-interface handling is available
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
111 in 'demo(SDL)'.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
112
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
113
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
114 Brief Tour 2/2: Alternative FFI via '.dyncall'
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
115 ----------------------------------------------
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
116
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
117 The alternative foreign function interface offered by '.dyncal' has a similar
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
118 intend such as '.C'. It allows to call shared library functions directly from R,
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
119 but without additional wrapper C code needed, because it supports almost all
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
120 fundamental C data types and uses a function type signature text specification
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
121 for type-checking and flexible conversions between R and C values.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
122
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
123 The interface is as following:
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
124
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
125 > .dyncall(address, signature, ...)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
126
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
127 'signature' is a character string that encodes the arguments and return-type of
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
128 a C function.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
129 Here is an example of C function from the OpenGL API:
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
130
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
131 void glClearColor(float red, float green, float blue, float alpha);
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
132
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
133 one would specify the function type via "ffff)v" as type signature and
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
134 pass additional arguments for '...':
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
135
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
136 > .dyncall(addressOf_glClearColor, "ffff)v", 0.3,0.7,1,0)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
137
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
138 Support for pointers (low-level void and typed pointers to struct/union) and
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
139 wrapping of R functions to first-level C function pointers is also available.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
140
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
141 -- snip
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
142
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
143 # load C math library across major platforms (Windows,Mac OS X,Linux)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
144 mathlib <- dynfind(c("msvcrt","m","m.so.6"))
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
145
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
146 # resolve symbol 'sqrt'
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
147 x <- .dynsym(mathlib,"sqrt")
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
148
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
149 # C function call 'double sqrt(double x)' with x=144
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
150 .dyncall(x, "d)d", 144)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
151
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
152 # .dyncall uses complex mapping of types, same works with 'integer' argument:
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
153 .dyncall(x, "d)d", 144L)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
154
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
155 -- snap
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
156
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
157
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
158 Implementation Details
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
159 ----------------------
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
160
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
161 This package contains low-level services related to the generic invocation
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
162 of machine-code functions using official calling convention specifications
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
163 as the binary interface. A similar service exists for the oppositve direction
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
164 in order to write R functions and wrap them as first-level C function callback
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
165 pointers.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
166
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
167 The implementation is based on libraries from the DynCall Project that
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
168 implement a small amount of code in Assembly and have to play closely
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
169 together with the calling conventions of various processor-architectures and
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
170 platforms.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
171 The implementation can be tricky has to be done on a calling-convention
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
172 basis. The efforts legitimate this non-portsble approach due to a
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
173 very small code size and a generic machine-call solution designed for
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
174 dynamic interpreters. (total size of shared lib object in rdyncall is ~60kb )
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
175
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
176
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
177 Portability and Platforms
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
178 -------------------------
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
179
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
180 A large set of platforms and calling conventions are already supported and a
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
181 suite of testing tools ensure a stable implementation at low-level.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
182
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
183 Processor-Architectures:
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
184 - Intel i386 32-bit and AMD 64-bit Platforms
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
185 - PowerPC 32-bit (support for callbacks on System V systems not yet implemented)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
186 - ARM 32-bit (with support for Thumb)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
187 - MIPS 32- and 64-bit (support for callbacks not yet implemented)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
188 - SPARC 32-bit and 64-bit (support for callbacks not yet implemented)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
189
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
190 The DynCall libraries are tested on Linux, Mac OS X, Windows, BSD derivates,
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
191 Solaris and more exotic platforms such as game consoles, Plan9, Haiku and Minix.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
192 The R Package has been tested on several major 32- and 64-bit R platforms
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
193 including Windows 32/64-bit, Linux (i386,amd64,ppc,arm), NetBSD (i386,amd64),
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
194 Solaris (i386,amd64).
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
195
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
196 As of this release, no support for callbacks is available on MIPS or SPARC.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
197 Callbacks on PowerPC 32-bit for Mac OS X work fine, for other
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
198 ELF/System V-based PowerPC systems, callbacks are not yet implemented.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
199
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
200
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
201 Known Bugs
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
202 ----------
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
203
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
204 * PowerPC/Mac OS X 10.4: Building Universal Binaries are broken.. in particular
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
205 the as for i386 assembler.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
206 Workaround for PowerPC users: install with "--no-multiarch" or use prebuilt
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
207 binaries built on OS X >= 10.5.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
208
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
209 * SPARC Assembly sources are currently implemented for GNU assembler and do
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
210 not assemble using the 'fbe' Assembler tool on Solaris.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
211
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
212
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
213 More Information
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
214 ----------------
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
215
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
216 More demos and examples are in the package.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
217 A 20-page vignette with the title "Foreign Library Interface" is available via
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
218 > vignette("FLI")
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
219
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
220 A cross-platform audio/visual OpenGL-based demo-scene production
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
221 written in 100% pure R is available here:
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
222
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
223 http://dyncall.org/demos/soulsalicious/
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
224
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
225 A video of demo is also at the website.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
226
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
227
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
228 The website of the DynCall Project is at
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
229
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
230 http://dyncall.org/
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
231
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
232
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
233 Help and Feedback
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
234 -----------------
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
235 The package contains new methods for dynamic binding of native code to R
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
236 that were designed to work cross-platform. Thus the package required intensive
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
237 testing on a large range of processor/OS/tool-chain combinations.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
238 It was (and still is!) also very helpful to run tests on different
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
239 'distributions' of the same OS for checking e.g. the search algorithm for
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
240 locating shared libraries by a short name across operating-systems
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
241 (see '?dynfind' for details on this).
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
242
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
243 I am very thankful for any feedback including bug-reports, success and
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
244 failure stories or ideas of improvements. If you feel that an important
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
245 architecture, platform or build-tool is missing here please let me know too.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
246
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
247 The DynCall authors appreciate any support for porting the DynCall libraries
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
248 and the R package e.g. remote development accounts, qemu/gxemul images,
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
249 hardware. In particular we are currently looking for the following
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
250 arch/os/compilers environment for porting the DynCall libraries and rdyncall:
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
251
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
252 - Sparc/Solaris/SunPro
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
253 - PowerPC/AIX/XL C
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
254 - MIPS/IRIX/MIPSpro
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
255
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
256 If you can help us out, please get in contact us.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
257
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
258
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
259 ChangeLog
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
260 ---------
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
261
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
262 0.7.3: [2011-07-19] Added vignette, new ports, new tool-chain an fixes for bugs
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
263 o bugfix for Fedora/x64: added search path 'lib64' folder for 'dynfind'.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
264 o added support for Sun make, DynCall uses Makefile.embedded.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
265 o added sparc and sparc64 support using gcc tool-chain.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
266 o added support for amd64 using solaris tool-chain.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
267 o added vignette "foreign library interface".
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
268 o bugfix for solaris/x64: added search path 'amd64' folder for 'dynfind'.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
269 o bugfix in examples for libm using 'm.so.6' besides 'm' on unix
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
270 (needed by debian 6 sid unstable)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
271
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
272 0.7.2: [2011-04-27] Minor fixes
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
273 o added win64/mingw64 support.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
274
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
275 0.7.1: [2011-04-26] Minor fixes
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
276 o minor Makevars fix for parallel builds.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
277
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
278 0.7.0: [2011-04-20] Initial Release
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
279 o first upload to CRAN.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
280
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
281
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
282 enjoy,
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
283 - Daniel
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
284