nit.git
10 years agobenchs: add --inline-some-methods and --direct-call-monomorph to bench_nitg-s_options...
Jean Privat [Thu, 27 Mar 2014 20:34:41 +0000 (16:34 -0400)]
benchs: add --inline-some-methods and --direct-call-monomorph to bench_nitg-s_options-faster

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agobenchs: add --no-gcc-directive to bench_nitg-s_options-slower
Jean Privat [Thu, 27 Mar 2014 20:36:06 +0000 (16:36 -0400)]
benchs: add --no-gcc-directive to bench_nitg-s_options-slower

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agobenchs: protect mangle groups of options in `bench_nitg*_options`
Jean Privat [Thu, 27 Mar 2014 18:37:45 +0000 (14:37 -0400)]
benchs: protect mangle groups of options in `bench_nitg*_options`

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agonitgs: add --direct-call-monomorph and --inline-some-methods
Jean Privat [Thu, 27 Mar 2014 20:33:56 +0000 (16:33 -0400)]
nitgs: add --direct-call-monomorph and --inline-some-methods

These code-generation-level global optimizations allow the separate
compiler to:

* first, use a direct call, instead of a VFT call when RTA gives inform
  that a callsite is monomorph (and that the receiver is a nonnull
  non parametric type)
* second, to inline static call when the mmethoddef is tagged accordingly
  (we reuse the `can_inline` service of the global compiler)

**DISCLAMER**
The point of these optimizations is to evaluate some extreme optimizations,
thus to bound the gain of much less aggressive optimizations.
Real direct call and inlining optimizations SHOULD be applied on the AST
or (some intermediate code level) to be combinable with other optimizations.

Some numbers for `nitg --separate nitg.nit`:

# base (no option)
total number of invocations: 45833
invocations by VFT send:     34556 (75.39%)
invocations by direct call:  9955 (21.72%)
invocations by inlinning:    1322 (2.88%)
user time 0m10.2s

# with --direct-call-monomorph
total number of invocations: 45833
invocations by VFT send:     9259 (20.20%)
invocations by direct call:  35199 (76.79%)
invocations by inlinning:    1375 (3.00%)
user 0m10.1s

# with --direct-call-monomorph and --inline-some-methods
total number of invocations: 46657
invocations by VFT send:     9701 (20.79%)
invocations by direct call:  26239 (56.23%)
invocations by inlinning:    10717 (22.96%)
user 0m10.0s

Discussion about the number:
Something is fishy, while there is a high reduction of VFT or direct calls,
there is no real gain in CPU time. Points to investigate:

* the optimized invocations are not in the hot path
  TODO gather dynamic numbers
* my CPU is very efficient when dealing with direct call and indirect calls
  TODO test on pratchett
* some issues with the measurements or with the measurer
  TODO go to sleep

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agonitg-s: use is_intern instead of crazy AST stuff
Jean Privat [Thu, 27 Mar 2014 19:34:24 +0000 (15:34 -0400)]
nitg-s: use is_intern instead of crazy AST stuff

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomodel: add `MMethodDef::is_intern`
Jean Privat [Wed, 19 Mar 2014 13:39:20 +0000 (09:39 -0400)]
model: add `MMethodDef::is_intern`

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agonitg-s: collect static statistics about the invocation mechanism used
Jean Privat [Thu, 27 Mar 2014 19:29:04 +0000 (15:29 -0400)]
nitg-s: collect static statistics about the invocation mechanism used

They are displayed on `-v -v`.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agonitg: Use gcc special attributes and directives.
Jean Privat [Thu, 27 Mar 2014 16:58:24 +0000 (12:58 -0400)]
nitg: Use gcc special attributes and directives.

`noreturn` tags `show_backtrace` as no return
ie. `__attribute__ ((noreturn))`

`likely` tags runtime error checks with `unlikely`
ie. `__builtin_expect((x),0)`

These special C annotations can be disabled with --no-gcc-directive
The additional `--no-gcc-directive correct-likely` invert the
`__builtin_expect` target.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agoMerge: Callgraph
Jean Privat [Thu, 27 Mar 2014 01:04:53 +0000 (21:04 -0400)]
Merge: Callgraph

Quick patches so that RTA can give two new pieces of information.

1. what are the live CallSites? `RTA::live_callsites`
2. for each live CallSite, what are the live targets (MMethodDef) `RTA::live_targets`

