Araq
214c7a2ebd
implemented a stack trace profiler
2012-09-15 00:21:10 +02:00
Araq
64c638a9dc
first steps for overloading support of passing blocks; bugfix: test results of 'compile' are not overwritten
2012-09-11 08:09:34 +02:00
Araq
d3d9d32c35
first steps to deprecate 'nil' statement
2012-09-09 01:08:00 +02:00
Araq
0171566c98
openarray/varargs split; breaks bootstrapping
2012-08-16 08:34:33 +02:00
Araq
244c14db0b
top level closures should work; transf is not a pass anymore; next steps for first class iterator support
2012-08-13 17:07:49 +02:00
Araq
7d6500f1de
idetools improvements; preparation of first class iterators; fixes #183
2012-08-02 23:14:38 +02:00
Zahary Karadjov
df1ec09399
proper indentation in the generated C code
2012-06-12 04:43:58 +03:00
Zahary Karadjov
4105a91c48
fix compilation errors when bootstrapping with C++
2012-06-04 01:56:42 +03:00
Zahary Karadjov
bb850aafec
codegen for C++ exceptions
2012-06-03 20:37:56 +03:00
Zahary Karadjov
3ce400bb00
bugfix: finally blocks were not executed when the except block is exited by raise or return
2012-06-03 18:00:45 +03:00
Araq
7a249eb8c1
bugfix: field names of tuples are treated consistently in the C backend
2012-05-27 14:57:12 +02:00
Araq
848c1b297f
added system.||; lacks runtime support
2012-05-23 02:05:28 +02:00
Araq
15dd3a2251
fixes #109
2012-05-20 10:56:17 +02:00
Zahary Karadjov
567b5b07ea
fixes #20 properly
2012-04-15 01:06:40 +03:00
Zahary Karadjov
caf7878009
Proper C scopes for if, try and case statements
...
even thought the setjmp implementation for try statement won't be used in C++,
using properly scoped variables for them is beneficial, because we'll be able to
establish a 1:1 relation between nimrod scopes and C scopes.
Once we have that, we'll be able to keep the original names of local variables
to greatly improve the debugging experience (i.e. watch expressions and
hover tooltips will work).
2012-04-12 17:52:55 +03:00
Zahary Karadjov
d2b45dbe85
C variables are created in their enclosing block instead of their enclosing function
2012-04-12 14:12:32 +03:00
Zahary Karadjov
238202ccbc
re-enable rodfiles tests; fixes #91
2012-04-11 01:52:12 +03:00
Zahary Karadjov
a64f03230a
proper order of initialization for .global. variables
2012-04-10 20:53:44 +03:00
Zahary Karadjov
6d80583d5a
Added `global` pragma that can be used to introduce new global variables from within procs
2012-04-05 20:43:22 +03:00
Araq
97743faa83
tests tcnstseq and tcnstseq3 work again
2012-03-28 23:03:55 +02:00
Araq
1af0601011
bugfix #100 again
2012-03-28 16:43:05 +02:00
Araq
7cd2f353c7
preparations for marker procs generation
2012-03-19 22:11:19 +01:00
Araq
c25ffbf262
first steps for cleaner static/const distinction
2012-03-13 02:01:56 +01:00
Araq
ec0f982ed4
attempt to make tests green again
2012-03-11 01:46:37 +01:00
Araq
a13a14327a
fixes #99
2012-02-17 20:19:14 +01:00
Araq
632aece191
further steps to closure support
2012-02-06 00:19:56 +01:00
Araq
8d19a93f1a
pragma on/off improvements; endb rewritten
2012-01-28 23:22:44 +01:00
Araq
d34345586f
unsuccessful phantom bug hunting
2012-01-08 20:18:24 +01:00
Araq
4f1b89c30c
year 2012 for most copyright headers
2012-01-02 23:07:35 +01:00
Araq
af792da0bb
codegen uses alias analysis to generate better code
2011-12-10 01:06:32 +01:00
Araq
728328eec2
threads compile again; attempt to fix serious code gen issue (except + return)
2011-12-03 19:22:01 +01:00
Araq
7fcbdc6d42
implemented 'let' statement
2011-11-29 17:27:48 +01:00
Araq
fedc69f61a
unused constants are optimized away
2011-11-22 18:48:00 +01:00
Araq
351e89e705
better code generation for constant aggregates
2011-11-02 00:55:29 +01:00
Araq
c517639155
lazy loading of body ast implemented
2011-10-30 20:53:04 +01:00
Araq
5e5e4abfee
new compiler option tlsEmulation
2011-10-27 21:03:53 +02:00
Araq
42516c0086
code generator supports constant sequences; more consistent compile time evaluation
2011-10-07 09:02:08 +02:00
Zahary Karadjov
0b197ade6c
Multiple C lines corresponding to a single nimrod line are joined together
...
This patch greatly improves the "step over" operation available in debuggers.
In practice, there are often 4-8 lines of C code generated for each nimrod line
Each such line will be responsible to a single step in the debugger that is
a) not expected by the user
b) taking the user to an incorrect line in the nimrod code
To keep this working, all code generation should use the rope formatting
facilities when producing new lines (i.e. $n and $N).
New semantics for the format string are introduced:
$n means "soft new line" that could be joined/broken when lineDir is enabled.
$N means "hard new line" that will always appear as a new line.
As an alternative to this approach, I also tested producing code like this:
#line "code.nim" 154
foo = bar; \
foo(bar) \
This is better for readability of the final output, but unfortunately it didn't
produce the desired result across all compilers/debuggers.
2011-09-20 14:11:06 +03:00
Zahary Karadjov
0f0dfd6379
Nimrod can now compile itself with --lineDir enabled
2011-09-20 14:11:06 +03:00
Araq
d560e84fcc
locks now in their own core module
2011-08-20 00:24:02 +02:00
Araq
a1cdd6e7ff
bugfix: #line generation for windows
2011-08-11 01:28:37 +02:00
Araq
5131b3cea4
support for C++ code generation; importcpp and importobjc pragmas
2011-08-07 21:02:09 +02:00
Araq
ade67f1abc
intsets are now a proper module and part of the stdlib
2011-06-14 01:36:49 +02:00
Araq
5f2d930a54
Bugfix: no #line dir with 0 generated
2011-06-10 02:22:16 +02:00
Araq
67a30d8371
further steps for thread support; bootstrapping should require unzip C sources and ./build.sh
2011-05-16 00:27:47 +02:00
Araq
145fabeb67
const table support
2011-04-29 22:55:15 +02:00
Araq
cd292568d7
big repo cleanup
2011-04-12 01:13:42 +02:00