PageRenderTime 54ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/d/GDC.html

https://bitbucket.org/goshawk/gdc/
HTML | 799 lines | 691 code | 108 blank | 0 comment | 0 complexity | fb1a39fd5f256cf7ae4e01c4f6992e4f MD5 | raw file
Possible License(s): GPL-2.0, AGPL-1.0
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
  5. <title>D Front End for GCC</title>
  6. </head>
  7. <body>
  8. <h2>D Front End for GCC - Release 0.30<br>
  9. </h2>
  10. Last update: July 24, 2011<br>
  11. <h3>Supported Systems</h3>
  12. <ul>
  13. <li>GCC 4.2.x, 4.3.x, 4.4.x, 4.5.x, 4.6.x<br>
  14. </li>
  15. <li>Linux (tested on Debian Sid and Ubuntu Oneiric x86, x86_64)<br>
  16. </li>
  17. <li>Mac OS X 10.3.9, 10.4.x<br>
  18. </li>
  19. <li>FreeBSD 6.x, 7.x</li>
  20. <li>Cygwin</li>
  21. <li>MinGW</li>
  22. <li>AIX (tested on 5.1)</li>
  23. </ul>
  24. Similar versions of the above systems should work and other Unix
  25. platforms may
  26. work.&nbsp;
  27. Although the compiler will
  28. probably work on most architectures, the D
  29. runtime library will still need to be updated to support them.<br>
  30. <h3>Requirements</h3>
  31. The MacOS X universal binary package requires XCode 2.4.1 or the
  32. equivalent version of cctools.
  33. <h3>Downloads</h3>
  34. <ul>
  35. <li><a href="http://bitbucket.org/goshawk/gdc/wiki/Home">Main
  36. package</a></li>
  37. <li><a href="INSTALL.html">Build Instructions</a></li>
  38. </ul>
  39. <h3>Links</h3>
  40. <ul>
  41. <li><a href="http://bitbucket.org/goshawk/gdc/wiki/Home">GDC: D
  42. Compiler for GCC</a><br>
  43. </li>
  44. <li><a href="http://www.digitalmars.com/d/">The D
  45. Programming Language</a></li>
  46. <li><a href="http://digitalmars.com/d/dlinks.html">D
  47. Links Page</a><br>
  48. </li>
  49. <li><a href="news://news.digitalmars.com/D.gnu">The
  50. D.gnu newsgroup</a></li>
  51. <li>For general D discussion, the <a href="news://news.digitalmars.com/digitalmars.D">digitalmars.D</a>
  52. and <a href="news://news.digitalmars.com/digitalmars.D.bugs">digitalmars.D.bugs</a>
  53. newsgroups<br>
  54. </li>
  55. <li><a href="http://gcc.gnu.org/">The GNU Compiler
  56. Collection</a></li>
  57. <li><a href="http://gdcmac.sourceforge.net/">Mac
  58. OS X binary
  59. distribution</a><br>
  60. </li>
  61. </ul>
  62. <h3>Contact</h3>
  63. David Friedman<br>
  64. e-mail: dvdfrdmn &lt;at&gt; users.sf.net<br>
  65. Iain Buclaw<br>
  66. e-mail: ibuclaw &lt;at&gt; ubuntu.com<br>
  67. Michael Parrott<br>
  68. e-mail: baseball.mjp &lt;at&gt; gmail.com<br>
  69. <h3>Status<br>
  70. </h3>
  71. <h4>Known Issues </h4>
  72. <ul>
  73. <li>See the <a href="http://svn.kuehne.cn/dstress/www/dstress.html">DStress</a>
  74. page for known failing cases.<br>
  75. </li>
  76. <li>Debugging information may have a few problems. To enable D
  77. name
  78. mangling in gdb, apply <a href="http://dsource.org/projects/gdb-patches/">this patch</a>.<br>
  79. </li>
  80. <li>Some targets do not support once-only linking. A workaround
  81. is to
  82. manually control template emission. See the <span style="font-family: monospace;">-femit-templates</span>
  83. option below. For Darwin, Apple's GCC 3.x compiler supports
  84. one-only linking, but GDC does not build with those sources. There are
  85. no
  86. problems with the stock GCC 4.x on Darwin.<br>
  87. </li>
  88. <ol>
  89. </ol>
  90. <li>Complex floating point operations may not work the same as
  91. DMD.</li>
  92. <li>Some math functions behave differently due to different
  93. implementations of the extended floating-point type.</li>
  94. <li>Volatile statements may not always do the right thing.</li>
  95. <li>Because of <a href="http://groups-beta.google.com/groups?hl=en&amp;q=%22large+executables+on+AIX%22&amp;qt_s=Search">a
  96. problem on AIX</a>, the linker will pull in more modules than
  97. needed.<br>
  98. </li>
  99. <li>Some C libraries (Cygwin, MinGW, AIX) don't handle
  100. floating-point
  101. formatting and parsing in a standard way.<br>
  102. </li>
  103. </ul>
  104. <h4>Known Differences from DMD</h4>
  105. <ul>
  106. <li>The type of <span style="font-family: monospace;">_argptr</span>
  107. in variadic functions is the target-specific <span style="font-family: monospace;">va_list</span>
  108. type.&nbsp; The only
  109. portable way
  110. to use <span style="font-family: monospace;">_argptr</span>
  111. is the <span style="font-family: monospace;">std.stdarg.va_arg</span>
  112. template.&nbsp; In particular, you cannot construct a <span style="font-family: monospace;">va_list</span> from a
  113. pointer to data
  114. an expect it to work.<br>
  115. </li>
  116. <li>In assembler code, direct access to parameters in naked
  117. functions
  118. works differently.&nbsp; Frame relative addressing through <span style="font-family: monospace;">[ESP+4]</span> does
  119. work the same way.<br>
  120. </li>
  121. <li>Currently, GDC uses the C calling convention for all
  122. functions
  123. except those declared <span style="font-family: monospace;">extern
  124. (Windows)</span>.</li>
  125. <li>GDC allows <span style="font-family: monospace;">catch</span> statements in <span style="font-family: monospace;">finally</span>
  126. blocks.</li>
  127. <li><span style="font-family: monospace;">pragma(lib)</span>
  128. is not
  129. supported.</li>
  130. <li>Some targets do not have a distinct extended floating-point
  131. type.&nbsp; On these targets, <span style="font-family: monospace;">real</span>
  132. and <span style="font-family: monospace;">double</span>
  133. are the same
  134. size.</li>
  135. <li>On Win32, GDC allocates 12 bytes for the <span style="font-family: monospace;">real</span> type,
  136. while DMD allocates
  137. 10 bytes. This also applies to the components of the <span style="font-family: monospace;">creal</span> type.<br>
  138. </li>
  139. </ul>
  140. <h4>Inline Assembler Notes</h4>
  141. <ul>
  142. <li>Getting GCC to respect the "naked" attribute is
  143. difficult.&nbsp;
  144. It is recommended that you use only assembler statements in a naked
  145. function. &nbsp;When generating position-independent code, accessing global symbols in a naked function will result in an error.</li>
  146. <li>Jumps from assembler statements will not run cleanups (auto
  147. and
  148. finally)</li>
  149. </ul>
  150. <h3>Usage</h3>
  151. <h4>Invoking gdc and gdmd</h4>
  152. The compiler driver is named 'gdc' and accepts the standard GCC
  153. options.&nbsp; There is also a script named 'gdmd' which has the
  154. same
  155. interface as the Digital Mars dmd.<br>
  156. <br>
  157. The mapping from DMD options to GCC is as follows:<br>
  158. <table style="text-align: left; width: 50%;" border="1" cellpadding="2" cellspacing="2">
  159. <tbody>
  160. <tr>
  161. <td style="vertical-align: top;">-c<br>
  162. </td>
  163. <td style="vertical-align: top;">-c<br>
  164. </td>
  165. </tr>
  166. <tr>
  167. <td style="vertical-align: top;">-D<br>
  168. </td>
  169. <td style="vertical-align: top;">-fdoc<br>
  170. </td>
  171. </tr>
  172. <tr>
  173. <td style="vertical-align: top;">-Dd&lt;docdir&gt;<br>
  174. </td>
  175. <td style="vertical-align: top;">-fdoc-dir=&lt;docdir&gt;<br>
  176. </td>
  177. </tr>
  178. <tr>
  179. <td style="vertical-align: top;">-Df&lt;filename&gt;<br>
  180. </td>
  181. <td style="vertical-align: top;">-fdoc-file=&lt;filename&gt;<br>
  182. </td>
  183. </tr>
  184. <tr>
  185. <td style="vertical-align: top;">-d</td>
  186. <td style="vertical-align: top;">-fdeprecated</td>
  187. </tr>
  188. <tr>
  189. <td style="vertical-align: top;">-debug[=&lt;arg&gt;]<br>
  190. </td>
  191. <td style="vertical-align: top;">-fdebug[=&lt;arg&gt;]<br>
  192. </td>
  193. </tr>
  194. <tr>
  195. <td style="vertical-align: top;">-deps=&lt;arg&gt;<br>
  196. </td>
  197. <td style="vertical-align: top;">-fdeps=&lt;arg&gt;<br>
  198. </td>
  199. </tr>
  200. <tr>
  201. <td style="vertical-align: top;">-g<br>
  202. </td>
  203. <td style="vertical-align: top;">-g<br>
  204. </td>
  205. </tr>
  206. <tr>
  207. <td style="vertical-align: top;">-inline<br>
  208. </td>
  209. <td style="vertical-align: top;">-finline-functions<br>
  210. </td>
  211. </tr>
  212. <tr>
  213. <td style="vertical-align: top;">-I&lt;path&gt;<br>
  214. </td>
  215. <td style="vertical-align: top;">-I
  216. &lt;path&gt;<br>
  217. </td>
  218. </tr>
  219. <tr>
  220. <td style="vertical-align: top;">-J&lt;path&gt;<br>
  221. </td>
  222. <td style="vertical-align: top;">-J&lt;path&gt;<br>
  223. </td>
  224. </tr>
  225. <tr>
  226. <td style="vertical-align: top;">-L&lt;arg&gt;<br>
  227. </td>
  228. <td style="vertical-align: top;">-Wl,&lt;arg&gt;<br>
  229. </td>
  230. </tr>
  231. <tr>
  232. <td style="vertical-align: top;">-O<br>
  233. </td>
  234. <td style="vertical-align: top;">-O3 without
  235. inlining (may not be
  236. equivalent)<br>
  237. </td>
  238. </tr>
  239. <tr>
  240. <td style="vertical-align: top;">-o-<br>
  241. </td>
  242. <td style="vertical-align: top;">-fsyntax-only<br>
  243. </td>
  244. </tr>
  245. <tr>
  246. <td style="vertical-align: top;">-od&lt;dir&gt;<br>
  247. </td>
  248. <td style="vertical-align: top;">no equivalent; use the wrapper script<br>
  249. </td>
  250. </tr>
  251. <tr>
  252. <td style="vertical-align: top;">-of&lt;file&gt;</td>
  253. <td style="vertical-align: top;">-o
  254. &lt;file&gt;<br>
  255. </td>
  256. </tr>
  257. <tr>
  258. <td style="vertical-align: top;">-op&lt;dir&gt;<br>
  259. </td>
  260. <td style="vertical-align: top;">no equivalent; use the wrapper script<br>
  261. </td>
  262. </tr>
  263. <tr>
  264. <td style="vertical-align: top;">-profile<br>
  265. </td>
  266. <td style="vertical-align: top;">(see the GCC manual for profiling options)</td>
  267. </tr>
  268. <tr>
  269. <td style="vertical-align: top;">-quiet<br>
  270. </td>
  271. <td style="vertical-align: top;">no equivalent<br>
  272. </td>
  273. </tr>
  274. <tr>
  275. <td style="vertical-align: top;">-release<br>
  276. </td>
  277. <td style="vertical-align: top;">-frelease<br>
  278. </td>
  279. </tr>
  280. <tr>
  281. <td style="vertical-align: top;">-run<br>
  282. </td>
  283. <td style="vertical-align: top;">no equivalent; use the wrapper script</td>
  284. </tr>
  285. <tr>
  286. <td style="vertical-align: top;">-unittest<br>
  287. </td>
  288. <td style="vertical-align: top;">-funittest<br>
  289. </td>
  290. </tr>
  291. <tr>
  292. <td style="vertical-align: top;">-version=&lt;arg&gt;<br>
  293. </td>
  294. <td style="vertical-align: top;">-fversion=&lt;arg&gt;<br>
  295. </td>
  296. </tr>
  297. <tr>
  298. <td style="vertical-align: top;">-w<br>
  299. </td>
  300. <td style="vertical-align: top;">-Werror<br>
  301. </td>
  302. </tr>
  303. <tr>
  304. <td style="vertical-align: top;">-wi<br>
  305. </td>
  306. <td style="vertical-align: top;">-Wall<br>
  307. </td>
  308. </tr>
  309. <tr>
  310. <td style="vertical-align: top;">-X<br>
  311. </td>
  312. <td style="vertical-align: top;">no equivalent; use the wrapper script<br>
  313. </td>
  314. </tr>
  315. <tr>
  316. <td style="vertical-align: top;">-Xf&lt;arg&gt;<br>
  317. </td>
  318. <td style="vertical-align: top;">-fXf=&lt;arg&gt;<br>
  319. </td>
  320. </tr>
  321. <tr>
  322. <td style="vertical-align: top;">&lt;.ddoc file&gt;<br>
  323. </td>
  324. <td style="vertical-align: top;">-fdoc-inc=&lt;.ddoc file&gt;<br>
  325. </td>
  326. </tr>
  327. </tbody>
  328. </table>
  329. <br>
  330. Other options:<br>
  331. <table style="text-align: left; width: 75%;" border="1" cellpadding="2" cellspacing="2">
  332. <tbody>
  333. <tr>
  334. <td style="vertical-align: top;">-f[no-]bounds-check<br>
  335. </td>
  336. <td style="vertical-align: top;">Controls array
  337. bounds checking<br>
  338. </td>
  339. </tr>
  340. <tr>
  341. <td style="vertical-align: top;">-femit-templates[=normal|private|all|none|auto]<br>
  342. -f[no-]emit-templates<br>
  343. </td>
  344. <td style="vertical-align: top;">Controls whether or
  345. not template
  346. code is emitted.<br>
  347. <br>
  348. "normal" -- Emit templates, expecting multiple copies to be merged by
  349. the
  350. linker.<br>
  351. "private" -- Emit templates, but make them private to the translation
  352. unit.&nbsp; The executable will have multiple copies of code and
  353. data.<br>
  354. "all" -- Emit all template instances with public visibility.&nbsp;
  355. Do
  356. this even if they would not normally be emitted.<br>
  357. "none" -- Do not emit templates at all.<br>
  358. "auto" -- For targets that support templates, the "full" mode is
  359. used.&nbsp; Otherwise, the "private" mode is used.<br>
  360. <br>
  361. "none" and -fno-emit-templates are synonyms.<br>
  362. "auto" and -femit-templates are synonyms.<br>
  363. </td>
  364. </tr>
  365. <tr>
  366. <td style="vertical-align: top;">-fall-sources<br>
  367. </td>
  368. <td style="vertical-align: top;">For each source file on the
  369. command line, semantically process each file preceding it.&nbsp;
  370. Use this if compilation errors occur due to complicated circular module
  371. references.&nbsp; This will slow compilation noticeably.<br>
  372. </td>
  373. </tr>
  374. <tr>
  375. <td style="vertical-align: top;">-fdump-source<br>
  376. </td>
  377. <td style="vertical-align: top;">Dump decoded UTF-8 text and
  378. source from HTML to &lt;source&gt;.utf-8 and
  379. &lt;source&gt;.d.utf-8.<br>
  380. </td>
  381. </tr>
  382. </tbody>
  383. </table>
  384. <h4>Extensions</h4>
  385. <h5>Extended Assembler</h5>
  386. GDC implements a GCC extension that allows inline assembler with D
  387. expression operands. &nbsp;It is available on nearly all targets, not
  388. just i386. &nbsp;The syntax differs from the C language extension in
  389. the follow ways.
  390. <ul>
  391. <li>Statements start with '<span style="font-family: monospace;">asm { ...</span>', just like the regular DMD inline assembler.</li>
  392. <li>It is not necesary to put parentheses around operands.</li>
  393. <li>Instruction templates can be compile-time string constants, not
  394. just string literals. &nbsp;If the template is not a string literal,
  395. use parenthesis to indicate that it is not an opcode.</li>
  396. </ul>
  397. Unlike i386 inline assembler statements, extended assembler statements do not prevent a function from being inlined.<br>
  398. <br>
  399. See the GCC manual for more information about this extension.<br>
  400. <br>
  401. Example:<br>
  402. <br>
  403. <div style="margin-left: 40px;"><span style="font-family: monospace;">uint invert(uint v)</span><br style="font-family: monospace;">
  404. <span style="font-family: monospace;">{</span><br style="font-family: monospace;">
  405. <span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; uint result;</span><br style="font-family: monospace;">
  406. <span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; version(X86)</span><br style="font-family: monospace;">
  407. <span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;asm{ "notl %[iov]" : [iov] "=r" result : "0" v; }</span><br style="font-family: monospace;">
  408. <span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; else version(PPC)</span><br style="font-family: monospace;">
  409. <span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;asm{ "nor %[oresult],%[iv],%[iv]" : [oresult] "=r" result : [iv] "r" v; }</span><br style="font-family: monospace;">
  410. <span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; return result;</span><br style="font-family: monospace;">
  411. <span style="font-family: monospace;">}</span><br style="font-family: monospace;">
  412. </div>
  413. <h5>Declaration and Type Attributes</h5>
  414. (This extension is a work in progress.)<br>
  415. <br>
  416. GDC implements the GCC <span style="font-family: monospace;">__attribute__</span> extension with two pragmas:<br>
  417. <br>
  418. <span style="font-family: monospace;"><span style="font-weight: bold;">pragma</span>(<span style="font-weight: bold;">attribute</span>,<span style="font-style: italic;"> name1</span>(<span style="font-style: italic;">arg1</span>, <span style="font-style: italic;">arg2</span>, ...), ...) <span style="font-style: italic;">declarations</span>...</span><br style="font-family: monospace;">
  419. <br>
  420. <span style="font-family: monospace;"><span style="font-weight: bold;">pragma</span>(<span style="font-weight: bold;">set_attribute</span>, <span style="font-style: italic;">symbol</span>, <span style="font-style: italic;">name1</span>(<span style="font-style: italic;">arg1</span>, <span style="font-style: italic;">arg2</span>...), ...);</span><br>
  421. <br>
  422. The deprecated form of these pragmas are <span style="font-family: monospace;">GNU_attribute</span>
  423. and <span style="font-family: monospace;">GNU_set_attribute</span> respectively.<br>
  424. <br>
  425. If an attribute has no arguments, the argument list may be omitted.<br>
  426. <br>
  427. The first form applies to declarations directly contained in the
  428. pragma. &nbsp;The second form affects the given symbol. &nbsp;See the
  429. GCC manual for a list of attributes that can be set. &nbsp;Not all
  430. attributes are supported yet by GDC. &nbsp;Also, the interaction
  431. between these extended attributes and D languge attributes (alignment,
  432. for example) is not well defined.
  433. <h3>Changes</h3>
  434. <a name="0.30"></a>0.30:
  435. <ul>
  436. <li>Support for GCC, 4.5.x and 4.6.x added</li>
  437. <li>Removed support for GCC 3.4.x, 4.0.x, 4.1.x</li>
  438. <li>Updated D1 to 1.069</li>
  439. <li>Updated D2 to 2.054</li>
  440. <li>Better D2 support for MinGW</li>
  441. <li>Added 'optlink' calling convention for D</li>
  442. <li>Added 64bit support for IASM (Work in Progress)</li>
  443. <li>Moved correct implementation of delegates from GCC backend</li>
  444. to GDC frontend glue code</li>
  445. <li>Fixed Bugzilla 670, 4494, 4543, 5086, 5090, 5148, 5182,</li>
  446. 5191, 5439, 5735, 5812</li>
  447. <li>As always, my dear reader, fixes to many other bugs.</li>
  448. </ul>
  449. <a name="0.25"></a>0.25:
  450. <ul>
  451. <li>Support for GCC, 4.2.x, 4.3.x, and 4.4.x added</li>
  452. <li>Updated D1 to 1.063</li>
  453. <li>Updated D2 to 2.020</li>
  454. <li>Added druntime support</li>
  455. <li>Fixed Bugzilla 1041, 1044, 1136, 1145, 1296, 1669, 1689,</li>
  456. 1751, 1813, 1822, 1921, 1930, 2079, 2102, 2291, 2421</li>
  457. <li>Fixed Bitbucket issues too numerous to mention. :-)</li>
  458. </ul>
  459. <a name="0.24"></a>0.24:
  460. <ul>
  461. <li>Removed support for GCC 3.3.x</li>
  462. <li>Updated to DMD 1.020</li>
  463. <li>Fixed Bugzilla 1037, 1038 (gdc specific), 1043, 1045, 1046,</li>
  464. 1031, 1032, 1034, 1065, 1109, 1191, 1137, 1152, 1208, 1325,</li>
  465. 1329, 1898, 1400</li>
  466. <li>Fixed SourceForge issues 1689634, 1749622, 1721496, 1721435</li>
  467. </ul>
  468. <a name="0.23"></a>0.23:
  469. <ul>
  470. <li>Added support for 64-bit targets</li>
  471. <li>Added multilib support</li>
  472. <li>Updated to DMD 1.007</li>
  473. <li>Fixed Bugzilla 984, 1013</li>
  474. </ul>
  475. <a name="0.22"></a>0.22:
  476. <ul>
  477. <li>Added support for GCC 4.1.x</li>
  478. <li>Support for GCC 3.3.x is deprecated</li>
  479. <li>Updated to DMD 1.004</li>
  480. <li>Fixed Bugzilla 836, 837, 838, 839, 841, 843, 844, 889, 896</li>
  481. <li>Fixed problems with missing debug information</li>
  482. <li>Added Rick Mann's -frameowrk patch for gdmd</li>
  483. </ul>
  484. <a name="0.21"></a>0.21:
  485. <ul>
  486. <li>Updated to DMD 1.00</li>
  487. <li>Fixed Bugzilla 695, 696, 737, 738, 739, 742, 743, 745</li>
  488. <li>Implemented GCC extended assembler</li>
  489. <li>Implemented basic support for GCC attributes</li>
  490. </ul>
  491. <a name="0.20"></a>0.20:
  492. <ul>
  493. <li>Updated to DMD 0.177</li>
  494. <li>Fixes for synchronized code generation</li>
  495. <li>Better support for cross-hosted builds</li>
  496. <li>Fixed Bugzilla 307, 375, 403, 575, 578</li>
  497. <li>Applied Anders Bj&ouml;rklund's MacOS X build patches</li>
  498. </ul>
  499. <a name="0.19"></a>0.19:
  500. <ul>
  501. <li>Fixed D Bugzilla bugs 141(gdc), 157, 162, 164, 171, 174,
  502. 175, 192, 229</li>
  503. <li>Applied Dave Fladebo's suggestion for -O3 in gdmd</li>
  504. <li>Updated to DMD 0.162</li>
  505. <li>The version symbol for FreeBSD is now "freebsd"</li>
  506. <li>Enabled std.loader for FreeBSD</li>
  507. <li>Implement offsetof in assembler</li>
  508. <li>Support building with Apple's GCC (4.0 only)</li>
  509. <li>Fix parallel builds</li>
  510. </ul>
  511. <a name="0.18"></a>0.18:<br>
  512. <ul>
  513. <li>Fixes</li>
  514. <ul>
  515. <li>ICE on assignment arithmetic</li>
  516. <li>Problems mixing D and assembler floating point operations</li>
  517. <li>Mac OS X 10.2 build problems</li>
  518. <li>The gdc driver no longer compiles C source as C++.<br>
  519. </li>
  520. <li>Many others...</li>
  521. </ul>
  522. <li>Improvements</li>
  523. <ul>
  524. <li>Updated to DMD 0.157.</li>
  525. <li>Added support for PowerPC Linux.<br>
  526. </li>
  527. <li>Added partial support for SkyOS.</li>
  528. <li>Compiler can be relocated to another directory.<br>
  529. </li>
  530. </ul>
  531. </ul>
  532. <a name="0.17"></a>0.17:<br>
  533. <ul>
  534. <li>Fixes</li>
  535. <ul>
  536. <li>Mixed complex/float operations on GCC 4.0 (<a href="http://www.digitalmars.com/drn-bin/wwwnews?D.gnu/1485">D.gnu/1485</a>)</li>
  537. <li>Applied Thomas Kuhne's HTML line number fix</li>
  538. <li>Foreach/nested functions in templates (<a href="http://www.digitalmars.com/drn-bin/wwwnews?D.gnu/1514">D.gnu/1514</a>)</li>
  539. <li>Use correct default initializer when allocating arrays of
  540. typedef'd types</li>
  541. <li>Recursive calls to nested functions (<a href="http://www.digitalmars.com/drn-bin/wwwnews?D.gnu/1525">D.gnu/1525</a>)</li>
  542. </ul>
  543. <li>Improvements</li>
  544. <ul>
  545. <li>Updated to DMD 0.140<br>
  546. </li>
  547. </ul>
  548. </ul>
  549. <a name="0.16"></a>0.16:<br>
  550. <ul>
  551. <li>Fixes</li>
  552. <ul>
  553. <li>Concatenating a array and single element</li>
  554. <li>"__arrayArg already defined"</li>
  555. <li>ICE on nested foreach statements (<a href="http://www.digitalmars.com/drn-bin/wwwnews?D.gnu/1393">D.gnu/1393</a>)</li>
  556. <li>Inline assembler</li>
  557. <ul>
  558. <li>Functions returning floating point types</li>
  559. </ul>
  560. <ul>
  561. <li>Spurious error on scaled register without a base
  562. register</li>
  563. <li>Access to locals by var+ofs[EBP] now works with
  564. optimization.</li>
  565. <li>Can now guess operand size from referenced variables.</li>
  566. </ul>
  567. <li>Thunks errors with reimplemented interfaces (e.g., Mango)<br>
  568. </li>
  569. </ul>
  570. <li>Improvements</li>
  571. <ul>
  572. <li>Support GCC 4.0.x</li>
  573. <li>Updated to DMD 0.137</li>
  574. <li>Support DW_LANG_D for DWARF debugging</li>
  575. <li>Support compiling multiple sources to a single object with GCC 3.4.x.<br>
  576. </li>
  577. </ul>
  578. </ul>
  579. <br>
  580. <a name="0.15"></a>0.15:<br>
  581. <div style="margin-left: 40px;">&nbsp;&nbsp;&nbsp;
  582. Updated to DMD 0.128<br>
  583. </div>
  584. <br>
  585. <a name="0.14"></a>0.14:<br>
  586. <ul>
  587. <li>Fixes</li>
  588. <ul>
  589. <li>Classes nested in functions actually work now.</li>
  590. <li>Fix for newest versions of the GNU assembler.<br>
  591. </li>
  592. </ul>
  593. <li>Improvements</li>
  594. <ul>
  595. <li>Updated to DMD 0.127<br>
  596. </li>
  597. </ul>
  598. </ul>
  599. <br>
  600. <a name="0.13"></a>0.13:<br>
  601. <ul>
  602. <li>Fixes</li>
  603. <ul>
  604. <li>Cygwin/MinGW assembler problem</li>
  605. </ul>
  606. <li>Improvements</li>
  607. <ul>
  608. <li>Updated to DMD 0.126.</li>
  609. <li>Calling nested functions with delegates is faster.</li>
  610. <li>The "check-target-libphobos" uses unit tests and runtime
  611. checks.<br>
  612. </li>
  613. </ul>
  614. </ul>
  615. <a name="0.12.1"></a>0.12.1:<br>
  616. <ul>
  617. <li>Fixes</li>
  618. <ul>
  619. <li>Compilation errors and crashes with -fpic</li>
  620. <li>Crashes with interfaces on Cygwin/MinGW</li>
  621. <li>Support the -mno-cygwin option<br>
  622. </li>
  623. </ul>
  624. </ul>
  625. <a name="0.12"></a>0.12:<br>
  626. <ul>
  627. <li>Fixes</li>
  628. <ul>
  629. <li>Various problems building MinGW in MSYS</li>
  630. <li>Mango "endless output"</li>
  631. <li>Build problems with gcc 3.4.1</li>
  632. <li>Various problems revealed by dmdscript<br>
  633. </li>
  634. <li>Error message now go to standard error</li>
  635. <li>DStress catch_01, catch_02, new_04, switch_19, throw_02, and others.</li>
  636. </ul>
  637. <li>Improvements</li>
  638. <ul>
  639. <li>Updated to DMD 0.125</li>
  640. <li>New target: AIX</li>
  641. <li>GDC and DMD versions are reported with "gcc --version"</li>
  642. <li>Take advantage of DMD template improvements on<br>
  643. </li>
  644. </ul>
  645. <li>Changes</li>
  646. <ul>
  647. <li>std.c.unix is now std.c.unix.unix</li>
  648. <li>The runtime library is now "libgphobos" to avoid conflicts with DMD.</li>
  649. <li>The dmd wrapper script...</li>
  650. <ul>
  651. <li>Is now named "gdmd".</li>
  652. <li>Looks for gdc in its own directory instead of searching the path</li>
  653. <li>Requires a comma after the "-q" option.<br>
  654. </li>
  655. </ul>
  656. </ul>
  657. </ul>
  658. <a name="0.11"></a>0.11:<br>
  659. <ul>
  660. <li>Fixes</li>
  661. <ul>
  662. <li>Reversed structure compare</li>
  663. <li>Correct meaning of '-L' option in wrapper script</li>
  664. <li>Static data GC bug on Linux</li>
  665. </ul>
  666. <li>Improvements</li>
  667. <ul>
  668. <li>Updated to DMD 0.121</li>
  669. <li>New target: MingGW</li>
  670. <li>Included Anders F Bj&ouml;rklund's man pages.<br>
  671. </li>
  672. <li>It is now possible to build a cross-compiler.&nbsp;
  673. Only MingGW is supported out-of-the-box, however.</li>
  674. </ul>
  675. </ul>
  676. <h3>License</h3>
  677. &nbsp;&nbsp;&nbsp; This program is free software; you can redistribute it and/or modify<br>
  678. &nbsp;&nbsp;&nbsp; it under the terms of the GNU General Public License as published by<br>
  679. &nbsp;&nbsp;&nbsp; the Free Software Foundation; either version 2 of the License, or<br>
  680. &nbsp;&nbsp;&nbsp; (at your option) any later version.<br>
  681. <br>
  682. &nbsp;&nbsp;&nbsp; This program is distributed in the hope that it will be useful,<br>
  683. &nbsp;&nbsp;&nbsp; but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
  684. &nbsp;&nbsp;&nbsp; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&nbsp; See the<br>
  685. &nbsp;&nbsp;&nbsp; GNU General Public License for more details.<br>
  686. <br>
  687. &nbsp;&nbsp;&nbsp; You should have received a copy of the GNU General Public License<br>
  688. &nbsp;&nbsp;&nbsp; along with this program; if not, write to the Free Software<br>
  689. &nbsp;&nbsp;&nbsp; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA&nbsp; 02111-1307&nbsp; USA<br>
  690. </body>
  691. </html>