<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<STYLE>@font-face {
font-family: 宋体;
}
@font-face {
font-family: Verdana;
}
@font-face {
font-family: @宋体;
}
@page Section1 {size: 595.3pt 841.9pt; margin: 72.0pt 90.0pt 72.0pt 90.0pt; layout-grid: 15.6pt; }
P.MsoNormal {
TEXT-JUSTIFY: inter-ideograph; FONT-SIZE: 10.5pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"; TEXT-ALIGN: justify
}
LI.MsoNormal {
TEXT-JUSTIFY: inter-ideograph; FONT-SIZE: 10.5pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"; TEXT-ALIGN: justify
}
DIV.MsoNormal {
TEXT-JUSTIFY: inter-ideograph; FONT-SIZE: 10.5pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"; TEXT-ALIGN: justify
}
A:link {
COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
COLOR: purple; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
COLOR: purple; TEXT-DECORATION: underline
}
SPAN.EmailStyle17 {
FONT-WEIGHT: normal; COLOR: windowtext; FONT-STYLE: normal; FONT-FAMILY: Verdana; TEXT-DECORATION: none; mso-style-type: personal-compose
}
DIV.Section1 {
page: Section1
}
UNKNOWN {
FONT-SIZE: 10pt
}
BLOCKQUOTE {
MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; MARGIN-LEFT: 2em
}
OL {
MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
UL {
MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
</STYLE>
</HEAD>
<BODY style="FONT-SIZE: 10pt; FONT-FAMILY: verdana">
<DIV><FONT size="2" color="#000080" face="Verdana">Greate!</FONT></DIV>
<DIV><FONT color="#000080">And I am tring。。。</FONT></DIV>
<DIV><FONT size="2" color="#000080" face="Verdana"></FONT> </DIV>
<DIV><FONT size="2" color="#000080" face="Verdana"></FONT> </DIV>
<DIV><FONT size="2" color="#c0c0c0" face="Verdana">2008-06-20 </FONT></DIV><FONT size="2" color="#000080" face="Verdana">
<HR SIZE="2" align="left" style="WIDTH: 122px; HEIGHT: 2px">
</FONT>
<DIV><FONT size="2" color="#c0c0c0" face="Verdana"><SPAN>useada.u</SPAN>
</FONT></DIV><FONT size="2" color="#000080" face="Verdana">
<HR>
</FONT>
<DIV><FONT size="2" face="Verdana"><STRONG>发件人:</STRONG> R. Matthew Emerson
</FONT></DIV>
<DIV><FONT size="2" face="Verdana"><STRONG>发送时间:</STRONG> 2008-06-20 13:39:36
</FONT></DIV>
<DIV><FONT size="2" face="Verdana"><STRONG>收件人:</STRONG> openmcl-devel@clozure.com
</FONT></DIV>
<DIV><FONT size="2" face="Verdana"><STRONG>抄送:</STRONG> </FONT></DIV>
<DIV><FONT size="2" face="Verdana"><STRONG>主题:</STRONG> [Openmcl-devel] 32-bit x86
port update </FONT></DIV>
<DIV><FONT size="2" face="Verdana"></FONT> </DIV>
<DIV><FONT size="2" face="Verdana">
<DIV>Here is a status update on the 32-bit x86 port.</DIV>
<DIV> </DIV>
<DIV>There's been some good progress since the last status message I sent </DIV>
<DIV>out about six or seven weeks ago.</DIV>
<DIV> </DIV>
<DIV>The lisp (I think it's fair to call it a lisp now) can self-host. In </DIV>
<DIV>other words, it compiles itself now. I very rarely have any occasion </DIV>
<DIV>to cross-compile it any more.</DIV>
<DIV> </DIV>
<DIV>The GC works. I'm chasing a heap corruption bug or two, but I think </DIV>
<DIV>it's unlikely that the corruption is the GC's fault. (One of the bits </DIV>
<DIV>that can be set in ccl::*gc-event-status-bits* turns on heap integrity </DIV>
<DIV>checking in the GC. This causes the GC to check the heap before and </DIV>
<DIV>after it does its thing. So far, the heap corruption has always been </DIV>
<DIV>reported in the pre-gc heap integrity check.)</DIV>
<DIV> </DIV>
<DIV>You can now use SLIME (which implies that basic threading is working, </DIV>
<DIV>though I suspect there might be some thread-related bugs here or there).</DIV>
<DIV> </DIV>
<DIV>I've been working through Paul Dietz's ANSI CL test suite, finding and </DIV>
<DIV>fixing bugs as I go. That test suite has been a very useful stress </DIV>
<DIV>test, I must say.</DIV>
<DIV> </DIV>
<DIV>One important thing that remains to be done is to fill out some FFI </DIV>
<DIV>details, primarily involving returning structures by value. The IA-32 </DIV>
<DIV>ABI is not *that* complicated, so this might not be a terribly big </DIV>
<DIV>job. (Since Cocoa and Carbon return structures all day long, this </DIV>
<DIV>means that the Cocoa IDE doesn't work yet.) Also, Objective-C </DIV>
<DIV>exception handling needs to be addressed.</DIV>
<DIV> </DIV>
<DIV>When the lisp passes the test suite, and the FFI details are filled </DIV>
<DIV>in, it will be time to merge the ia32 branch with the trunk and </DIV>
<DIV>unleash it on an unsuspecting world.</DIV>
<DIV> </DIV>
<DIV>If you're really adventurous, you can check out a copy of the current </DIV>
<DIV>work-in-progress. It only runs on Mac OS X. I've only ever run it on </DIV>
<DIV>Leopard.</DIV>
<DIV> </DIV>
<DIV>If you do this, *please* *please* *please* understand that this thing </DIV>
<DIV>is really buggy, and we know that it's really buggy. Please don't </DIV>
<DIV>take the (non-) quality of the 32-bit Intel port as being </DIV>
<DIV>representative of the other (x8664/ppc32/ppc64) ports, which are </DIV>
<DIV>stable and reliable.</DIV>
<DIV> </DIV>
<DIV>If you've got Leopard with the developer tools installed, you can </DIV>
<DIV>check out a working copy with the following command:</DIV>
<DIV> </DIV>
<DIV>$ svn co <A href="http://svn.clozure.com/publicsvn/openmcl/branches/ia32">http://svn.clozure.com/publicsvn/openmcl/branches/ia32</A></DIV>
<DIV> </DIV>
<DIV>After that finishes, you should be able to build the lisp kernel, run </DIV>
<DIV>the lisp, and recompile the sources:</DIV>
<DIV> </DIV>
<DIV>$ cd ia32/lisp-kernel/darwinx8632</DIV>
<DIV>$ make</DIV>
<DIV>[...]</DIV>
<DIV>$ cd ../..</DIV>
<DIV>$ ./dx86cl</DIV>
<DIV>Welcome to Clozure Common Lisp Version 1.1-r8833:9797MS (DarwinX8632)!</DIV>
<DIV>? (rebuild-ccl :full t)</DIV>
<DIV>[...]</DIV>
<DIV>;Wrote bootstrapping image: #P"/Users/rme/xxx/ia32/x86-boot32.image"</DIV>
<DIV>;Wrote heap image: #P"/Users/rme/xxx/ia32/dx86cl.image"</DIV>
<DIV>? (quit)</DIV>
<DIV>$ ./dx86cl</DIV>
<DIV>Welcome to Clozure Common Lisp Version 1.1-r8833:9797MS (DarwinX8632)!</DIV>
<DIV>?</DIV>
<DIV> </DIV>
<DIV>N.B.: the lisp kernel Makefile enables a debugging feature that makes </DIV>
<DIV>the GC always use a slower, but more memory-efficient marker (we're </DIV>
<DIV>doing this for stress-testing). Also by default, flags are set in </DIV>
<DIV>ccl::*gc-event-status-bits* that cause the GC to do heap integrity </DIV>
<DIV>checking every time it runs. The combination of these two things </DIV>
<DIV>slows down GC by a huge amount.</DIV>
<DIV> </DIV>
<DIV>You might wish to run the lisp under gdb. You'd say something like:</DIV>
<DIV>$ gdb dx86cl</DIV>
<DIV>(gdb) source lisp-kernel/darwinx8632/.gdbinit</DIV>
<DIV>Breakpoint 1 at 0xe258: file ../lisp-debug.c, line 1003.</DIV>
<DIV>(gdb) run</DIV>
<DIV>Starting program: /Users/rme/xxx/ia32/dx86cl</DIV>
<DIV>Reading symbols for shared libraries +. done</DIV>
<DIV>Welcome to Clozure Common Lisp Version 1.1-r9799MS (DarwinX8632)!</DIV>
<DIV>?</DIV>
<DIV> </DIV>
<DIV>If you are crazy enough to try it out, I'd certainly like to hear </DIV>
<DIV>about bugs you encounter, especially if you can provide a brief test </DIV>
<DIV>case that exhibits the bug. Please feel free to enter bugs in the </DIV>
<DIV>Trac site at <<A href="http://trac.clozure.com/openmcl/">http://trac.clozure.com/openmcl/</A>
>.</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>_______________________________________________</DIV>
<DIV>Openmcl-devel mailing list</DIV>
<DIV>Openmcl-devel@clozure.com</DIV>
<DIV><A href="http://clozure.com/mailman/listinfo/openmcl-devel">http://clozure.com/mailman/listinfo/openmcl-devel</A></DIV></FONT></DIV></BODY></HTML>