Jean Privat [Sat, 7 Mar 2015 05:17:28 +0000 (12:17 +0700)]
Merge: Reuse Array Iterators
on nitc/nitc/nit this reduce a lot the number of allocated iterators.
before:
* 0m7.168s
* 2,706,498 new ArrayIterator
* the second most allocated class (after NativeArray)
after:
* 0m7.060s (-1.5%)
* 785,781 new ArrayIterator (-70%)
* the 7th most allocated class
Pull-Request: #1190
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Sat, 7 Mar 2015 05:17:21 +0000 (12:17 +0700)]
Merge: More lazyness in standard
Make lazy some attributes of often used classes. So that the attribute creation cost only when they are really used.
More impact that initially imagined:
for nitc/nitc/nitc
before: 7.188
after: 7.008 (-2.5%)
Pull-Request: #1188
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Sat, 7 Mar 2015 05:17:11 +0000 (12:17 +0700)]
Merge: Autosuperinit in refinements
Remove an old FIXME for compatibility with the old nitc that prevents the inclusion of autosuperinit calls in refinements.
Close #1186 (thus bring back the the feature from #916)
Pull-Request: #1187
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Sat, 7 Mar 2015 05:17:01 +0000 (12:17 +0700)]
Merge: Extends chars, string and stream with some whitespace-related function
While thinking about the remaining task of #466 (simple parsing), I though that there useful functions where missing in order to have a sane `Reader::read_word` method
Pull-Request: #1179
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Fri, 6 Mar 2015 16:43:15 +0000 (23:43 +0700)]
tests: update test_new_native_alt1.res because line change
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 6 Mar 2015 15:33:22 +0000 (22:33 +0700)]
lib/array: remember the last used iterator so it could be used again
on nitc/nitc/nit this reduce a lot the number of allocated iterators.
before:
* 0m7.168s
* 2,706,498 new ArrayIterator
* the second most allocated class (after NativeArray)
after:
* 0m7.060s (-1.5%)
* 785,781 new ArrayIterator (-70%)
* the 7th most allocated class
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Feb 2015 14:31:23 +0000 (21:31 +0700)]
tests: update sav/nituml_args*.res because the new method `is_whitespace` in Char
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Feb 2015 05:09:21 +0000 (12:09 +0700)]
stream: add `read_word` and `read_nonwhitespace`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Feb 2015 05:06:27 +0000 (12:06 +0700)]
string: add `is_whitespace`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Feb 2015 05:06:06 +0000 (12:06 +0700)]
string: update *trim to use `is_whitespace`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 6 Mar 2015 04:07:54 +0000 (11:07 +0700)]
lib/map: make concrete `Map.keys` and `Map.values` lazy
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 6 Mar 2015 04:07:21 +0000 (11:07 +0700)]
lib/map: document `Map.has_key` and implement it efficienlty
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 6 Mar 2015 03:54:47 +0000 (10:54 +0700)]
lib/string: make FlatString#chars lazy
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 6 Mar 2015 03:54:17 +0000 (10:54 +0700)]
lib/file: make stdin, stdout and strerr lazy
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 6 Mar 2015 03:53:54 +0000 (10:53 +0700)]
lib/file: move the call of `stdout.set_buffering_mode` to Stdout
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 6 Mar 2015 03:08:34 +0000 (10:08 +0700)]
tests: add base_init_raf2.nit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 6 Mar 2015 03:07:48 +0000 (10:07 +0700)]
autosuperinit: remove old FIXME that prevented autosuperinit in redefs
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 6 Mar 2015 03:06:59 +0000 (10:06 +0700)]
autosuperinit: verbose info for debuging
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 6 Mar 2015 03:06:18 +0000 (10:06 +0700)]
parser: fix default init for ALabel and ASelfExpr
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 3 Mar 2015 15:05:33 +0000 (22:05 +0700)]
Merge: compiler: fast path is the hot path in once and literal strings
`once` structure and literal strings are implemented with a guard so that
onced-expression and literal strings are evaluated/created once then
stored in a static variable.
This patch just informs GCC that the fast path (get the saved value)
it the frequent path. It's up to GCC to do something useful with this
information.
It seems it does since number for nitc/nitc/nitc are
before: 0m7.324s
after: 0m7.156s (-2.3%)
Pull-Request: #1183
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Tue, 3 Mar 2015 15:05:12 +0000 (22:05 +0700)]
Merge: Inline intern methods in standard objects
Those in primitive types where already inlined, this time it is the ones in Object, NativeArray and other.
A special case remain for `object_id` since the value in standard objects is redefined in primitive type.
So this one is not inlined.
The gain in nitc/nitc/nitc is less that I expected but not that bad.
before: 0m7.276s
after: 0m7.100s (-2.5%)
Bonus: an old bug related to native arrays in --semi-global related to inlining is also fixed.
Pull-Request: #1180
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Tue, 3 Mar 2015 15:04:56 +0000 (22:04 +0700)]
Merge: Introduce Cloneable interface
As exposed by #917 a standard API to clone objects could be useful.
This PR propose a Cloneable interface that class can implement.
The specif semantic of what a clone is is domain-dependent, the only suggestion I define is to be POLA and to consider the post condition `self == clone`. It seems sane since the precise semantic of `==` is also domain-dependent. The post-condition is not mandatory since not all classes redefines `==` and maybe some classes could be cloneable without being `==`-able. The reason is that `clone` is instantaneous but the semantic `==` should remain valid all the time. For instance, It could make sense to clone some Iterators but I am not sure what is a sane definition of `==` on them.
As a POC, clone is implemented is the three Array-related classes, Array, ArraySet and ArrayMap.
Pull-Request: #1176
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Mon, 2 Mar 2015 06:42:55 +0000 (13:42 +0700)]
compiler: fast path is the hot path in once and literal strings
`once` structure and literal strings are implemented with a guard so that
onced-expression and literal strings are evaluated/created once then
stored in a static variable.
This patch just informs GCC that the fast path (get the saved value)
it the frequent path. It's up to GCC to do something useful with this
information.
It seems it does since number for nitc/nitc/nitc are
before: 0m7.324s
after: 0m7.156s (-2.3%)
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 28 Feb 2015 11:00:15 +0000 (18:00 +0700)]
version 0.7.2
Jean Privat [Thu, 26 Feb 2015 11:39:41 +0000 (18:39 +0700)]
tests: update because changes in kernel and array
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 21 Feb 2015 16:15:28 +0000 (23:15 +0700)]
lib/array: Array, ArraySet and ArrayMap are cloneable
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 21 Feb 2015 16:06:15 +0000 (23:06 +0700)]
kernel: new interface `Cloneable` to provide a `clone` method
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Feb 2015 14:19:05 +0000 (21:19 +0700)]
tests: remove nitg-sg/fixme/test_gen.res because native arrays is fixed
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Feb 2015 14:02:54 +0000 (21:02 +0700)]
sepcomp: shortcut an inline most intern methods of Object
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Feb 2015 13:59:57 +0000 (20:59 +0700)]
sepcomp: extract `direct_call` from `compile_callsite`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Feb 2015 13:58:55 +0000 (20:58 +0700)]
sepcomp: fix compilation of NativeArray[] in an inlined context.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Feb 2015 05:05:28 +0000 (12:05 +0700)]
kernel: add Char::is_whitespace
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 27 Feb 2015 02:51:36 +0000 (09:51 +0700)]
Merge: Use --log
Use the option --log to log things.
It is not that hard to add logged things and it helped me, in #1177, to track easily the bug in rta.
Pull-Request: #1178
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Fri, 27 Feb 2015 02:51:25 +0000 (09:51 +0700)]
Merge: Kill cached
Remove the deprecated annotation `is cached` that is fragile and replace the remaining cases with `lazy` attributes that is the way to go.
Pull-Request: #1175
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Sat, 21 Feb 2015 16:04:28 +0000 (23:04 +0700)]
collection: implements `MapRead::==`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 26 Feb 2015 23:52:38 +0000 (06:52 +0700)]
Merge: Nitrpg: add achievements
Not much achievements in this PR:
* Counting issues and rewarding at 1, 100, 1000
* Counting PR and rewarding at 1, 100, 1000
* Counting commits and rewarding at 1, 100, 1000, 10000
* Two achievements based on regexp, just for demo: Nitdoc and FFI
Partially fixes #1165: I fixed the typo in "complaint" and the first playre to unlock the achievement. But the related issue stills not linked for now.
Démo: http://nitlanguage.org/rpg/games/privat/nit (sorry, I had to reset the scores...)
Pull-Request: #1171
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Thu, 26 Feb 2015 13:58:07 +0000 (20:58 +0700)]
tests: tests --log and --log-dir for nitc
So we can check that this rare path does not crashes
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 26 Feb 2015 13:56:29 +0000 (20:56 +0700)]
man: document --log and --log-dir
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 26 Feb 2015 13:45:27 +0000 (20:45 +0700)]
rta: log results of analysis in the log directory
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 26 Feb 2015 13:43:55 +0000 (20:43 +0700)]
toolcontext: log all verbose infos in the log directory
Signed-off-by: Jean Privat <jean@pryen.org>
Alexandre Terrasa [Mon, 23 Feb 2015 09:57:07 +0000 (10:57 +0100)]
contrib/nitrpg: display achievements in front end
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Thu, 26 Feb 2015 12:13:18 +0000 (13:13 +0100)]
contrib/nitrpg: introduce achievements
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Thu, 26 Feb 2015 11:41:14 +0000 (18:41 +0700)]
tests: remove base_at_cached.nit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 26 Feb 2015 07:48:16 +0000 (14:48 +0700)]
glesv2: fix bad use of `lazy` annotation (fun instead of var)
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 26 Feb 2015 07:47:15 +0000 (14:47 +0700)]
nitrpg: implement correct caching for User::player
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 26 Feb 2015 04:51:02 +0000 (11:51 +0700)]
modelize: prevent the use of `lazy` on methods
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 26 Feb 2015 04:50:42 +0000 (11:50 +0700)]
frontend: remove deprecated cached annotation and phase
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 26 Feb 2015 04:08:14 +0000 (11:08 +0700)]
code: replace `is cached` by `is lazy`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 26 Feb 2015 02:23:36 +0000 (09:23 +0700)]
Merge: Guard call
Add option `--guard-call` as an alternative implementation of the link-time optimization `--substitute-monomorph`
The idea is to have the standard VFT call guarded by a symbol when the call is monomorphic.
So the sequence is independent of any client and is roughly
~~~
if SYMBOL != null then
SYMBOL(ARGS)
else
(SELF->VFT[COLOR])(ARGS)
end
~~~
where the value of the SYMBOL is set for each specific program at link-time: null when the call is polymorphic and the address of the single target when the call is monomorphic.
Benches show that, on my computer, there is from 0% to 10% in loss so this alternative implementation is pure overcost :)
Still keep it because, I coded it and works, and it may worth something on other architectures.
The benchs shows some quick results:
* first (sc, red) is default
* second (sl, green) is `--substitute-monomorph`, the previous impl
* third (gc, blue) is `--guard-call``, the new one
* last (cd, purple) is `--direct-call-monomorph0`, the optimal with direct calls directly inserted in a global way
![bench_linkboost](https://cloud.githubusercontent.com/assets/135828/6342973/
794b2a92-bc13-11e4-9b22-
cc43e6cda473.png)
Even if the result is deceiving, the PR does some cleanup and refactorization, so we got that goin for us, which is nice.
Pull-Request: #1173
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Thu, 26 Feb 2015 02:23:27 +0000 (09:23 +0700)]
Merge: Nitdoc: HTML templates related cleaning
This PR reorganizes Nitdoc modules importation for HTML templates.
The main objective is to dissociate `doc_model` from html related things.
This is the last step before template migration from old model templates to `DocComposite`.
Pull-Request: #1172
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Thu, 26 Feb 2015 02:23:18 +0000 (09:23 +0700)]
Merge: Generalized class members
This PR change the way class members are parsed.
Before, the order was strict: class annotations, then extern code block, then super clauses, then properties.
After, annotations and super clauses can appear in any order within the properties
The need is to enable class annotations inside the class (cf #1158) I did not find another simple way to do this.
Now, one can write
~~~nit
class B
super A
serializable
var i: Int
autoinit x, i
end
~~~
Pull-Request: #1159
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Tue, 24 Feb 2015 16:15:26 +0000 (23:15 +0700)]
nitpretty: handle super and class-level annotation as property
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 24 Feb 2015 16:12:19 +0000 (23:12 +0700)]
tests: update test_parser_args1.res
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 21 Feb 2015 02:58:22 +0000 (09:58 +0700)]
serialization: generate ASuperPropdef instead of ASuperclass
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 20 Feb 2015 05:56:27 +0000 (12:56 +0700)]
astvalidation: skip individual annotations
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 10 Feb 2015 10:33:21 +0000 (17:33 +0700)]
transform: skip if no mpropdef instead of abort
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 10 Feb 2015 10:32:26 +0000 (17:32 +0700)]
modelize: implements services of APropdef as noop (instead of abstract)
So that working on special APropdefs do nothing by default.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 24 Feb 2015 16:06:31 +0000 (23:06 +0700)]
parser: regenerate with generalized class members
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 24 Feb 2015 16:01:29 +0000 (23:01 +0700)]
grammar: introduce AAnnotPropdef for annotation in classes
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 24 Feb 2015 15:59:48 +0000 (22:59 +0700)]
grammar: introduce ASuperPropdef for super-classes
The suffix `Prodef` is unfortunate, but sablecc3 is the law.
I would have preferred `ASuperDef` or something.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 24 Feb 2015 15:56:44 +0000 (22:56 +0700)]
grammar: remove `line_annotations_forclass` and `superclass` from classdef
They will be reintroduced as propdefs in next commits
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 24 Feb 2015 15:53:24 +0000 (22:53 +0700)]
grammar: propdefs returns a list
Signed-off-by: Jean Privat <jean@pryen.org>
Alexandre Terrasa [Mon, 23 Feb 2015 14:54:06 +0000 (15:54 +0100)]
src/doc: uniformize HTML output for topmenu
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 17 Feb 2015 19:27:37 +0000 (20:27 +0100)]
src/doc: clean DocPage rendering API.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 17 Feb 2015 19:11:34 +0000 (20:11 +0100)]
src/doc: make DocPage render itself instead of using a TplPage
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 24 Feb 2015 13:57:33 +0000 (14:57 +0100)]
src/doc: move `doc_templates` to `html_templates` group.
At this point, anything that is related to HTML ouput is only required by the HTML rendering phase.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Tue, 24 Feb 2015 03:33:45 +0000 (10:33 +0700)]
bench: add `bench_call_monomorph` to compare both levels
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 24 Feb 2015 03:27:40 +0000 (10:27 +0700)]
sepcomp: add option -direct-call-monomorph0 a less precise --direct-call-monomorph option
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 24 Feb 2015 04:00:13 +0000 (11:00 +0700)]
Merge: Add tasks in benchmark/bench_engines
More benches for more science
Pull-Request: #1170
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Tue, 24 Feb 2015 03:59:58 +0000 (10:59 +0700)]
Merge: nitrpg: add nitrpg.user.js for enhanced user experience
A script to use with [user-script][1] compliant plugin for your browser to enhance the user experience on github for nitrpg players.
[1]: http://en.wikipedia.org/wiki/Greasemonkey
Pull-Request: #1169
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Tue, 24 Feb 2015 03:59:46 +0000 (10:59 +0700)]
Merge: parser: add `ASTDump` and `ANode::dump_tree`
A simple helper to debug AST. I used it to debug auto-serialization in #1159
Pull-Request: #1167
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Tue, 24 Feb 2015 03:59:32 +0000 (10:59 +0700)]
Merge: nitunit: fix running last test of a module, it was previously ignored
This is a very small commit, but it may reveal some previously ignored nitunits.
Pull-Request: #1166
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Tue, 24 Feb 2015 03:19:10 +0000 (10:19 +0700)]
sepcomp: add option `--guard-call`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 23 Feb 2015 22:11:34 +0000 (05:11 +0700)]
sepcomp: move out opt_substitute_monomorph from compile_module_to_c
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 23 Feb 2015 21:34:35 +0000 (04:34 +0700)]
nitrpg: add nitrpg.user.js for enhanced user experience
Signed-off-by: Jean Privat <jean@pryen.org>
Alexandre Terrasa [Tue, 10 Feb 2015 21:38:47 +0000 (22:38 +0100)]
contrib/nitrpg: also use `root_url` on site logo.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 10 Feb 2015 21:38:06 +0000 (22:38 +0100)]
contrib/nitrpg: move statistics to GameEntity.
So even players can have stats.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Sun, 22 Feb 2015 09:09:34 +0000 (16:09 +0700)]
benches: replace niti test_parser task by two niti tasks (nitcc and queens)
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 22 Feb 2015 03:42:36 +0000 (10:42 +0700)]
benches: add markdown as a task in bench_engines
Signed-off-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Sat, 21 Feb 2015 12:51:56 +0000 (07:51 -0500)]
lib/github: deactivate assert in broken nitunit
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Sat, 21 Feb 2015 06:05:02 +0000 (13:05 +0700)]
Merge: Support Android on 2 different ARMs, x86 and even MIPS
Tested on ARM v7 and x86. MIPS on Android is more rare but it is used on some low-cost phones.
Each extra architecture use less than 1 mo in the release APK, but MIPS is the largest one. I could add an annotation or something else if we ever need smaller APK files. Mineit VR release with the 4 architectures and its textures takes only 2.5 mo.
Pull-Request: #1164
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 21 Feb 2015 06:04:31 +0000 (13:04 +0700)]
Merge: class annotation `autoinit` to explicitly lists initializers.
A suggestion of @Morriar is to use a class-level annotation `autoinit` to list initializers.
It should ne rarely used, in case of conflict for instance, or to restrict the number of initializers (but this could be fragile).
A step towards #785
~~~nit
class A
var a: Int
var b: String
end
class B
autoinit c, b, a
super A
var c: Bool
end
var a = new A(10, "foo")
var b = new B(true, "foo", 10)
~~~
Some issues remains, I my require your input on these
* why I am required to put `autoinit` before the `super` clause?
because the grammar is ugly.
Maybe I should find a way to enable the `autoinit` clause everywhere in the body of the class?
This is a grammar issue that can be solved independently I think.
* what are the validity of initializers?
The first commit is used to discriminate properties that are initializers and those that are not.
I am not sure if restricting what can be used an initializer makes sense. In fact I really do not know what is the best expressive-but-safe policy here. See the last point for a related issue
* what about clearing the full list of initializers (so no parameters in the new)?
The annotation `noautoinit` will do the trick.
* what about setters?
when one writes `class A var x: Int`, in fact the initializer is not the getter `x` but the setter `x=`. It is obvious once one understand that `var a = new A(10)` is just `var a = alloc A; a.x = 10; a.init`.
However, I chose to implicitly try to search the setter first when given `x` as an element of the `autoinit` clause, so that one can write `autoinit x` instead of the less POLA `autoinit x=` (that also works by the way).
Unfortunately this kind of heuristic makes the specification more complex, but also prevents one to use a method `x` as an initializer if a method `x=` exists.
Pull-Request: #1158
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Sat, 21 Feb 2015 02:56:54 +0000 (09:56 +0700)]
parser: add `ASTDump` and `ANode::dump_tree`
Signed-off-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Fri, 20 Feb 2015 16:34:30 +0000 (11:34 -0500)]
nitunit: fix executing last test which was previously ignored
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 20 Feb 2015 14:42:01 +0000 (09:42 -0500)]
nitc/android: compile Android projects for x86, mips and 2 versions of arm
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 20 Feb 2015 03:47:58 +0000 (22:47 -0500)]
share/libgc: compile libgc for Android on more than arm: x86 and mips
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Fri, 20 Feb 2015 05:42:18 +0000 (12:42 +0700)]
tests: update some `base_init` to use noautoinit instead of noinit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 10 Feb 2015 10:51:07 +0000 (17:51 +0700)]
tests: add base_init_autoinit3.nit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 20 Feb 2015 05:38:58 +0000 (12:38 +0700)]
modelize: add class annotation `noautoinit` to clear the list of initializers
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 20 Feb 2015 05:20:12 +0000 (12:20 +0700)]
modelize: accepts `noautoinit` the new name of `noinit`.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 10 Feb 2015 05:05:34 +0000 (12:05 +0700)]
modelize: add class-annotation `autoinit` to explicitly list the initializers
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 19 Feb 2015 01:53:28 +0000 (08:53 +0700)]
Merge: Misc commits to android, json::dynamic and more_collections
The gamepad events are based on 2 different gamepads. They will probably need to be revisited with different layouts.
Pull-Request: #1163
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Alexandre Terrasa [Tue, 17 Feb 2015 18:45:48 +0000 (19:45 +0100)]
src/doc: move remaining services from `doc_model` to `doc_base` and delete the module
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 17 Feb 2015 18:39:32 +0000 (19:39 +0100)]
src/doc: move HTML output related services from `doc_model` to `html_model`
So HTML related things are only imported by the HTML rendering phase.
Next commit will finish the `doc_model` cleaning by merging remaining services into `doc_base`.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 17 Feb 2015 18:39:04 +0000 (19:39 +0100)]
src/doc: use `nitdoc_name` rather than `nitdoc_id` for debug name.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 17 Feb 2015 18:17:57 +0000 (19:17 +0100)]
src/doc: introduce `html_templates` group.
This group will be used to store all the HTML output related things.
Next commit will extract HTML related services from module `doc_model`.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 17 Feb 2015 17:50:36 +0000 (18:50 +0100)]
src/doc: make ImportationListSection and InheritanceListSection two MEntity articles since the lists are about a specific MEntity
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 17 Feb 2015 17:49:42 +0000 (18:49 +0100)]
src/doc: make GraphArticle a MEntity article since the graph is about a specific MEntity
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Tue, 17 Feb 2015 18:11:32 +0000 (19:11 +0100)]
src/doc: rename `DocComposite::add` into `add_child` to avoid conflict with `Template::add`
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexis Laferrière [Fri, 9 Jan 2015 14:52:33 +0000 (09:52 -0500)]
lib/android: add the gamepad module
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>