Jean Privat [Wed, 8 Apr 2015 10:18:00 +0000 (17:18 +0700)]
modelize classes: process AStdClassdef before
So that non-AStdClassdef classes can be attached to existing ones if any
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 10 Apr 2015 10:09:18 +0000 (17:09 +0700)]
niti: implements native `chdir` and `mkdir` with a return value
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 10 Apr 2015 05:20:58 +0000 (12:20 +0700)]
tests: add base_new_intern.nit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 10 Apr 2015 05:16:03 +0000 (12:16 +0700)]
typing: `intern` is used to refer to the plain vanilla constructor
It is used to implement specific factories inside classes
~~~
class A
new do
var res = new A.intern
res.do_things
return res
end
end
~~~
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 10 Apr 2015 05:13:39 +0000 (12:13 +0700)]
engines: ANewExpr just return the plain instance if no callsite
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 9 Apr 2015 14:50:55 +0000 (21:50 +0700)]
tests: update sav related to ligne changes in kernel
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 9 Apr 2015 14:50:27 +0000 (21:50 +0700)]
contrib/nitester: no more free to call
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 15:24:20 +0000 (22:24 +0700)]
lib: move errno and strerror to legacy FFI
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 15:10:17 +0000 (22:10 +0700)]
lib/file: once some global constants
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 15:09:55 +0000 (22:09 +0700)]
lib/file: some methods return a nullable Error on error
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 15:08:52 +0000 (22:08 +0700)]
lib/file: String::files does not exist on error
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 15:07:30 +0000 (22:07 +0700)]
lib/file: remove useless protected for top-level methods
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 15:06:59 +0000 (22:06 +0700)]
lib/file: expose FileStat instead of NativeFileStat
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 9 Apr 2015 13:30:54 +0000 (20:30 +0700)]
quatree: cleaup indentation
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 9 Apr 2015 13:30:39 +0000 (20:30 +0700)]
quadtree: use new constructors
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 9 Apr 2015 05:24:43 +0000 (12:24 +0700)]
Merge: Misc AST
Various small improvements on the ast side.
The main improvement is the lower consumption of Location instances.
Before: 681k where created; for 174MIr
After: 472k are created (-30%); for 120MIr (-31%)
However, the final impact should be negligible.
Other changes are related to error messages in order to have them more useful in other context.
As a proof of concept, nitlight can show some warnings and errors in the generated HTML.
There is still issue, especially: how to display them property. Currently they are in a popupable dropdown boxes, but the with is too small and nested info boxes show unreadable stacked things.
Eg, for `return new Foo[nullable Bar]`, how can I show
* information on the classes Foo and Bar
* error on the whole `nullable Bar` because Foo is in fact not generic
* error on the whole `new Foo[nullable Bar]` because in fact we are in a procedure, so no return value is expected
Pull-Request: #1248
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Thu, 9 Apr 2015 05:24:37 +0000 (12:24 +0700)]
Merge: new `with` statement
Introduce the `with` statement that is analogous to the `with` of Python or the `uning` of C#.
~~~nit
with x = something do
x.work
end
~~~
That is equivalent with
~~~nit
do
var x = something
x.start
x.work
x.finish
end
~~~
Note that an alternative syntax, without the local variable exists:
~~~nit
with something do
work
end
~~~
that is used when we want some automatic control or whatever. Eg resource allocation or critical section.
~~~nit
do
var tmp = something
tmp.start
work
tmp.stop
end
~~~
Most real-world examples could be
~~~nit
with file = path.create do
file.write("Bla")
end
~~~
and
~~~nit
with a_mutex do
work
end
~~~
## Names
I reused the `finish` method from Iterator.
I introduced the antonym `start` for the other side.
Note that the `start` is important because it helps the object to know it has to prepare itself for a `finish`.
I did not introduce an interface, mainly because I have no idea for a name. C# names it `IDisposable` and the `finish` method is called `Dispose`. There is no `start` because C# designers are lunatic sometime.
In python there is no interface (obviously) and the method are called
`__enter__` and `__exit__` because Python likes identifiers that resemble words eaten by boas.
Note that the returned variable is not the original expression but the result of `__enter__`.
With the Python semantic, but the Nit syntax, the first example will be equivalent to
~~~nit
do
var tmp = something
var x = tmp.start
x.work
x.finish
end
~~~
I am not sure of the benefits of the additional complexity, but the the more I thing about it the more I think this could be useful, ex for the control case the `start` can return the handler to `finish`.
The issue is that proposed syntax: `with x = something` does not make sense (because `tmp=something` and `x=tmp.start`) thus should be replaced with something else; Python uses `with something as x:` that we can reuse but I do not want because it is ugly.
An other alternative I tough of was to reuse the `for` keyword. but It is convoluted.
The two previous real world examples will then be
~~~nit
for file = path.create do
file.write("Bla")
end
~~~
and
~~~nit
for a_mutex do
work
end
~~~
Pull-Request: #1243
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Etienne M. Gagnon <egagnon@j-meg.com>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Wed, 8 Apr 2015 14:39:22 +0000 (21:39 +0700)]
tests: update nitlight and test_parser
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Apr 2015 14:36:59 +0000 (21:36 +0700)]
hightlight: remove two asserts that make #1247 crashes
the result is still buggy but things keep-going
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Apr 2015 05:29:24 +0000 (12:29 +0700)]
test_parser: add option `-x` to output XML
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Apr 2015 05:22:11 +0000 (12:22 +0700)]
highlight: add infoboxes with messages
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Apr 2015 05:21:31 +0000 (12:21 +0700)]
highlight: factorize the creation of tags
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Apr 2015 05:08:41 +0000 (12:08 +0700)]
toolcontext: error methods return the messages, to add information
unused yet.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Apr 2015 16:10:42 +0000 (23:10 +0700)]
toolcontext: attach errors message to their location
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Apr 2015 05:01:07 +0000 (12:01 +0700)]
parser: reuse child location when possible
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Apr 2015 05:00:20 +0000 (12:00 +0700)]
lexer: do not create useless location (for whitespaces)
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 8 Apr 2015 01:03:25 +0000 (08:03 +0700)]
Merge: Parallelization phase introduction
Introduces the begining of the parallelization in Nit !
For now, only accepts the "threaded" annotation on methods without return value and without parameters.
Coming next :
Parametrized methods,
methods with return value,
for loops.
Pull-Request: #1247
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Wed, 8 Apr 2015 01:01:49 +0000 (08:01 +0700)]
Merge: Not null types
In order to fix #86 and #1238 some preliminary work to solve remaining issues with the type system is needed. This PR is a step toward this goal.
This introduce not-null types, that is a modifier to indicate that a type cannot contain null.
Basically, this new modifier is almost useless because it is the semantic of all the types (except obviously null and nullable things). Except in one case: when one adapts a formal type whose bound is nullable.
Before the PR, the semantic was the following
~~~nit
class A[E: nullable Object]
fun foo(e: E, o: nullable Object) do
var o2 = o.as(not null) # the static type of o2 is `Object`
print o2 # OK
var e2 = e.as(not null) # the static type of e2 is still `E` because there is no `nullable` to remove
print e2 # Error: expected Object, got E
end
end
~~~
Obviously, the issue was not that important because people managed to program complex things in Nit and I do not remember getting some complain about that particular issue. For the rare cases of this unexpected behavior, a workaround was possible: to cast on the non-nullable bound
~~~nit
var e2 = e.as(Object)
print e2 # OK
~~~
Nevertheless, the behavior was still buggy since type information was lost and not POLA. Moreover, `!= null` and `or else` did not have a workaround.
So, this PR introduces a special new type-modifier for this case so that everything become sensible.
~~~nit
var e2 = e.as(not null) # the static type of e2 is now `not null E`
print e2 # OK
~~~
Moreover, a lot of local refactorisation was done in model.nit and typing.nit to clean and harmonize the code. So that independently of the new notnull modifier, the code is cleaner, some bugs where removed and some small features added, especially the detection of useless `or else`.
Last, but not least, the `not null` thing is only an internal modifier and is not usable as a syntactic type construction (the grammar and the AST is unchanged); `not null` can however be shown to the programmer in messages.
~~~nit
var e2 = e.as(not null) # the static type of e2 is now `not null E`
var e3 = e2.as(not null) # << Warning: expression is not null, since it is a `not null E` >>
~~~
I could easily add `not null` as a specific syntactic construction since everything internally is ready. but 1. does this worth it?. 2. I do not want to conflict with #1243 that also change the grammar.
As an example, is it useful to write the following? (currently refused but very easy to add after this PR)
~~~nit
class A[E: nullable Object]
fun foo(e: not null E): not null E do
var x = e.to_s # no null pointer exception
# ...
return e
end
end
var a = new A[nullable Int]
var i = a.foo(5)
~~~
Pull-Request: #1244
Reviewed-by: Etienne M. Gagnon <egagnon@j-meg.com>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Romain Chanoir <chanoir.romain@courrier.uqam.ca>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Wed, 8 Apr 2015 01:01:15 +0000 (08:01 +0700)]
Merge: Improve checking of virtual types
This PR does 2 things to avoid runtime errors during nitc. Invalid programs that crashed the compiler now display errors messages.
* improve the static detection of loops in virtual types.
* consider types in the signatures of properties to be fragile since they contains potentially bad virtual types.
If merged with #1241 then nitpick can process the whole tests directory without crashing (impressive, since there is 1584 border-case files).
~~~
$ ./nitpick ../tests/*.nit ../tests/alt/*.nit -I ../lib/standard/ -I ../lib/standard/collection/
[... lots of errors ...]
Errors: 1766. Warnings: 195.
~~~
Pull-Request: #1245
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Romain Chanoir <chanoir.romain@courrier.uqam.ca>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Wed, 8 Apr 2015 01:01:07 +0000 (08:01 +0700)]
Merge: Clean benches
Some janitoring in the benchmarks directory
Pull-Request: #1242
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Wed, 8 Apr 2015 01:00:53 +0000 (08:00 +0700)]
Merge: Robust keep-going
Detection and resolution of crashes or irrelevant error messages with tools that keeps going (eg. nitpick).
Historically, the compiler just exited at the end on a step when an error occured. The ToolContext#keep_going flag disable this automatic exit and was introduced for tool that are expected to be launched on broken code: nitpick and nitlight. However most parts of the code expected that:
* the previous steps where completed successfully, and expected information where available and correct.
* they are that special important snowflake can just exit the whole program when they are unhappy.
These rules can make sense for a compiler but are to strict for most SE tools that need to work (or continue working) when some random module contain an error.
Thus this PR improve the robustness of various parts of the code for the keep-going case so that we do not exit or crash before having processed all the modules.
With this PR, the following command does not crash anymore:
~~~
$ nitpick `nitls -rps ../lib ../contrib ../examples`
[...]
Errors: 10. Warnings: 31.
~~~
Note that `nitpick ../tests` still crashes. There is ugly errors hard to recover from in this directory.
Maybe, one day most of the tools can be made keep going by default.
Pull-Request: #1241
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Etienne M. Gagnon <egagnon@j-meg.com>
Jean Privat [Tue, 7 Apr 2015 10:37:36 +0000 (17:37 +0700)]
src/hightlight: hightlight and do not crash on MNotNullType
Also add MNullType that where missing.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 15:50:58 +0000 (22:50 +0700)]
tests: add base_not_null.nit and base_notnull_lit.nit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 15:46:56 +0000 (22:46 +0700)]
code: remove useless `or else` now that they are detected
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 15:38:26 +0000 (22:38 +0700)]
tests: update test_new_native_alt1.res because line change in array :(
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 15:37:56 +0000 (22:37 +0700)]
tests: update because resolved types are in error messages
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 15:36:53 +0000 (22:36 +0700)]
typing: on type error, also indicate the resolved type
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 15:04:55 +0000 (22:04 +0700)]
Update tests error message on null adaptation and tests
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 13:36:44 +0000 (20:36 +0700)]
lib/array: suppress a warning to be compatible with the bootstrap
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 13:35:41 +0000 (20:35 +0700)]
model: rename `as_notnullable` to `undecorate`
The behavior is to remove the decoration, and `as_notnullabe` is not
the best name to undecorate a `MNotNullType`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 13:31:11 +0000 (20:31 +0700)]
typing: add `check_can_be_null` to fix and factorize as_notnull transformations
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 13:29:08 +0000 (20:29 +0700)]
model: add new type `MNotNullType` to force that null is excluded from a type.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 08:22:54 +0000 (15:22 +0700)]
tests: update sav/base_virtual_type7.res
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 08:19:43 +0000 (15:19 +0700)]
tests: add error_virtual_type.nit and error_virtual_type2.nit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 15:06:00 +0000 (22:06 +0700)]
lib/file: add some doc and nitunits
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 14:40:53 +0000 (21:40 +0700)]
clib/gc_chooser: add a default for a switch to silent a warning
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 08:17:00 +0000 (15:17 +0700)]
modelize_property: improve the search of circularity for virtual types
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 05:10:29 +0000 (12:10 +0700)]
modelize_property: use resolve_mtype_unchecked during build_signature
Signature can contain illegal type made of virtual types.
But at this point, the virtual types are not yet validated.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 6 Apr 2015 08:11:24 +0000 (15:11 +0700)]
modelize_property: remove unused ASignature::build_signature
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 21:43:32 +0000 (04:43 +0700)]
lib/ai: remove randomness in puzzle so benches can compare sanely
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 10:34:05 +0000 (17:34 +0700)]
model: extract a common proxy from MNullableType
This will simplify the creation of future proxys/decorations for types.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 09:57:09 +0000 (16:57 +0700)]
src: use MFormalType for type checks when it makes sense
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 4 Apr 2015 09:56:12 +0000 (16:56 +0700)]
model: introduce MFormalType as a superclass of MVirtualType and MParameterType
Strangely enough, they do not have common methods yet.
It is why a super-class was never introduced.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 30 Mar 2015 12:02:55 +0000 (19:02 +0700)]
tests: add base_with.nit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 30 Mar 2015 03:07:15 +0000 (10:07 +0700)]
code: rename identifiers `with` since it is a keyword now
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 30 Mar 2015 02:59:48 +0000 (09:59 +0700)]
interpreter: interpret `with` statement
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 07:59:12 +0000 (14:59 +0700)]
transform: transform the `with` statement
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 05:44:33 +0000 (12:44 +0700)]
benches/strings: add .gitignore and `make clean`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 05:36:47 +0000 (12:36 +0700)]
benches/engines: remove nitcc generated files for calc
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 05:32:06 +0000 (12:32 +0700)]
benchs/markdown: add a .gitignore to avoid cruft
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 05:31:38 +0000 (12:31 +0700)]
benchs/markdown: add a root Makefile
most for the for the `clean` than for the `all`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 05:52:14 +0000 (12:52 +0700)]
tests: update fatal error messages.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:47:05 +0000 (09:47 +0700)]
toolcontext: call only `errors_info` once at the end
Thus only display one total of errors/warnings, not one per call of `check_errors`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:45:57 +0000 (09:45 +0700)]
modelbuilder: run_global_phases do nothing for an empty list of modules
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:45:21 +0000 (09:45 +0700)]
typing: do not rely on `MModule.object_type` that will fatal error
Instead get the standard `missing class` error and continue processing
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:35:54 +0000 (09:35 +0700)]
model: get_primitive_class filter classes by module
This make the analysis of distinct kernels possible (and robust)
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:42:20 +0000 (09:42 +0700)]
typing: be more robust on missing/buggy information
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:44:12 +0000 (09:44 +0700)]
modelize_class: make the class-name-conflict a warning
as an error, it prevents temporary duplication of same classes
for development and experimentation.
One do not want to have an hard error in a file because a random file
in the same directory has issues.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 05:54:46 +0000 (12:54 +0700)]
modelize_property: invalidate information to avoid causing cascaded errors
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:40:36 +0000 (09:40 +0700)]
modelize_class: make various steps more robust if the previous steps failed
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:36:57 +0000 (09:36 +0700)]
modelbuilder: promote `get_mclass_by_name` from typing
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:34:36 +0000 (09:34 +0700)]
modelbuilder: resolve_mtype does not crash when the class is incomplete
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:34:01 +0000 (09:34 +0700)]
model: protect MClassDef.is_intro and provide MClass.try_intro
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:33:01 +0000 (09:33 +0700)]
loader: build_module_importation invalidates the mmodule on errors
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:32:04 +0000 (09:32 +0700)]
loader: the AModule.mmodule can be null if the mmodule is invalid
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 02:30:22 +0000 (09:30 +0700)]
various phases: more robust for keep-going
Entry point of most phases return gracefully in case of missing info.
Instead of crashing.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 05:30:46 +0000 (12:30 +0700)]
benchs/markdown: fix location of nitc
do not assume $PATH and make it modifiable
Signed-off-by: Jean Privat <jean@pryen.org>
BlackMinou [Wed, 1 Apr 2015 06:57:42 +0000 (08:57 +0200)]
Modify example to add a parametrized threaded fun
Signed-off-by: BlackMinou <romain.chanoir@viacesi.fr>
BlackMinou [Wed, 1 Apr 2015 06:57:27 +0000 (08:57 +0200)]
Add the support of parametrized functions for the threaded annotation
Signed-off-by: BlackMinou <romain.chanoir@viacesi.fr>
Jean Privat [Fri, 3 Apr 2015 01:28:33 +0000 (08:28 +0700)]
Merge: parser: add a basic sabblecc3 parser in Java
So one can more easily play and compare parsers.
Sometime, when I have issues with the parser, it helps to understand if it is nit-related, sablecc-related or grammar-relater.
Pull-Request: #1240
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Fri, 3 Apr 2015 01:27:33 +0000 (08:27 +0700)]
Merge: Unite app.nit metadata annotations common to Android and iOS
* Rename the annotation `java_package` to `app_namespace`.
* Move up `app_name`, `app_version` and `app_namespace` and their default values from the Android platform.
* Apply these annotations in iOS too.
* Use the annotations in Hello iOS.
Pull-Request: #1233
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Fri, 3 Apr 2015 01:27:25 +0000 (08:27 +0700)]
Merge: Updated bench scripts for strings
Updated the script for benching the variants of strings.
Some new variations for strings will follow in further PRs
Pull-Request: #1230
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 3 Apr 2015 01:11:49 +0000 (08:11 +0700)]
parser: add a basic sabblecc3 parser in Java
So one can more easily play and compare parsers.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 2 Apr 2015 16:54:08 +0000 (23:54 +0700)]
Merge: benches/markdown: add `pandoc` engine.
Here the result for 5 consecutive runs.
![image](https://cloud.githubusercontent.com/assets/583144/6013527/
3bc7acae-ab56-11e4-819a-
937b4550575e.png)
Pull-Request: #1136
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Thu, 2 Apr 2015 16:53:38 +0000 (23:53 +0700)]
Merge: Test compilation of OS X and iOS programs, on OS X
The results of the compilation of iOS apps by XCode are directories. This PR fix tests.sh to detect those directory and report them cleanly.
Also intro a script for running OS X specific tests.
Pull-Request: #1232
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Thu, 2 Apr 2015 16:53:11 +0000 (23:53 +0700)]
Merge: lib/standard/string: Added faster to_cstring method on FlatText.
Adds a service for quick cstring in `FlatTexts`, this is mainly to speedup some methods like `write_native`, which takes a cstring in input.
This just creates a new pointer to the same `char*` with an offset.
Since no copy is ever made, its use is highly discouraged in extern code or in cases other than ephemereal uses of the resulting `NativeString`.
Since it adds a new intern service, it cannot be used as is in the standard library as it will need a regeneration of c_src beforehand.
Pull-Request: #1231
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 31 Mar 2015 20:32:33 +0000 (16:32 -0400)]
lib/ios: add metadata annotations to "Hello iOS"
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 31 Mar 2015 19:26:05 +0000 (15:26 -0400)]
nitc: the iOS platform use app.nit annotations
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 31 Mar 2015 19:25:05 +0000 (15:25 -0400)]
lib & examples: update modules using the java_package annotation
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 2 Apr 2015 15:50:57 +0000 (11:50 -0400)]
nitc: move up the default values of a project from the android platform
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 31 Mar 2015 19:23:13 +0000 (15:23 -0400)]
nitc: extract common app.nit annotations from Android
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 31 Mar 2015 20:10:23 +0000 (16:10 -0400)]
model: intro `MModule::first_real_mmodule` to get the first non-fictive module
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Lucas Bajolet [Thu, 2 Apr 2015 14:24:00 +0000 (10:24 -0400)]
benchmarks/string: Added README
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Thu, 2 Apr 2015 04:10:22 +0000 (11:10 +0700)]
Merge: Improve loader
This PR improves the loader that can now accepts
* directories of projects: to load all modules of all projects (eg `contrib`)
* root directories of groups: to load all modules of the groups (eg `contrib/benitlux`).
Previously, this worked if there was no `src` subdirectory)
This works for tools that rely on full_parse (basically all tools except the engines).
~~~sh
$ ./test_test_phase ../lib -q
It works
I have 89 projects
I have 285 modules
I have 1038 classes
For 1366 definitions of classes
I have 7101 methods
For 9098 definitions of methods
~~~
Note that if any files has an error most tools will just stop.
Pull-Request: #1229
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Thu, 2 Apr 2015 04:10:08 +0000 (11:10 +0700)]
Merge: nitdoc: introduce Bootstrap components
The main objectif of this PR is to introduce a new module that abstracts Bootstrap component rendering (2d8ea6e).
Commit 63aab1e gives an example of how nitdoc will use these abstractions in the future PRs.
Also do some fixes and cleaning.
Pull-Request: #1174
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Thu, 2 Apr 2015 04:09:52 +0000 (11:09 +0700)]
Merge: Bench markdown --semi-global
Add a second nitmd engine compiled with --semi-global.
One can see that it helps to win against some java impl.
![](https://cloud.githubusercontent.com/assets/135828/6934753/
ffe2f672-d863-11e4-8961-
75b03e566da9.png)
Pull-Request: #1234
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Lucas Bajolet [Tue, 31 Mar 2015 17:44:17 +0000 (13:44 -0400)]
benchmarks/strings: Added Makefile for tests with default values.
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 31 Mar 2015 15:55:03 +0000 (11:55 -0400)]
benchmarks/string: Updated bench scripts for strings
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Alexandre Terrasa [Wed, 1 Apr 2015 14:25:34 +0000 (10:25 -0400)]
benches/markdown: add `pandoc` engine.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
BlackMinou [Wed, 1 Apr 2015 06:56:46 +0000 (08:56 +0200)]
Add documentation for the threaded annotation
Signed-off-by: BlackMinou <romain.chanoir@viacesi.fr>