Alexis Laferrière [Thu, 28 Jan 2016 17:17:57 +0000 (12:17 -0500)]
contrib/tinks: always generate client_serialize
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Thu, 28 Jan 2016 13:55:40 +0000 (08:55 -0500)]
htcpcp_server: add .res file for tests
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 28 Jan 2016 13:54:24 +0000 (08:54 -0500)]
Merge: Implemented a htcpcp server
An attempt at: https://github.com/nitlang/nit/issues/1808, a fun little example.
As a first step I haven't implemented additions, and gave as best implementation of the protocol as I could interpret it.
It's mostly based on the `file_server.nit` file. If you want to test it locally a good way is to use `curl -X <METHOD> localhost:8080`
@xymus @Bl4ckb0ne @R4PaSs
Pull-Request: #1915
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 28 Jan 2016 01:49:02 +0000 (20:49 -0500)]
tests: avoid errors messages if java is not found
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 28 Jan 2016 01:38:56 +0000 (20:38 -0500)]
tests: filter out ulimit error messages to avoid corruption of .res files
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 25 Jan 2016 20:09:07 +0000 (15:09 -0500)]
Merge: Intro Tinks! 3D: A gamnit game with particles effects
Intro a 3D client for Tinks! built with _gamnit depth_. It uses the same logic as the 2D client so they are compatible for multiplayer games.
To support this client there was a few fix to gamnit and some new features, most notably:
* A customizable particle system with two implementations, one for smoke and one for explosions. This module is a first draft, a few features are lacking.
* The method `show_splash_screen` which displays a single texture centered on a cleared screen (by default black).This method should usually be called before loading textures and models and doing other slow work.
---
Sorry for the scary diff (once again) but there is actually little code added. The main commits are the intro of the particle system and of the new Tinks! client.
Pull-Request: #1928
Reviewed-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Wed, 30 Dec 2015 05:15:57 +0000 (00:15 -0500)]
contrib/tinks: intro 3D client
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sun, 24 Jan 2016 15:59:00 +0000 (10:59 -0500)]
contrib/tinks: extract common client code from the mnit client
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 23 Jan 2016 16:44:04 +0000 (11:44 -0500)]
contrib/tinks: add `FeatureChangeEvent::old_feature`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 1 Jan 2016 23:06:34 +0000 (18:06 -0500)]
contrib/tinks: do not publish TankMoveEvents for dead tanks
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 22 Jan 2016 16:57:59 +0000 (11:57 -0500)]
contrib/model_viewer: fix Y offset, repeated clicks and tweak display
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 22 Jan 2016 16:58:30 +0000 (11:58 -0500)]
contrib/model_viewer: use `show_splash_screen`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sun, 24 Jan 2016 16:02:34 +0000 (11:02 -0500)]
lib/gamnit flat: intro `show_splash_screen`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 23 Jan 2016 22:20:50 +0000 (17:20 -0500)]
lib/gamnit depth: intro particle systems
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sun, 24 Jan 2016 06:37:34 +0000 (01:37 -0500)]
lib/gamnit depth: discard fragments with a low alpha value
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 22 Jan 2016 21:32:11 +0000 (16:32 -0500)]
lib/gamnit depth: fix ambient color, multiply with texture
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 22 Jan 2016 19:05:56 +0000 (14:05 -0500)]
lib/gamnit depth: intro `Plane::repeat_x|y`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 21 Jan 2016 19:30:44 +0000 (14:30 -0500)]
lib/gamnit depth: make colors in SmoothMaterial writable
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 21 Jan 2016 16:28:08 +0000 (11:28 -0500)]
lib/gamnit depth: TextureMaterial supports subtexture
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 21 Jan 2016 11:12:16 +0000 (06:12 -0500)]
lib/gamnit depth: solve the mysterious bug "Why is the Y axis inverted?"
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 21 Jan 2016 19:31:47 +0000 (14:31 -0500)]
lib/gamnit: intro `GamnitRootTexture::pixelated=`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 21 Jan 2016 11:11:41 +0000 (06:11 -0500)]
lib/gamnit: intro `EulerCamera::center`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 23 Jan 2016 16:45:46 +0000 (11:45 -0500)]
lib/gamnit: solve the mysterious bug "camera is 2 times too far"
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 21 Jan 2016 19:31:20 +0000 (14:31 -0500)]
lib/gamnit: fix `Subtexture::gl_texture` not being set
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Sat, 23 Jan 2016 21:52:03 +0000 (16:52 -0500)]
Merge: lib/core/math: add `Collection::sample`
Close a task of @ablondin
Pull-Request: #1927
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Sat, 23 Jan 2016 21:52:00 +0000 (16:52 -0500)]
Merge: lib/core: add Sequence::modulo to access with a Python-wrap semantic
Proposed because https://github.com/nitlang/nit/pull/1920/files#diff-c6e41a937b2b8ba5e5e04bd8f49260f7R104
I'm not sure of the name `modulo`.
Pull-Request: #1921
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Fri, 22 Jan 2016 04:44:58 +0000 (23:44 -0500)]
lib/core: add Sequence::modulo to access with a Python-wrap semantic
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 22 Jan 2016 04:34:12 +0000 (23:34 -0500)]
lib/core/math: add `Collection::sample`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 21 Jan 2016 01:19:45 +0000 (20:19 -0500)]
Merge: Small improvements to the gamnit README
Pull-Request: #1926
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 21 Jan 2016 01:19:38 +0000 (20:19 -0500)]
Merge: contrib/model_viewer: refactor the globe standalone example as a model in model_viewer
This PR extracts the base code of the globe example from gamnit into a `GlobeModel` for model_viewer. It will be the official example of a custom material/graphical program for the _gamnit
depth_ framework.
Fix the bugs, including when switching between the graphics programs from _depth_ and _flat_, as well as the new custom one to display the globe.
Also add missing UI textures and change the icon to reuse the globe one (I think it looks better on the device). In order to keep a simple example (and Makefile) we lose a few features in this change, namely the dynamic texture resolution selection and the Android Wear version.
Pull-Request: #1924
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 21 Jan 2016 01:19:36 +0000 (20:19 -0500)]
Merge: gamnit VR: steroscopic view and head tracking on Android
This PR adds support for VR to the _gamnit depth_ framework. By importing `gamnit::vr`, all drawings are duplicated for a stereoscopic view and the `world_camera` orientation is updated from head tracking data.
VR is applied to the `model_viewer` app for testing only. The UI should still be updated for a nicer VR experience.
This is done by simple refinement, which allows for easy (but dirty) conversion to VR using `nitc ... -m lib/gamnit/depth/vr.nit`. However this does not allow to easily switch between VR and a classic view. This could be improved as needed in the future by using a subclass of `EulerCamera` and a few conditions in `frame_core_draw`.
Pull-Request: #1923
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 21 Jan 2016 01:19:34 +0000 (20:19 -0500)]
Merge: gamnit keys: simple service to keep track of pressed keys
This simple service can be incredibly useful in games where a key held down causes an event at each frame, like walking forward by pressing `w`.
I use this in the 3D version of Tinks! Which should be ready for a PR in a near future.
Pull-Request: #1922
Reviewed-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Fri, 1 Jan 2016 23:08:04 +0000 (18:08 -0500)]
lib/gamnit: improve the gamnit README and fix the typo in its name
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 5 Oct 2015 14:03:38 +0000 (10:03 -0400)]
lib/gamnit: intro `keys` to keep track of pressed keys
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 19 Jan 2016 17:56:12 +0000 (12:56 -0500)]
contrib/model_viewer: intro simple VR variant by pure refinement
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 19 Jan 2016 17:39:24 +0000 (12:39 -0500)]
lib/gamnit depth: intro VR for Android with head tracking
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 19 Jan 2016 18:50:47 +0000 (13:50 -0500)]
contrib/model_viewer: use the globe icon
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 19 Jan 2016 18:47:07 +0000 (13:47 -0500)]
contrib/model_viewer: update README file
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 16 Jan 2016 17:16:50 +0000 (12:16 -0500)]
contrib/model_viewer: move the globe example as a custom model
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 19 Jan 2016 17:26:58 +0000 (12:26 -0500)]
lib/gamnit depth: add stereoscopic view module
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 19 Jan 2016 19:06:02 +0000 (14:06 -0500)]
lib/gamnit depth&flat: extract implementations of frame_core_draw
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 19 Jan 2016 19:53:14 +0000 (14:53 -0500)]
lib/android/cardboard: remove `gyro_bias` as it no more available in the SDK
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 19 Jan 2016 15:49:23 +0000 (10:49 -0500)]
contrib/model_viewer: add missing texture assets
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 19 Jan 2016 13:56:55 +0000 (08:56 -0500)]
lib/gamnit flat: set array_enabled at each draw
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 19 Jan 2016 13:56:28 +0000 (08:56 -0500)]
lib/gamnit depth: make scale and translation uniforms
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 18 Jan 2016 16:54:57 +0000 (11:54 -0500)]
lib/gamnit depth: add texture_coords to Cube
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 19 Jan 2016 14:08:24 +0000 (09:08 -0500)]
lib/gamnit depth: fix Plane drawing using indices for glDrawElements
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Tue, 19 Jan 2016 14:04:28 +0000 (09:04 -0500)]
Merge: Intro gamnit depth, the 3D game framework for Nit
This PR intro the base structure of a framework for portable 3D game development in Nit.
This framework is based on a list of `Actor`, in `app::actors`, which are drawn at each frame. Each actor is composed of a model and other information specific to this instance: position in the world, rotation and scaling. Each `Model` is either a composite of models or it is composed of a `Mesh` defining its geometry and a `Material` defining how to draw the model. `Material` can be subclassed to use custom shaders. These main classes are defined in the module `depth_core`.
_gamnit depth_ is built upon _app.nit_ and it works well with _gamnit flat_ (renamed from _gamnit simple_2d_). Clients are portable across GNU/Linux and Android, and _gamnit flat_ can still be used for UI elements.
This framework is far from complete at this point, however it designed for extensibility.
Here's a list of _gamnit depth_ implemented features and todo:
### Mesh
- [x] Create 3D simple meshes: cube, plane and UVSphere.
- [ ] Create simple debug meshes: axis arrows, etc.
### Material
- [x] Simple material with uniform ambient, diffuse and specular colors
- [x] Normals visualization materials
- [ ] Depth material
- [x] Texture material with ambient and diffuse lighting
- [ ] Texture material with specular lighting (implement Blinn Phong in GLSL, most attributes are already present)
- [ ] Texture material with normals mapping
### Models
- [x] Load models from .obj and .mtl files.
- [ ] Load models from a binary model format
- [x] Fallback on a simple material and mesh on load errors
### Sample programs
- [x] Sample minimal graphics-only application: model_viewer
- [ ] Merge the globe example with model_viewer
- [ ] Simple client game (like Asteronits for `gamnit::flat`)
### Other engine features
- [x] Composite pattern to manage simple models (single mesh to single material) and composite models
- [ ] Scene framework with a tree-like structure
- [ ] Particle emitters.
- [ ] Support for multiple light types and instances.
- [ ] Optimized GPU side caching with VBO.
- [ ] Optimized C side caching of models data.
- [ ] VR support (at least Cardboard)
- [ ] Hardware key services.
- [ ] Line-3D model collision (as in simple model selection from mouse click)
### Known bugs
- [ ] TexturedMaterial affects 2D sprites geometry, more data is needed to debug.
Pull-Request: #1920
Reviewed-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Sat, 19 Dec 2015 23:44:39 +0000 (18:44 -0500)]
contrib: intro model viewer
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sun, 17 Jan 2016 16:33:25 +0000 (11:33 -0500)]
contrib/asteronits: fix path to project in metadata descriptions
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 13 Jan 2016 18:02:27 +0000 (13:02 -0500)]
lib/gamnit: intro gamnit depth
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Mon, 11 Jan 2016 14:11:18 +0000 (09:11 -0500)]
lib/gamnit: intro `EulerCamera::look_at`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sun, 17 Jan 2016 21:25:35 +0000 (16:25 -0500)]
lib/gamnit flat: set array_enabled settings at each frame
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 15 Jan 2016 04:59:27 +0000 (23:59 -0500)]
lib/gamnit flat: extract `App::frame_core_draw`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 14 Jan 2016 20:35:36 +0000 (15:35 -0500)]
lib/gamnit: rename simple_2d to flat
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 15 Jan 2016 21:25:50 +0000 (16:25 -0500)]
lib/gamnit: add support for map_Ka in the .mtl parser
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 16 Jan 2016 17:14:26 +0000 (12:14 -0500)]
lib/gamnit: move `Texture::checker` to its own class to fix loading
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 16 Jan 2016 17:15:18 +0000 (12:15 -0500)]
lib/gamnit: document `offset` methods
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
itsWill [Mon, 28 Dec 2015 22:20:52 +0000 (23:20 +0100)]
implemented htcpc server
Signed-off-by: itsWill <guilhermerpmansur@gmail.com>
Jean Privat [Thu, 14 Jan 2016 20:47:48 +0000 (15:47 -0500)]
Merge: Intro parsers to load 3D models from .obj and .mtl files
Intro parsers to load 3D models from the ASCII based format of .obj and .mtl files. Also as support intro a new kind of asset, `app::TextAsset`, with lazy loading in the style of `Sound` and `Texture`.
Model parsing services will be used by the 3D API of gamnit to load 3D models generated by modeler tools like Blender.
The services in `gamnit::model_parsers` are independent of gamnit. However since they are game related, it is a nice package to classify them in. They still can be used by any other 3D graphics engine, as `gamnit::network` which is also independent but game oriented. This adds a small duplication in their representation because a model is stored differently once loaded in gamnit. But the format in gamnit is so low-level (only arrays of Float) that we need an intermediate representation to triangulate faces and stuff like that.
Services of `model_parser_base` may be moved to other modules in the future as needed. The services added to `StringProcessor`, may be useful to other parsers and thus it could be moved up to `parser_base`. `Vec3` and `Vec4` apply an API similar to `vec3 & vec4` of GLSL. I may move them up to gamnit or glesv2 and add more services to transform from and to points, colors and other float based data vectors.
Pull-Request: #1918
Reviewed-by: Alexandre Blondin Massé <alexandre.blondin.masse@gmail.com>
Reviewed-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Tue, 12 Jan 2016 19:00:48 +0000 (14:00 -0500)]
lib/mnit: rename `Asset` to `MnitAsset` to fix conflict with `app::Asset`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 12 Jan 2016 03:52:31 +0000 (22:52 -0500)]
lib/gamnit: intro parsers for .obj and .mtl files
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 19 Dec 2015 15:36:07 +0000 (10:36 -0500)]
lib/gamnit: intro new services and refine `StringProcessor` to read model files
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Thu, 14 Jan 2016 14:34:00 +0000 (09:34 -0500)]
Merge: Extend is_numeric to support negative values and scientific notation
Pull-Request: #1917
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 14 Jan 2016 14:33:58 +0000 (09:33 -0500)]
Merge: nitcorn: skip the listening loop when running the tests
Until now, each nitcorn example checked if it was being tested, and if so it would quit to not block jenkins. This PR moves this check in the nitcorn module so it is the default behavior.
This should help for #1915 and future nitcorn programs.
Pull-Request: #1916
Reviewed-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Mon, 11 Jan 2016 19:49:11 +0000 (14:49 -0500)]
lib/parser_base: intro `StringProcessor::eof` and fix index error
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 30 Dec 2015 21:26:43 +0000 (16:26 -0500)]
lib/android: implement `TextAsset`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Fri, 1 Jan 2016 23:07:26 +0000 (18:07 -0500)]
lib/android: fix manipulation of Java stack from assets_and_resources
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 12 Jan 2016 05:05:19 +0000 (00:05 -0500)]
lib/linux: implement `TextAsset`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sun, 20 Dec 2015 00:46:05 +0000 (19:46 -0500)]
lib/app: intro `Asset` and `TextAsset`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sun, 20 Dec 2015 14:21:58 +0000 (09:21 -0500)]
lib/core: add a factory to `Set` to instantiate a `HashSet` by default
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 12 Jan 2016 17:17:28 +0000 (12:17 -0500)]
tests: update test_string_is_numeric
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 12 Jan 2016 04:00:59 +0000 (23:00 -0500)]
lib/core: remove support for ',' in `is_numeric`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Tue, 29 Dec 2015 18:51:27 +0000 (13:51 -0500)]
lib/core: `is_numeric` returns false on empty strings
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sat, 19 Dec 2015 16:36:30 +0000 (11:36 -0500)]
lib/core: extend is_numeric to support negatives (!) and e notation
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 6 Jan 2016 18:56:49 +0000 (13:56 -0500)]
lib/nitcorn: update examples as they don't need to check for tests
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 6 Jan 2016 18:54:46 +0000 (13:54 -0500)]
lib/nitcorn: skip the listening loop when running continuous integration tests
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Tue, 29 Dec 2015 14:12:34 +0000 (09:12 -0500)]
Merge: String block optimisations
This stack of commits is a batch of brand-new optimisations on `String`, especially regarding the manipulation of UTF-8 characters.
As a baseline, last Tuesday @privat tried the JSON parser on a 30MiB json file, the execution took approximately 10 seconds for ~38 GIr with Valgrind, now and with his Nitcc upgrades, the total runtime is less than 2 seconds for ~11 GIr with Valgrind.
Pull-Request: #1885
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Lucas Bajolet [Tue, 29 Dec 2015 04:42:02 +0000 (23:42 -0500)]
src: Improve speed of interpreter when working with Strings
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Mon, 14 Dec 2015 15:33:34 +0000 (10:33 -0500)]
lib: Fixed text_stat with improvements from lib
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 8 Dec 2015 18:26:36 +0000 (13:26 -0500)]
lib/core: Avoid boxing when comparing two NativeString instances
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 8 Dec 2015 18:24:17 +0000 (13:24 -0500)]
lib/core: Improve speed of `utf8_length` in NativeString and change signature
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 8 Dec 2015 18:22:51 +0000 (13:22 -0500)]
lib/core: Perfize `substring` in `FlatString`
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 8 Dec 2015 18:22:20 +0000 (13:22 -0500)]
lib/core: Have `is_empty` work with `_bytelen` instead of `length` for speed
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 8 Dec 2015 18:20:43 +0000 (13:20 -0500)]
lib/core: Added shortcut for common ASCII-case in `find_beginning_of_char_at`
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Mon, 7 Dec 2015 18:07:53 +0000 (13:07 -0500)]
lib/core: Improved cache mechanism in `ropes` for `substring` and `[]`
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 8 Dec 2015 18:29:20 +0000 (13:29 -0500)]
lib/core: Improve speed of an indexed access in a UTF-8 `Text` entity
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 8 Dec 2015 18:17:01 +0000 (13:17 -0500)]
lib/core: Added `to_s_unsafe` method to `NativeString` which does not cleans a `NativeString` before returning it as a `String`
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Fri, 18 Dec 2015 20:40:47 +0000 (15:40 -0500)]
lib/core: Improved the speed of `clean_utf8`
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 8 Dec 2015 18:12:05 +0000 (13:12 -0500)]
lib/core: Added prefetching of 4 chars at once on `NativeString`
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Mon, 28 Dec 2015 21:21:57 +0000 (16:21 -0500)]
Merge: expanded the nit_env.sh script to register nit within .bash_profile and .bashrc
When running `source misc/nit_env.sh install` I noticed that it resulted in the following error:
`grep: User/user .profile: No such file or directory`
The `nit_env.sh` script created a `.profile` file in the home directory despite an existing `.bash_profile`. The `nit` command won't work since the shell will read the `.bash_profile` instead of the `profile`.
This PR checks for the existance and writes to a `.profile` or `.bashrc` or `.bash_profile`, if it finds none of those it creates a `.profile` and writes to that one.
If the PR is accepted the documentation will have to be updated.
Pull-Request: #1913
Reviewed-by: Jean Privat <jean@pryen.org>
Lucas Bajolet [Mon, 7 Dec 2015 18:04:54 +0000 (13:04 -0500)]
lib/core: Re-made `length` an attribute in `FlatString` since its cost as lazy was prohibitive
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 8 Dec 2015 15:09:29 +0000 (10:09 -0500)]
lib/core: Removed `last_byte` attribute in `FlatString` as it is useless
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
itsWill [Fri, 25 Dec 2015 18:30:57 +0000 (19:30 +0100)]
expanded the nit_env.sh script to register nit within .bash_profile, .bashrc
Signed-off-by: itsWill <guilhermerpmansur@gmail.com>
Jean Privat [Tue, 22 Dec 2015 14:13:38 +0000 (09:13 -0500)]
Merge: model: migrate model_collect to model_views
And update all the clients.
Pull-Request: #1908
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 19 Dec 2015 12:27:24 +0000 (07:27 -0500)]
Merge: src: introduce Nit Static Analysis Framework
This is the first step in the introduction of a static analsysis framework for the nit language.
This PR introduces the basic behaviors of a StaticAnalysis and ForwardAnalysis.
I added ReachingDefAnalysis as an example of StaticAnalysis implementation.
I also added `nitsaf`, a client example for the saf module.
I suggest to read this PR commit by commit, I splat it in steps:
* introduce base services
* handle ifs constructs
* handle loops constructs
* handle method declaration
Next steps/PRs will be:
* introduce inter-procedural analysis
* use RTA for better inter-procedural analysis precision
* backward analysis
* add more analysis (isset checks, attr isset, unused properties, useless nullables...)
Closes #511.
Pull-Request: #1764
Reviewed-by: Jean Privat <jean@pryen.org>
Alexandre Terrasa [Sat, 19 Dec 2015 08:44:50 +0000 (03:44 -0500)]
tests: skip nitsaf with niti and nitvm
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Sat, 19 Dec 2015 08:44:37 +0000 (03:44 -0500)]
nitsaf: add intraprocedural analysis
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Sat, 24 Oct 2015 18:02:31 +0000 (14:02 -0400)]
lib/collection: introduce init `HashMap::from`
HashSet has one, why not HashMap?
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexandre Terrasa [Sat, 17 Oct 2015 02:40:51 +0000 (22:40 -0400)]
nitsaf: add loop flow set merge
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>