Jean Privat [Mon, 10 Aug 2015 16:12:51 +0000 (12:12 -0400)]
Merge: Stricter default arguments
This change the way that default arguments are handled.
Now, defaults arguments can only follow the used one.
This improve the readability of calls and the association between calls and declarations thus solve a lot of issues of users.
~~~
fun foo(a: nullable Int, b: Int, c: nullable Int) do ...
foo(null,2,null) # OK
foo(null,2) # equivalent
foo(2) # now refused! but previously accepted as equivalent.
~~~
Only exception: the last parameter of an assignment method is always the last argument
~~~
fun foo=(a: nullable Int, b: Int, c: nullable Int, d: nullable Int) do ...
foo(null,2,null) = 0 # OK
foo(null,2) = 0 # equivalent
foo(2) = 0 # now refused! but previously accepted as equivalent
~~~
No specific black magic is added to automatic constructor.
Therefore an optional constructor parameter in a class can becore mandatory in a subclass if a new mandatory attribute is introduced.
~~~
class A
var a: nullable Int
end
class B
super A
var b: Int
end
var a1 = new A(null) # OK
var a2 = new A # equivalent
var b1 = new B(null, 2) # OK
var b2 = new B(2) # now refused! but previously accepted as equivalent
~~~
This issue only required some small adaptation in existing piece of code: nitdoc, sexp, serialization and dom. The latter is PRized independently in #1616 but included here for jenkins.
Most of these changes (first commits) are in fact bugfixes or make the code cleaner so this is an argument in favor of this new stricter specification.
This PR has also the advantage of simplifying the model as the whole policy of the default argument is moved to the typing analysis: it is now just a pure calling convention.
Close #1453
Pull-Request: #1618
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Thu, 6 Aug 2015 18:34:40 +0000 (14:34 -0400)]
tests: update tests related to default arguments
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 18:57:41 +0000 (14:57 -0400)]
neo: update because no more default param in the model
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 18:33:54 +0000 (14:33 -0400)]
model: remove things about default parameters
Everything is in typing now.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 18:32:14 +0000 (14:32 -0400)]
typing: change specification about default arguments. everything is done here
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 7 Aug 2015 18:11:03 +0000 (14:11 -0400)]
Merge: Prepare qualified identifiers
First step to solve #1260: do not lose qualifiers in the AST.
This is just a API change without new features. qualifiers are still ignored but now they are in the AST.
Pull-Request: #1620
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Fri, 7 Aug 2015 15:38:38 +0000 (11:38 -0400)]
Merge: Own rand seed
Inject a basic patform-independent reproducible pseudo-random generator when `srand_form` (thus NIT_SRAND) is used.
This will allows to have more reproductible tests on various architecture.
Related with #1387
Pull-Request: #1621
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Fri, 7 Aug 2015 15:38:33 +0000 (11:38 -0400)]
Merge: Benitlux report tool
Intro a tool to print a pretty report on the availability of beers at the excellent Brasserie Bénélux.
Pull-Request: #1619
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Fri, 7 Aug 2015 15:38:26 +0000 (11:38 -0400)]
Merge: UTF-8 byte reading error
A small bug in char_at and length_of_char_at found their way and up until now did not pose any problem, however on some borderline cases (such as the 0x10FFFF example below) the char was misread as 0xFFFD.
The standard specifies the first byte of a 4 byte sequence to start with a `0b1111_0xxx` form, that the masks used in these methods did not check properly.
Pull-Request: #1617
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Fri, 7 Aug 2015 00:12:26 +0000 (20:12 -0400)]
astutil: update nitunit related to AST
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 7 Aug 2015 00:09:40 +0000 (20:09 -0400)]
tests: update sav related to AST
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 21:04:12 +0000 (17:04 -0400)]
src: update AST client to handle qualified identifiers (no semantic change)
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 21:03:16 +0000 (17:03 -0400)]
parser: regenerate with qualifiers in the AST
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 21:02:36 +0000 (17:02 -0400)]
grammar: keep qualified information in the AST. Does not change the CST.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 30 Jun 2015 20:25:47 +0000 (16:25 -0400)]
tests: update some sav because change in random
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 7 Aug 2015 01:04:50 +0000 (21:04 -0400)]
ffi: compile extern C files with -Wno-unused-function to avoid warning on C dead code
Signed-off-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Thu, 6 Aug 2015 19:32:06 +0000 (15:32 -0400)]
contrib/benitlux: add a report tool
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 6 Aug 2015 19:30:58 +0000 (15:30 -0400)]
contrib/benitlux: add services to list known beers and days
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Thu, 6 Aug 2015 18:59:20 +0000 (14:59 -0400)]
lib/sepx: provide location to each parsed node
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 15:14:28 +0000 (11:14 -0400)]
nitdoc: explicitly set titles of articles to null in constructor call
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 15:13:45 +0000 (11:13 -0400)]
serialization: initialize `keep_going` to null
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 19:00:52 +0000 (15:00 -0400)]
Merge: Cleanup lib/dom
This part was required while developing some change in the spec of default parameter (see #1453)
But this series of commit seems good enough and could be independently useful.
It also remove all warnings in the lib/dom directory
Pull-Request: #1616
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Thu, 6 Aug 2015 19:00:48 +0000 (15:00 -0400)]
Merge: Add debug option to compiler
Addition of a `-g` option to the compiler, right now it just disables gdb-side optimisation, but it may become more capable in the long run.
Pull-Request: #1615
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Thu, 6 Aug 2015 19:00:36 +0000 (15:00 -0400)]
Merge: example: optional attribute with a default value
This one comes from a discussion with @R4PaSs
I'm not sure I want to really expose it as I still think that current constructors need more love and work.
So at least test the current behavior.
If you people have other alternatives, you can show them.
Pull-Request: #1614
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Lucas Bajolet [Thu, 6 Aug 2015 18:57:51 +0000 (14:57 -0400)]
tests: Added tests for char_at method on borderline cases
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Thu, 6 Aug 2015 18:38:36 +0000 (14:38 -0400)]
lib/standard: Fix NativeString::length_of_char_at and char_at
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Thu, 6 Aug 2015 16:10:15 +0000 (12:10 -0400)]
share/man: Update nitc.md for debug option
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Thu, 6 Aug 2015 14:50:02 +0000 (10:50 -0400)]
compiler: Add -g option to compiler
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Thu, 6 Aug 2015 15:04:07 +0000 (11:04 -0400)]
lib/dom: remove useless visibility
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 15:03:50 +0000 (11:03 -0400)]
lib/dom: remove `null` call warning
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 15:02:58 +0000 (11:02 -0400)]
lib/dom: add missing documentation
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 14:35:27 +0000 (10:35 -0400)]
tests: update sav for text_xml_read
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 14:33:43 +0000 (10:33 -0400)]
lib/dom: give location to all parsed XML nodes
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 14:31:23 +0000 (10:31 -0400)]
lib/dom: remove urequired use of named arguments
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 14:31:57 +0000 (10:31 -0400)]
lib/dom: initialize `XMLEntity::parent` to null
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 6 Aug 2015 14:29:03 +0000 (10:29 -0400)]
lib/dom: remove useless variable
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 5 Aug 2015 22:37:50 +0000 (18:37 -0400)]
Merge: Text::to_bytes
Simple addition to the Bytes module, to build one from any Text type
Pull-Request: #1613
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 5 Aug 2015 18:47:32 +0000 (14:47 -0400)]
example: optional attribute with a default value
Signed-off-by: Jean Privat <jean@pryen.org>
Lucas Bajolet [Wed, 5 Aug 2015 18:12:46 +0000 (14:12 -0400)]
lib/standard/bytes: Text::to_bytes method
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Wed, 5 Aug 2015 15:53:12 +0000 (11:53 -0400)]
Merge: lib/maths: add `nan` and `inf` as special Float
with bits of IEEE 754
Pull-Request: #1612
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Wed, 5 Aug 2015 15:53:09 +0000 (11:53 -0400)]
Merge: Can use lib/github/github_curl without a oauth token
Nothing fancy but I wanted to merge PR tonight and I found the oauth token requirement a bit harsh
Pull-Request: #1611
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Wed, 5 Aug 2015 15:53:06 +0000 (11:53 -0400)]
Merge: contrib: add a simple planner that use lib/ai
This is a basic implementation for a TP given by a professor who wants to remain anonymous.
I'm quite sure the algorithm and the implementation can be improved, but it does the job in a quite acceptable time performance.
Pull-Request: #1596
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Wed, 5 Aug 2015 15:51:24 +0000 (11:51 -0400)]
contrib: add a simple planner that use lib/ai
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 5 Aug 2015 08:08:41 +0000 (04:08 -0400)]
lib/maths: add `nan` and `inf` as special Float
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 5 Aug 2015 07:04:25 +0000 (03:04 -0400)]
Merge: jwrapper reproduces Java class hierarchy in Nit and serialize model
Continuing the work of #1578, #1589 and #1599, this PR adds the last big feature missing from jwrapper: duplicating the class hierarchy from Java to the generated wrapper classes. This allows user code to benefit from polymorphism when invoking Java methods wrappers.
This is done by collecting the implements and extends declaration from the javap output, rebuilding the class hierarchy and adding the super declarations needed to reproduce the hierarchy in Nit. To support a compatible hierarchy across modules, the model can now be serialized to a file and read by the following passes. Note that jwrapper wraps classes and interfaces in the same way so the implements and the extends hierarchy are merge into one on the Nit side.
What's to do next:
* Integrate generated modules in the `::java` and `::android` libraries!
* Add tools to extract concerns from a Jar archive to subdivide the wrappers in many modules. This could be done by targeting types, but more experimentation is needed.
* Clean up the duplicated features from the grep search and the serialized models. This is also an evolution as the grep features should be phased out in favor of a better `::java` lib and the serialized models.
* Automate declaring importations by using knowledge from the serialized models.
* Generate casts between the Java wrapper classes?
* Update the documentation with the latest changes.
What I'm probably not gonna do unless someone needs it:
* Full vararg types support, this would probably require using the JNI from C. In the time being, it can be done manually with a fixed number of parameters, as needed.
Pull-Request: #1608
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Tue, 4 Aug 2015 20:45:19 +0000 (16:45 -0400)]
lib/performance_analysis: relax unit test expected results
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 3 Aug 2015 16:35:18 +0000 (12:35 -0400)]
contrib/jwrapper examples: update android_api to use a serialized model
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 1 Aug 2015 13:26:36 +0000 (09:26 -0400)]
contrib/jwrapper examples: update java_api to benefit from polymorphism
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 4 Aug 2015 18:40:41 +0000 (14:40 -0400)]
contrib/jwrapper: saving the model must be asked by an option
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 4 Aug 2015 18:24:33 +0000 (14:24 -0400)]
contrib/jwrapper: only reference to `java.lang.Object` if known by the model
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 3 Aug 2015 18:20:38 +0000 (14:20 -0400)]
contrib/jwrapper: add an option to not generate methods
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 3 Aug 2015 16:36:16 +0000 (12:36 -0400)]
contrib/jwrapper: use serialized models to build the complete class hierarchy
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 3 Aug 2015 16:29:25 +0000 (12:29 -0400)]
contrib/jwrapper: intro reading models from file
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 3 Aug 2015 16:33:01 +0000 (12:33 -0400)]
contrib/jwrapper: write the model to a file next to the Nit module
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 3 Aug 2015 14:06:52 +0000 (10:06 -0400)]
contrib/jwrapper: enable serialization of model
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 3 Aug 2015 13:42:20 +0000 (09:42 -0400)]
contrib/jwrapper: generate classes in linearization order
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 1 Aug 2015 13:24:18 +0000 (09:24 -0400)]
contrib/jwrapper: prevent name conflicts with inherited properties
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 1 Aug 2015 13:25:48 +0000 (09:25 -0400)]
contrib/jwrapper: generate only locally introduced methods in each class
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 1 Aug 2015 13:09:18 +0000 (09:09 -0400)]
contrib/jwrapper: silence all useless-superclass warnings
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 1 Aug 2015 13:32:32 +0000 (09:32 -0400)]
contrib/jwrapper: compute the methods introduced by each classes
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 3 Aug 2015 13:46:53 +0000 (09:46 -0400)]
contrib/jwrapper: copy class hierarchy over to Nit
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Jul 2015 19:04:48 +0000 (15:04 -0400)]
contrib/jwrapper: build class hierarchy into a POSet
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Jul 2015 18:08:59 +0000 (14:08 -0400)]
contrib/jwrapper: collect super-classes data
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Jul 2015 18:18:52 +0000 (14:18 -0400)]
contrib/jwrapper: revamp class header generation
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 3 Aug 2015 16:24:52 +0000 (12:24 -0400)]
contrib/jwrapper: create the tmp directory as needed
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 1 Aug 2015 13:05:04 +0000 (09:05 -0400)]
contrib/jwrapper: implement == and hash in JavaClass and JavaMethod
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 3 Aug 2015 16:30:24 +0000 (12:30 -0400)]
contrib/jwrapper: close module file stream after writing
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sun, 2 Aug 2015 16:20:01 +0000 (12:20 -0400)]
contrib/jwrapper grammar: reorder of the grammar file (no other changes)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Jul 2015 18:08:12 +0000 (14:08 -0400)]
contrib/jwrapper grammar: unify all lists of things that look like a type
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Wed, 5 Aug 2015 01:08:27 +0000 (21:08 -0400)]
Merge: curl: implement CURLOPT_TIMEOUT and CURLOPT_TIMEOUT_MS
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Pull-Request: #1610
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Jean-Philippe Caissy <jpcaissy@piji.ca>
Jean Privat [Wed, 5 Aug 2015 01:08:19 +0000 (21:08 -0400)]
Merge: lib/performance_analysis: relax nitunit expected results
This should be enough to fix #1562.
Pull-Request: #1609
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 5 Aug 2015 01:06:29 +0000 (21:06 -0400)]
contrib/github_merge: can merge localy without github oauth (need readonly)
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 5 Aug 2015 01:04:07 +0000 (21:04 -0400)]
lib/github: can connect without OAuth token
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 5 Aug 2015 01:00:18 +0000 (21:00 -0400)]
lib/curl: Collection::to_curlslist do not crash on empty lists
Signed-off-by: Jean Privat <jean@pryen.org>
Alexandre Terrasa [Tue, 4 Aug 2015 21:57:19 +0000 (17:57 -0400)]
curl: implement CURLOPT_TIMEOUT and CURLOPT_TIMEOUT_MS
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexis Laferrière [Tue, 4 Aug 2015 20:45:19 +0000 (16:45 -0400)]
lib/performance_analysis: relax unit test expected results
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Tue, 4 Aug 2015 20:10:28 +0000 (16:10 -0400)]
Merge: Tinks! fix frame lock between clients and servers
This PR greatly improve multiplayer performance by removing the synchronous frames between the clients and server.
There is still a lot of stuff to do on Tinks! see the notes in #1601.
Pull-Request: #1607
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Tue, 4 Aug 2015 20:10:26 +0000 (16:10 -0400)]
Merge: Simplify integer parsing
As a follow-up to #1602, a more aggressive factorization of the parser, along with a few methods that produce Numeric values of the right type.
Pull-Request: #1606
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Tue, 4 Aug 2015 20:10:23 +0000 (16:10 -0400)]
Merge: Fix nitcorn `Content-Length` when working with UTF-8 files
Changes:
* use `bytelen` instead of `length` when setting `Content-Length` header
* add media types for web fonts
Pull-Request: #1605
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 4 Aug 2015 18:35:49 +0000 (14:35 -0400)]
tests: Update sav for parser updates
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 4 Aug 2015 14:36:03 +0000 (10:36 -0400)]
src: Parser regeneration
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Mon, 3 Aug 2015 22:21:35 +0000 (18:21 -0400)]
src: Modified compilers for the support of the new Integers
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Fri, 31 Jul 2015 18:13:14 +0000 (14:13 -0400)]
parser: Factorized variants of Integer under one production
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Mon, 3 Aug 2015 22:10:37 +0000 (18:10 -0400)]
lib/standard/text: Added parsing method for all integers
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Alexis Laferrière [Tue, 4 Aug 2015 15:54:42 +0000 (11:54 -0400)]
contrib/tinks: increment the comm version number
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 31 Jul 2015 20:44:11 +0000 (16:44 -0400)]
contrib/tinks: greatly reduce the vibration strength under android
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 31 Jul 2015 13:33:27 +0000 (09:33 -0400)]
contrib/tinks: client do not send empty orders array to server
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 31 Jul 2015 13:28:21 +0000 (09:28 -0400)]
contrib/tinks: server does not wait after its clients at each frame
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 31 Jul 2015 13:28:15 +0000 (09:28 -0400)]
lib/gamnit: use async cache for the client/server logic
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 31 Jul 2015 12:57:36 +0000 (08:57 -0400)]
lib/serialization: intro AsyncCache
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 31 Jul 2015 13:20:55 +0000 (09:20 -0400)]
lib/socket: use a custom C call to detect error on sockets
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexandre Terrasa [Mon, 3 Aug 2015 21:18:19 +0000 (17:18 -0400)]
nitcorn: add media types for web fonts.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Mon, 3 Aug 2015 21:17:32 +0000 (17:17 -0400)]
nitcorn: use `bytelen` instead of `length` when setting `Content-Length` header
So UTF-8 files are rendered correctly.
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Mon, 3 Aug 2015 18:35:23 +0000 (14:35 -0400)]
Merge: Tinks! a multiplayer crossplatform action game with destructible procedurally generated worlds
Players control a tank, open fire from its turret and navigate between the terrain features. Explosions from turret fire and tank destruction have different forces and destroy the terrain. Each tank needs 4 hits to be destroyed. Destroyed tanks drops health powerups which can repair other tanks.
The game is meant for the multiplayer but one can play alone to practice. Upon launch, a client searches for server by broadcasting a UDP socket. A server may respond with its TCP connection port. If there is no answer, the client starts its own server which will accept other clients.
The game logic is mostly event based. Only the events are passed to the clients at each frame, by serializing them to binary. So both the clients and the server keep the game knowledge.
The world is different in each game, it is procedurally generated with an "unlimited" size. Each world feature is discovered only as needed by either the server or the clients. The server discover the features affected by possible collisions and by explosions. The clients discovers the features visible on screen. The clients and servers share the seed for the noise generator, so they discover the same features. Only the destroyed features and new powerups are passed to the clients by the server as events.
Notes for future work:
* Tanks and turret position is updated every turn causing a lot of events and traffic.
This may be solved by moving more logic client-side, so only changes in the direction of a tank trigger the broadcast of an event.
* The multiplayer looks like it slows down after a while.
This may be caused by the serialization caches that can get pretty big.
They may need to cleared and updated with a server/client sync.
* The framerate of the server and the clients are locked.
Effectively slowing down everyone at the speed of the slowest computer.
* Implement zoom, this will be very useful for the small screen / phone version.
* The Android version crashes on some device (please test it and tell me if it works on yours).
* As the client can easily be modified, the server may need to be more restrictive against abusive orders, like firing way outside of the normal view range.
* The noise generation could be improved, there are still visible patterns.
Pull-Request: #1601
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Ait younes Mehdi Adel <overpex@gmail.com>
Reviewed-by: Romain Chanoir <chanoir.romain@courrier.uqam.ca>
Jean Privat [Mon, 3 Aug 2015 18:35:20 +0000 (14:35 -0400)]
Merge: nitrpg: fix crash when the Reviews/Work requests return nothing
Nitrpg was down since last wednesday because of this. It's now back on track: http://nitlanguage.org/rpg/games/privat/nit
Since the listener didn't crash, no data were loss during the downtime.
Pull-Request: #1604
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 3 Aug 2015 18:35:17 +0000 (14:35 -0400)]
Merge: to_i behaviour coherent with parser
This PR changes the behaviour of `to_i` in Strings to support all the derivatives from the parser (hex, bin, oct and underscores)
The change in behaviour helps clean a bit of literal, though some more factorization is yet to come.
As for perfs, on Valgrind (`nitg src/nitg.nit`)
* Before : 14 289 384 832 Ir
* After : 14 348 036 981 Ir
A little slowdown, but acceptable imho since the function accepts more valid inputs and is safer.
Pull-Request: #1602
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Romain Chanoir <chanoir.romain@courrier.uqam.ca>
Jean Privat [Mon, 3 Aug 2015 18:25:15 +0000 (14:25 -0400)]
Merge: Remove memory leak in Ropes
Early on, the `to_s` of a RopeBuffer was calling `dump_buffer`, which like to double the size of the buffered part after persisting.
By doing do, a simple program like the one submitted along with this PR was consuming an awful lot of RAM, which has the undesirable side-effect of freezing my machine after a few milliseconds of run.
By replacing it with the more memory-friendly `persist buffer`, all my troubles seem so far away !
Pull-Request: #1598
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Romain Chanoir <chanoir.romain@courrier.uqam.ca>
Lucas Bajolet [Fri, 31 Jul 2015 20:37:26 +0000 (16:37 -0400)]
tests: Updated sav for base_error_literal
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Fri, 31 Jul 2015 20:36:27 +0000 (16:36 -0400)]
src: Update literal to simplify the code
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Mon, 3 Aug 2015 14:50:10 +0000 (10:50 -0400)]
lib/standard/text: Update Text.to_i to parse all bases
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>