Pull-Request: #369
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>

10 years agoMerge: Fix ffi null service
Jean Privat [Wed, 26 Mar 2014 23:55:49 +0000 (19:55 -0400)]
Merge: Fix ffi null service

With nitg-g, the linker could fail when the same two piece of code will be in distinct files,
since the #ifndef trick does not cross compilation units.

This merge is just a workaroud where we use a global flag to avoid multiple definition.
While it works (thus is an improvement) it is ugly and broke the separate compilation concerns.

Pull-Request: #368
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>

10 years agoMerge: More on Pipeline
Jean Privat [Wed, 26 Mar 2014 19:25:36 +0000 (15:25 -0400)]
Merge: More on Pipeline

Pull-Request: #362
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>

10 years agotests: update sav/nitmetrics_args1.res for RTA-callsite info
Jean Privat [Wed, 26 Mar 2014 19:01:57 +0000 (15:01 -0400)]
tests: update sav/nitmetrics_args1.res for RTA-callsite info

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agometrics/rta: add callsite_info to display things
Jean Privat [Wed, 26 Mar 2014 18:39:47 +0000 (14:39 -0400)]
metrics/rta: add callsite_info to display things

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agorta: add live_callsites and live_callsites
Jean Privat [Wed, 26 Mar 2014 18:25:24 +0000 (14:25 -0400)]
rta: add live_callsites and live_callsites

In a callgraph it is useful to be able to compute the live target of any
callsite

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agocallsite: add `mmodule` and `anchor` to the callsite objects
Jean Privat [Wed, 26 Mar 2014 18:21:42 +0000 (14:21 -0400)]
callsite: add `mmodule` and `anchor` to the callsite objects

This simplify the job of its users since more model information is
available.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agocompiler_ffi: factorize code in compile_extern_helper_functions
Jean Privat [Wed, 26 Mar 2014 13:32:52 +0000 (09:32 -0400)]
compiler_ffi: factorize code in compile_extern_helper_functions

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agocompiler_ffi: ifndef does not protect multiple definition of symbols
Jean Privat [Wed, 26 Mar 2014 13:32:09 +0000 (09:32 -0400)]
compiler_ffi: ifndef does not protect multiple definition of symbols

`#ifndef` trick can work on the compiler, but not on the linker.

Do not use buggy pragma to protect multiple definition

10 years agolib/pipeline: add basic functional-like filer processing (map&select)
Jean Privat [Mon, 24 Mar 2014 18:56:57 +0000 (14:56 -0400)]
lib/pipeline: add basic functional-like filer processing (map&select)

Because Nit is not functional, worse, there is no anonymous classes, the
use is complex.
However, I tried to have the syntax as light as it could be currently.

I still suspect that for most cases, a `for` loop can perform
enough map&select style. Therefore, consider this commit as an
experimentation.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agoMerge: check signature visibility
Jean Privat [Tue, 25 Mar 2014 19:08:29 +0000 (15:08 -0400)]
Merge: check signature visibility

A public API property cannot expose a private type.

Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>

10 years agotests: add base_prot_sig to test usage of private type in public signature
Jean Privat [Tue, 25 Mar 2014 13:49:37 +0000 (09:49 -0400)]
tests: add base_prot_sig to test usage of private type in public signature

There is a lot of tests because there is a lot of combination...

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomodelize_property: check that public properties only contains public types
Jean Privat [Tue, 25 Mar 2014 13:46:24 +0000 (09:46 -0400)]
modelize_property: check that public properties only contains public types

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agometrics: type phase attributes with Phase instead of private subclasses
Jean Privat [Tue, 25 Mar 2014 13:46:10 +0000 (09:46 -0400)]
metrics: type phase attributes with Phase instead of private subclasses

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomodel_viz: privatize linex_comparator
Jean Privat [Tue, 25 Mar 2014 12:31:26 +0000 (08:31 -0400)]
model_viz: privatize linex_comparator

Because LinexComparator is private and the attribute
is only used as a cache.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agolib/coll: remove private types from public signatures
Jean Privat [Tue, 25 Mar 2014 12:30:29 +0000 (08:30 -0400)]
lib/coll: remove private types from public signatures

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agoMerge: Easy entry point for student
Jean Privat [Mon, 24 Mar 2014 19:03:09 +0000 (15:03 -0400)]
Merge: Easy entry point for student

