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
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1">
<TITLE>loadfuncpp</TITLE>
<LINK REL="stylesheet" TYPE="text/css" HREF="loadfuncpp.css">
</HEAD>
<BODY>
<CENTER>
<P>
<TABLE BORDER="0" WIDTH="700">
<TR>
<TD WIDTH="100%">
<H1 ALIGN="CENTER"><BR>
Loadfuncpp</H1>
<H2 ALIGN="CENTER">A Dynamic Library used to aid Adding <BR>
External Functions written in C++ to<BR>
<A HREF="http://www.cs.arizona.edu/icon/lb3.htm" target="_blank">The Icon Programming Language</A></H2>
<H3 ALIGN="CENTER">Carl Sturtivant, February 2010, <FONT COLOR="#FF9900">version 0.91alpha</FONT></H3>
<BLOCKQUOTE>
<H5><FONT COLOR="#FF9900"></FONT></H5>
<H3><FONT COLOR="#CC0000">Features</FONT></H3>
</BLOCKQUOTE>
<UL>
<LI><FONT COLOR="#FF9900">Works with the existing Icon runtime system with no modification</FONT>
<LI><FONT COLOR="#FF9900">Call Icon with call syntax from C++ and vice-versa, recursively</FONT>
<LI><FONT COLOR="#FF9900">Has a simple way to create new Icon datatypes by inheritance</FONT>
<LI><FONT COLOR="#FF9900">Write new Icon functions in C++ that suspend a sequence of results</FONT>
<LI><FONT COLOR="#FF9900">Iterate in C++ through result sequences generated by Icon</FONT>
<LI><FONT COLOR="#FF9900">All Icon functions, keywords and operators made available in C++</FONT>
<LI><FONT COLOR="#FF9900">Takes care of garbage collection safety automatically</FONT>
<H5></H5>
</UL>
<BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE>
<BLOCKQUOTE>
<H4><A HREF="manual.htm">documentation</A><BR>
<A HREF="loadfuncpp.htm">experimental binaries</A><BR>
<A HREF="compile.htm">compilation options</A></H4>
</BLOCKQUOTE>
</BLOCKQUOTE>
</BLOCKQUOTE>
</BLOCKQUOTE>
<H3>News</H3>
<BLOCKQUOTE>
<P>2010/2/10 (I am releasing this now having moved on to a new implementation of the language entirely.) There
are no known bugs, but bugs almost certainly exist. This pack needs systematic in-depth testing for subtle issues
connected to garbage collection. Specifically, the mechanism to call Icon from C++ pushes onto the top of the Icon
stack a region used by a copy of the interpreter loop that's used to execute the Icon procedure called from C++.
I have not investigated how the Icon stack is garbage collected, and this region does not extend the stack the
way that Icon does. If this proves unsafe for garbage collection, the stack region for such a call may have to
have suitable frames containing pointers to the lower part of the stack (or vice-versa) placed in it to repair
this deficiency. Also, the way garbage collection safety of Icon values in C++ variables is ensured is to use the
constructor to implicitly link them onto the far end of the main co-expression's safe list, and unlink them from
there using the destructor. This is almost certainly safe from the usual call and return mechanism in iconx for
protecting local variables, but needs testing and verification.<BR>
<BR>
2009/1/20 fixed a bug where a call of any C++ external function that in turn calls Icon and afterIcon returns calls
Icon::runerr would not correctly report the name and arguments of said function in the resulting traceback. Upped
the version number to 0.91alpha.<BR>
<BR>
2009/1/20 loadfuncpp now searches for a shared object on the path defined by the environment variable FPATH with
the icon/bin directory appended if you specify no path. FPATH undefined leads loadfuncpp to search the current
directory followed by the icon/bin directory.<BR>
<BR>
2009/1/12 <FONT COLOR="#FF9900">loadfuncpp has been completely overhauled</FONT>, and the old version is now obsolete.
Many small functions have been added to eliminate ambiguities in programs that use loadfuncpp, and the central
class has been renamed and a class eliminated. Small pieces of missing functionality have been added. The documentation
has been modified accordingly. It is now close to it's final form, and in need of some serious beta testing, and
I have someone who has agreed to do that. Once this is done, loadfuncpp will be made available as a pack with the
Icon 9.5 source distribution.
</BLOCKQUOTE>
</BLOCKQUOTE>
</TD>
</TR>
</TABLE>
</CENTER>
</BODY>
</HTML>
|