Simplify the entry point for new contributor of the tools.
4th (and last) of the #353 series.

Pull-Request: #353
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>

10 years agoMerge: Process mainmodule and mmodules
Jean Privat [Mon, 24 Mar 2014 18:59:55 +0000 (14:59 -0400)]
Merge: Process mainmodule and mmodules

improve  `ModelBuilder::run_global_phases` and `Phase::process_mainmodule`.
Better API when more that one module is given (with an implicit bottom-module).

The 3rd PR of the #353 series

Pull-Request: #357
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>

10 years agolib: modify lib/pipeline to work on iterators instead of collection
Jean Privat [Mon, 24 Mar 2014 17:44:19 +0000 (13:44 -0400)]
lib: modify lib/pipeline to work on iterators instead of collection

* Methods in `pipeline` are difficult to use because they are lazy.
* They are highly generic and return a abstract return type, thus
having them in Collection lead to strange API, like `[1,2,3].head(2)` that
is not an Array.
* Because they are in Collection, all standard class like Array show them
in their documentation, confusing beginners.

Moving all pipeline functions on Iterator solve these problems.

This basically reverts commit c0316e522d0d8053c0fb155bf1fbd14979a12202.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agolib/curl: remove dep. en `pipeline`
Jean Privat [Mon, 24 Mar 2014 17:44:47 +0000 (13:44 -0400)]
lib/curl: remove dep. en `pipeline`

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agoMerge: Toolcontext process options
Jean Privat [Mon, 24 Mar 2014 14:44:11 +0000 (10:44 -0400)]
Merge: Toolcontext process options

improve `ToolContext::process_options`.
This factorizes code and reduces the number of buggy corner-case

The second PR of the #353 series

Pull-Request: #356

10 years agomerge: Reactivate networg debug
Jean Privat [Mon, 24 Mar 2014 14:39:22 +0000 (10:39 -0400)]
merge: Reactivate networg debug

Rename and reactivate the network debogger

First step of the PR series #353

Pull-Request: #355

10 years agoMerge branch 'doc_stdlib_some_more'
Jean Privat [Fri, 21 Mar 2014 18:45:57 +0000 (14:45 -0400)]
Merge branch 'doc_stdlib_some_more'

10 years agoMerge branch 'html_add_outer'
Jean Privat [Fri, 21 Mar 2014 17:33:22 +0000 (13:33 -0400)]
Merge branch 'html_add_outer'

10 years agolib/html: add method add_outer
Johann Dubois [Wed, 29 Jan 2014 19:43:24 +0000 (14:43 -0500)]
lib/html: add method add_outer

closes #233
signed-off-by: Johann Dubois <johann.dubois@outlook.com>
Signed-off-by: Jean Privat <jean@pryen.org>

10 years agoMerge branch 'doc_for_FileStat'
Jean Privat [Fri, 21 Mar 2014 17:21:05 +0000 (13:21 -0400)]
Merge branch 'doc_for_FileStat'

10 years agolib/file: Add comments in FileStat
Johann Dubois [Wed, 29 Jan 2014 19:49:31 +0000 (14:49 -0500)]
lib/file: Add comments in FileStat

closes #234
signed-off-by: Johann Dubois <johann.dubois@outlook.com>

10 years agolib/environ: more documentation and nitunit tests
Jean Privat [Fri, 21 Mar 2014 15:43:09 +0000 (11:43 -0400)]
lib/environ: more documentation and nitunit tests

Fixes #209
Signed-off-by: Jean Privat <jean@pryen.org>

10 years agolib/string_search: more documentation and nitunit tests
Jean Privat [Fri, 21 Mar 2014 15:41:58 +0000 (11:41 -0400)]
lib/string_search: more documentation and nitunit tests

Fixes #186
Fixes #218
Signed-off-by: Jean Privat <jean@pryen.org>

10 years agolib/file: more documentation and nitunit tests
Jean Privat [Fri, 21 Mar 2014 15:32:37 +0000 (11:32 -0400)]
lib/file: more documentation and nitunit tests

Fixes #160
Fixes #161
Signed-off-by: Jean Privat <jean@pryen.org>

10 years agolib/file: document and fix `file_extension`
Jean Privat [Fri, 21 Mar 2014 14:31:20 +0000 (10:31 -0400)]
lib/file: document and fix `file_extension`

Also remove the redundant (thus useless) test file.

Fixes #160
Signed-off-by: Jean Privat <jean@pryen.org>

10 years agotests: add src/test_test_phase
Jean Privat [Fri, 21 Mar 2014 03:10:13 +0000 (23:10 -0400)]
tests: add src/test_test_phase

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agometrics/generate_hier: project_hierarchy.dot use given_mmodules
Jean Privat [Fri, 21 Mar 2014 02:56:07 +0000 (22:56 -0400)]
metrics/generate_hier: project_hierarchy.dot use given_mmodules

Instead of using the first loaded project

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agotoolcontext: `process_options` require arguments.
Jean Privat [Fri, 21 Mar 2014 02:06:29 +0000 (22:06 -0400)]
toolcontext: `process_options` require arguments.

Having it to access directly `sys.args` broke some isolation concerns.

This commit also updates all tools to avoid breakage.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agosrc: new example tool test_test_phase.nit
Jean Privat [Thu, 20 Mar 2014 21:17:07 +0000 (17:17 -0400)]
src: new example tool test_test_phase.nit

This module could be shown to first-time contributors (like students)
that need to implement some proof of concept.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomodelbuilder: add parameter `given_mmodules` to `Phase::process_mainmodule`
Jean Privat [Fri, 21 Mar 2014 02:47:23 +0000 (22:47 -0400)]
modelbuilder: add parameter `given_mmodules` to `Phase::process_mainmodule`

`given_modules` is the list of explicitely requested modules.
From the command-line for instance.

Thus, global phases can chose to work with the bottom main module or
with each specific given modules.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agotests: update sav/ for tools
Jean Privat [Fri, 21 Mar 2014 01:58:27 +0000 (21:58 -0400)]
tests: update sav/ for tools

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agotest_phase: provide a simpler way to implement POC of nit tools
Jean Privat [Thu, 20 Mar 2014 21:09:53 +0000 (17:09 -0400)]
test_phase: provide a simpler way to implement POC of nit tools

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomodelbuilder: `run_global_phases` takes an array of modules
Jean Privat [Fri, 21 Mar 2014 02:34:29 +0000 (22:34 -0400)]
modelbuilder: `run_global_phases` takes an array of modules

Instead of a single module.
Thus it can creates itself the implicit bottom module if required.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agosrc: update tools to the new toolcontext helpers on option processing
Jean Privat [Fri, 21 Mar 2014 01:56:40 +0000 (21:56 -0400)]
src: update tools to the new toolcontext helpers on option processing

Specify a tooldescription
Get rid of manual management of most arguments error

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agotests: add src/test_phase
Jean Privat [Thu, 20 Mar 2014 21:14:24 +0000 (17:14 -0400)]
tests: add src/test_phase

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomakefile: doc/nitc/index.html includes test_*
Jean Privat [Fri, 21 Mar 2014 03:24:44 +0000 (23:24 -0400)]
makefile: doc/nitc/index.html includes test_*

Also, old names of nitdbg_* are removed.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agotoolcontext: add the flag `accept_no_arguments`
Jean Privat [Fri, 21 Mar 2014 00:47:29 +0000 (20:47 -0400)]
toolcontext: add the flag `accept_no_arguments`

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomakefile: build nitdbg_* tools
Jean Privat [Fri, 21 Mar 2014 01:14:19 +0000 (21:14 -0400)]
makefile: build nitdbg_* tools

Because the ffi works again!

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agotoolcontext: process_option honors --help, --version and checks options errors
Jean Privat [Fri, 21 Mar 2014 00:45:00 +0000 (20:45 -0400)]
toolcontext: process_option honors --help, --version and checks options errors

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agonitdbg_client: exit if not connected (instead of getting a SIGPIPE)
Jean Privat [Fri, 21 Mar 2014 13:21:35 +0000 (09:21 -0400)]
nitdbg_client: exit if not connected (instead of getting a SIGPIPE)

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agotoolcontext: add `usage` and `tooldescription`
Jean Privat [Fri, 21 Mar 2014 00:43:20 +0000 (20:43 -0400)]
toolcontext: add `usage` and `tooldescription`

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agonitg: catch SIGPIPE as a runtimeerror
Jean Privat [Fri, 21 Mar 2014 13:20:55 +0000 (09:20 -0400)]
nitg: catch SIGPIPE as a runtimeerror

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agosrc: rename `dbgcli` and `netdbg` as `nitdbg_{client,server}`
Jean Privat [Fri, 21 Mar 2014 01:13:02 +0000 (21:13 -0400)]
src: rename `dbgcli` and `netdbg` as `nitdbg_{client,server}`

the `nit` prefix is reserved for commands.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agosrc: rename `nitdbg_commons` as `debugger_commons`
Jean Privat [Fri, 21 Mar 2014 01:01:08 +0000 (21:01 -0400)]
src: rename `nitdbg_commons` as `debugger_commons`

the `nit` prefix is reserved for commands.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agosrc: rename `nit_version.nit` as `version.nit`
Jean Privat [Fri, 21 Mar 2014 00:50:26 +0000 (20:50 -0400)]
src: rename `nit_version.nit` as `version.nit`

the `nit` prefix is reserved for commands.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agoMerge branch 'doc_on_collection'
Jean Privat [Thu, 20 Mar 2014 21:54:55 +0000 (17:54 -0400)]
Merge branch 'doc_on_collection'

10 years agoMerge branch 'module_paths'
Jean Privat [Thu, 20 Mar 2014 21:54:02 +0000 (17:54 -0400)]
Merge branch 'module_paths'

This series improve the way the loader identify path.

Now, directories and global projects (those in the NIT_PATH or from -I)
can be loaded

Thus, you can write

~~~
$ nitg mytool.nit -m android
~~~

A new tool, `nitls` exposes path identifications to the user than now
can list source files, projects, and both in a tree only by looking at
the file system (no parsing or whatever)

Eg. what are the projects in the directory lib (-k ignore non nit
things)

~~~
$ src/nitls lib/* -k
lib/a_star.nit
lib/android.nit
lib/base64.nit
lib/bcm2835.nit
lib/bucketed_game.nit
lib/console.nit
lib/counter.nit
lib/cpp.nit
lib/csv.nit
lib/curl
lib/curses
lib/dummy_array.nit
lib/egl.nit
lib/filter_stream.nit
lib/for_abuse.nit
lib/glesv2.nit
lib/gpio.nit
lib/gtk.nit
lib/gtk3_4
lib/gtk3_6
lib/gtk3_8
lib/html.nit
lib/json
lib/json_serialization.nit
lib/jvm.nit
lib/md5.nit
lib/mnit
lib/mnit_android
lib/mnit_linux
lib/more_collections.nit
lib/mpd.nit
lib/nitcc_runtime.nit
lib/opts.nit
lib/ordered_tree.nit
lib/pipeline.nit
lib/poset.nit
lib/posix_ext.nit
lib/privileges.nit
lib/realtime.nit
lib/scene2d.nit
lib/serialization.nit
lib/signals.nit
lib/simple_json_reader
lib/socket
lib/sqlite3
lib/standard
lib/symbol.nit
lib/template.nit
lib/x11.nit
~~~

All stuff from standard in a tree

~~~
$ nitls lib/standard/ -r -t
standard
|--collection
|  |--lib/standard/collection/abstract_collection.nit
|  |--lib/standard/collection/array.nit
|  |--lib/standard/collection/collection.nit
|  |--lib/standard/collection/hash_collection.nit
|  |--lib/standard/collection/list.nit
|  |--lib/standard/collection/range.nit
|  `--lib/standard/collection/sorter.nit
|--lib/standard/environ.nit
|--lib/standard/exec.nit
|--lib/standard/file.nit
|--lib/standard/gc.nit
|--lib/standard/kernel.nit
|--lib/standard/math.nit
|--lib/standard/posix.nit
|--lib/standard/ropes.nit
|--lib/standard/standard.nit
|--lib/standard/stream.nit
|--lib/standard/string.nit
|--lib/standard/string_search.nit
`--lib/standard/time.nit
~~~

Conflicts:
tests/testfull.sh

10 years agotests: do not use now-private classes
Jean Privat [Thu, 20 Mar 2014 09:44:42 +0000 (05:44 -0400)]
tests: do not use now-private classes

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agolib/coll: make private some specific implementations of interfaces
Jean Privat [Thu, 20 Mar 2014 09:15:16 +0000 (05:15 -0400)]
lib/coll: make private some specific implementations of interfaces

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agolib/coll: make CoupleMapIterator private
Jean Privat [Thu, 20 Mar 2014 09:14:07 +0000 (05:14 -0400)]
lib/coll: make CoupleMapIterator private

Thus introduce a protected service `CoupleMap::couple_iterator` to
factorise the instantiation.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agolib/coll: generalize `insert` in Sequence
Jean Privat [Thu, 20 Mar 2014 09:10:52 +0000 (05:10 -0400)]
lib/coll: generalize `insert` in Sequence

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agolib/coll: move *index_of* in Sequence
Jean Privat [Thu, 20 Mar 2014 09:04:07 +0000 (05:04 -0400)]
lib/coll: move *index_of* in Sequence

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agolib: document abstract_collection + nitunit tests
Jean Privat [Thu, 20 Mar 2014 01:23:18 +0000 (21:23 -0400)]
lib: document abstract_collection + nitunit tests

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agoMerge branch 'model_entity'
Jean Privat [Thu, 20 Mar 2014 20:24:58 +0000 (16:24 -0400)]
Merge branch 'model_entity'

Basically, this adds a super-class MEntity and a class MDoc in model.

Now, tools that need to deal with abstractions of entities and with
documentation could be simplified.

10 years agolib/array: fix AbstractArray::unshift
Jean Privat [Thu, 20 Mar 2014 01:40:00 +0000 (21:40 -0400)]
lib/array: fix AbstractArray::unshift

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agotests: add and update test_markdown
Jean Privat [Wed, 19 Mar 2014 20:00:46 +0000 (16:00 -0400)]
tests: add and update test_markdown

A old version of sav/test_markdown.res existed but was not executed
by fulltest.sh

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agotest_markdown: adapt to MDoc
Jean Privat [Wed, 19 Mar 2014 19:56:56 +0000 (15:56 -0400)]
test_markdown: adapt to MDoc

and update to the new lib/html API

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agonitx: adapt to MDoc
Jean Privat [Wed, 19 Mar 2014 19:56:03 +0000 (15:56 -0400)]
nitx: adapt to MDoc

all `modelbuilder.mthing2nthing` have disappeared.

However, the new MEntity class still need to be used to factorize code.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agonitunit: adapt do MDoc
Jean Privat [Wed, 19 Mar 2014 19:53:05 +0000 (15:53 -0400)]
nitunit: adapt do MDoc

Quite simple indeed.

Since the point is just to collect pieces of code, the walk on the AST is
still the best path.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agonitdoc: adaptation for MDoc
Jean Privat [Wed, 19 Mar 2014 19:51:43 +0000 (15:51 -0400)]
nitdoc: adaptation for MDoc

The adaptation is minimal.

I tried to write a more complete adaptation but a in-depth rewriting
could be more useful since the new classes MEntity and MDoc should really
simplify things.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomarkdown: work on MDoc (instead of ADoc)
Jean Privat [Wed, 19 Mar 2014 19:48:34 +0000 (15:48 -0400)]
markdown: work on MDoc (instead of ADoc)

This commit broke the clients nitdoc, nitunit, and nitx.
The next commits will fix them (hopefully).

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomodelbuilder: fill the `mdoc` of entities
Jean Privat [Wed, 19 Mar 2014 19:41:55 +0000 (15:41 -0400)]
modelbuilder: fill the `mdoc` of entities

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomodel: add module `model/mdoc` to attach optional MDoc to model entities
Jean Privat [Wed, 19 Mar 2014 19:40:52 +0000 (15:40 -0400)]
model: add module `model/mdoc` to attach optional MDoc to model entities

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomodel: add `MEntity` as a superclass for model entities (ie. most classes in model)
Jean Privat [Wed, 19 Mar 2014 18:50:33 +0000 (14:50 -0400)]
model: add `MEntity` as a superclass for model entities (ie. most classes in model)

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agolib/html: add a lot of nitunit tests
Jean Privat [Wed, 19 Mar 2014 18:48:59 +0000 (14:48 -0400)]
lib/html: add a lot of nitunit tests

Also fix a bug related to the css `style` attribute thanks to those tests!

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agoMerge remote-tracking branch 'alexis/various-ffi-fixes'
Jean Privat [Wed, 19 Mar 2014 18:47:22 +0000 (14:47 -0400)]
Merge remote-tracking branch 'alexis/various-ffi-fixes'

10 years agoandroid: make apps fullscreen
Alexis Laferrière [Sat, 15 Mar 2014 15:04:06 +0000 (11:04 -0400)]
android: make apps fullscreen

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

10 years agoandroid: cleanup indentation in generation of xml files
Alexis Laferrière [Sat, 15 Mar 2014 15:03:48 +0000 (11:03 -0400)]
android: cleanup indentation in generation of xml files

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

10 years agonitls: add -M option do list dependencies
Jean Privat [Wed, 19 Mar 2014 13:46:47 +0000 (09:46 -0400)]
nitls: add -M option do list dependencies

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agoMerge remote-tracking branch 'alexis/more-jvm'
Jean Privat [Wed, 19 Mar 2014 12:55:04 +0000 (08:55 -0400)]
Merge remote-tracking branch 'alexis/more-jvm'

10 years agotests: update error_mod_unk.nit
Jean Privat [Tue, 18 Mar 2014 19:42:15 +0000 (15:42 -0400)]
tests: update error_mod_unk.nit

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agoMakefile: rule `doc/stdlib/index.html` use `nitls` instead of `find`
Jean Privat [Tue, 18 Mar 2014 19:04:33 +0000 (15:04 -0400)]
Makefile: rule `doc/stdlib/index.html` use `nitls` instead of `find`

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agoMakefile: build nitls
Jean Privat [Tue, 18 Mar 2014 19:03:11 +0000 (15:03 -0400)]
Makefile: build nitls

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agotests: add nitls
Jean Privat [Tue, 18 Mar 2014 19:00:32 +0000 (15:00 -0400)]
tests: add nitls

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agosrc: new tool nitls
Jean Privat [Tue, 18 Mar 2014 18:59:40 +0000 (14:59 -0400)]
src: new tool nitls

Simple tool to list nit source files in directories.

The tool is really fast since it does not load files, just look at the
structure of files and directories.

There is a bunch of cool options, try it.

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomodelbuilder: add `MGroup::module_paths` to store potential nit files
Jean Privat [Tue, 18 Mar 2014 18:44:51 +0000 (14:44 -0400)]
modelbuilder: add `MGroup::module_paths` to store potential nit files

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomodelbuilder: `identify_file` works with directories and module names
Jean Privat [Tue, 18 Mar 2014 18:44:17 +0000 (14:44 -0400)]
modelbuilder: `identify_file` works with directories and module names

* `cvs` will get `../lib/csv.nit`
* `curl` will get `../lib/curl/curl.nit`
* `some/path/` could get `some/path/path.nit`

This enable some fun the the option `-m`:

    $ nitg someprog.nit -m android

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomodelbuilder: extract `search_module_in_paths` from `get_mmodule_by_name`
Jean Privat [Tue, 18 Mar 2014 18:30:48 +0000 (14:30 -0400)]
modelbuilder: extract `search_module_in_paths` from `get_mmodule_by_name`

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agomodelbuilder: get_mmodule_by_name only output lookpaths instead of tries
Jean Privat [Tue, 18 Mar 2014 18:29:29 +0000 (14:29 -0400)]
modelbuilder: get_mmodule_by_name only output lookpaths instead of tries

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agolib/kernel: add `Bool::to_i`
Jean Privat [Tue, 18 Mar 2014 18:25:27 +0000 (14:25 -0400)]
lib/kernel: add `Bool::to_i`

Signed-off-by: Jean Privat <jean@pryen.org>

10 years agoMerge branch 'streamable'
Jean Privat [Tue, 18 Mar 2014 16:58:18 +0000 (12:58 -0400)]
Merge branch 'streamable'

10 years agotests: add errors to the jvm tests
Alexis Laferrière [Tue, 18 Mar 2014 15:21:13 +0000 (11:21 -0400)]
tests: add errors to the jvm tests

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

10 years agotests: test JavaVM::destroy and ::env
Alexis Laferrière [Tue, 18 Mar 2014 15:09:13 +0000 (11:09 -0400)]
tests: test JavaVM::destroy and ::env

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

10 years agotests: improve error handling in test_jvm
Alexis Laferrière [Fri, 14 Mar 2014 19:10:48 +0000 (15:10 -0400)]
tests: improve error handling in test_jvm

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

10 years agoMerge branch 'comparators'
Jean Privat [Tue, 18 Mar 2014 15:05:40 +0000 (11:05 -0400)]
Merge branch 'comparators'

10 years agoMerge branch 'file_string'
Jean Privat [Tue, 18 Mar 2014 15:05:25 +0000 (11:05 -0400)]
Merge branch 'file_string'