profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/Ngoguey42/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
ngoguey Ngoguey42 @tarides Paris, France ngoguey42.github.io http://ngoguey42.github.io/

airware/buzzard 27

Advanced raster and geometry manipulations

earthcube-lab/buzzard 21

Advanced raster and geometry manipulations

Ngoguey42/ft_turing 4

OCaml Turing machine. (proj18_algo_) (group project) Jan2016

j-bd/mask_rcnn 2

Mask RCNN applied to airbus ship detection kaggle challenge. A deep learning test.

Ngoguey42/fillit_tester 2

Fillit testing files for peer-correcting.

azarz/burito 1

TFE ING3 ENSG (TSI) - Airware/Redbird

hervenivon/hagedash 1

Realtime dashboard

push eventNgoguey42/irmin

Ngoguey42

commit sha 3ddb56e464e812d26b53412eaed9c777f88b627f

Reimplement PP with many improvements

view details

push time in 2 hours

pull request commentmirage/irmin

Use a `tree` parameter in `fold`

Let's merge this one today too

icristescu

comment created time in 7 hours

PullRequestReviewEvent

push eventNgoguey42/tezos

Guillaume Claret

commit sha bc1f4142ad7c0b1753e38bd7217319db2cc16577

Proto: avoid top-level name collision for Coq See https://clarus.github.io/coq-of-ocaml/docs/cookbook#top-level-name-collisions

view details

Guillaume Claret

commit sha 03ef5397eab944a6788d51b3bd5ac6b8daaab0db

Proto: ignore functions in 'lazy_storage_kind.ml' with GADTs for Coq See https://clarus.github.io/coq-of-ocaml/docs/cookbook#ignored-functions

view details

Guillaume Claret

commit sha 41550e1218fc2522f472036e9212193e1773e324

Proto: name sub-signature for coq-of-ocaml See https://clarus.github.io/coq-of-ocaml/docs/cookbook#nested-anonymous-signatures

view details

Guillaume Claret

commit sha 449502bd672728d8d7963e8998ba6a155b25ca67

Proto: name the comparable signatures for coq-of-ocaml See https://clarus.github.io/coq-of-ocaml/docs/cookbook#named-signatures

view details

Guillaume Claret

commit sha 973e1cd52d0ef2fc96dee9ac94c4921e9f037cd9

Proto: add Coq recursion annotation in 'level_storage.ml' See https://clarus.github.io/coq-of-ocaml/docs/cookbook#fixpoint-struct-annotations

view details

Guillaume Claret

commit sha 57a2e18899a5f0d2279b6c854e2e1a1cb40cb0f1

Proto: add match annotations to compile 'operation_repr.ml' in Coq

view details

Guillaume Claret

commit sha c2d413feeeb18af24bf98aa48c3144ff8785ce28

Proto: avoid top-level name collisions in 'raw_context.ml' for Coq See https://clarus.github.io/coq-of-ocaml/docs/cookbook#top-level-name-collisions

view details

Guillaume Claret

commit sha e22bc4866599aefc603620c33915f79357edf57f

Proto: add type annotation on the functor 'Make_encoder' for Coq

view details

Guillaume Claret

commit sha d9537497db37c4c30c6dc6d1b5a35adcf068bb3e

Proto: disable some Coq translations due to stack overflows in Coq

view details

Guillaume Claret

commit sha a0cad082b2de0b495f820473bd92cd262fe39379

Proto: name the 'depth' type for coq-of-ocaml See https://clarus.github.io/coq-of-ocaml/docs/cookbook#named-polymorphic-variant-types

view details

Guillaume Claret

commit sha 8b6af86afea2da9afa569f7bee7803729c738576

Proto: name the type 'Kind.t' for Coq See https://clarus.github.io/coq-of-ocaml/docs/cookbook#named-polymorphic-variant-types

view details

Guillaume Claret

commit sha 25e4c880f9415668a1606438ec32641e236c9c6b

Proto: remove anonymous signature for coq-of-ocaml See https://clarus.github.io/coq-of-ocaml/docs/cookbook#named-signatures

view details

Guillaume Claret

commit sha 260dbaf5ff2a6127e6477eaed9eb9210c7b424df

Proto: add module type annotations for coq-of-ocaml

view details

Guillaume Claret

commit sha ff94ddd7d9a7f4c00035d0bcf18e4ffa07911620

Proto: explicit the encoding modules for coq-of-ocaml

view details

Guillaume Claret

commit sha b0c8bcb3c7ae8d77c312283e84283c757612aeeb

Proto: add module type annotation for coq-of-ocaml

view details

Guillaume Claret

commit sha 40c88eef41695c0599018adac5fc55bf9a402d9b

Proto: compile the 'Big_map' module with coq-of-ocaml

view details

Guillaume Claret

commit sha dd56ae583f3f321df826032f821aea96a0347867

Proto: add module type annotations on 'storage.ml' for coq-of-ocaml

view details

Guillaume Claret

commit sha e9a7693fe73059d3094e20002a7b607772e3df83

Proto: add annotations for the module 'Seed' for coq-of-ocaml

view details

Guillaume Claret

commit sha 3a452ffcdcd4edddf049e27b14f16118dc76e10a

Proto: add Coq fixpoint annotations See https://clarus.github.io/coq-of-ocaml/docs/cookbook#fixpoint-struct-annotations

view details

Guillaume Claret

commit sha b04bb909adecd51abe9411b2fb6c8c28a2b868f8

Proto: add some module type annotations to help coq-of-ocaml

view details

push time in 8 hours

push eventNgoguey42/tezos

Ngoguey42

commit sha ba012213af607af130f7f1ea61e05f49fc07832d

WIP

view details

push time in 10 hours

push eventNgoguey42/irmin

Ngoguey42

commit sha 9bf06ffcb0d6eeaf9993d229d584e3af4b4c2e14

Add missing bits

view details

push time in 10 hours

issue commentmirage/irmin

flaky tests in irmin-http

Ngoguey42

comment created time in 11 hours

Pull request review commentmirage/irmin

Rework caching

 struct        let of_target : type ptr. ptr layout -> ptr t -> ptr = function         | Total -> fun target -> Total_ptr target-        | Partial _ ->-            fun target -> { target = Some target; target_hash = target.hash }+        | Partial _ -> fun target -> { target = Newie target }         | Truncated -> fun target -> Intact target        let of_hash : type ptr. ptr layout -> hash -> ptr = function         | Total -> assert false-        | Partial _ -> fun hash -> { target = None; target_hash = lazy hash }+        | Partial _ -> fun hash -> { target = Lazy hash }         | Truncated -> fun hash -> Broken hash -      let iter_if_loaded :+      let save :

No worries

Ngoguey42

comment created time in a day

PullRequestReviewEvent

Pull request review commentmirage/irmin

Rework caching

 struct        let of_target : type ptr. ptr layout -> ptr t -> ptr = function         | Total -> fun target -> Total_ptr target-        | Partial _ ->-            fun target -> { target = Some target; target_hash = target.hash }+        | Partial _ -> fun target -> { target = Newie target }         | Truncated -> fun target -> Intact target        let of_hash : type ptr. ptr layout -> hash -> ptr = function         | Total -> assert false-        | Partial _ -> fun hash -> { target = None; target_hash = lazy hash }+        | Partial _ -> fun hash -> { target = Lazy hash }         | Truncated -> fun hash -> Broken hash -      let iter_if_loaded :+      let save :

I was clearly influenced by Tree.Contents.export 🙄

If you have a suggestion please share. I'm out of idea.

Ngoguey42

comment created time in a day

PullRequestReviewEvent

push eventNgoguey42/irmin

Ngoguey42

commit sha 7a8c524e5a7af6b54327d322930ab21fc7729e41

Change Tree.list to take a `?cache=false`

view details

push time in a day

PullRequestReviewEvent

Pull request review commentmirage/irmin

Rework caching

 module type S = sig   val of_list : (step * value) list -> t   (** [of_list l] is the node [n] such that [list n = l]. *) -  val list : ?offset:int -> ?length:int -> t -> (step * value) list+  val list :+    ?offset:int -> ?length:int -> ?cache:bool -> t -> (step * value) list   (** [list t] is the contents of [t]. [offset] and [length] are used to-      paginate results.*)+      paginate results. [cache] regulates the caching behaviour regarding the+      node's internal data which are lazily loaded.++      [cache] defaults to [true] which may greatly reduce the IOs and the+      runtime but may also grealy increase the memory consumption.++      [cache = false] doesn't replace a call to [clear], it only prevents the+      storing of new data, it doesn't discard the existing one. *)

Fixed

Ngoguey42

comment created time in a day

Pull request review commentmirage/irmin

Rework caching

 module Make (P : Private.S) = struct         acc ->         acc Lwt.t =      fun ~force ~uniq ~pre ~post ~path ?depth ~node ~contents ~tree t acc ->+      let cache = force = `True in

Done

Ngoguey42

comment created time in a day

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentmirage/irmin

Rework caching

 struct        let of_target : type ptr. ptr layout -> ptr t -> ptr = function         | Total -> fun target -> Total_ptr target-        | Partial _ ->-            fun target -> { target = Some target; target_hash = target.hash }+        | Partial _ -> fun target -> { target = Newie target }         | Truncated -> fun target -> Intact target        let of_hash : type ptr. ptr layout -> hash -> ptr = function         | Total -> assert false-        | Partial _ -> fun hash -> { target = None; target_hash = lazy hash }+        | Partial _ -> fun hash -> { target = Lazy hash }         | Truncated -> fun hash -> Broken hash -      let iter_if_loaded :+      let save :

The sole purpose of this function is to be used from Val.save. Since it now also does stuff depending on the clear parameter, it is even more tied to Val.save. I don't see a better naming.

Ngoguey42

comment created time in a day

Pull request review commentmirage/irmin

Rework caching

 module Make (P : Private.S) = struct     | `Contents (k, m) -> `Contents (Contents.of_hash repo k, m)    let export ?clear repo contents_t node_t n =+    let non_impacting = false in

Much better :D

Ngoguey42

comment created time in a day

PullRequestReviewEvent

Pull request review commentmirage/irmin

Rework caching

 module Make (P : Private.S) = struct       let info = { hash; map; value; findv_cache } in       { v; info } +    let of_map m = of_v (Map m)+    let of_hash repo k = of_v (Hash (repo, k))+    let of_value ?updates repo v = of_v (Value (repo, v, updates))++    let cached_hash t =+      match (t.v, t.info.hash) with+      | Hash (_, h), None ->+          let h = Some h in+          t.info.hash <- h;+          h+      | _, h -> h++    let cached_map t =+      match (t.v, t.info.map) with+      | Map m, None ->+          let m = Some m in+          t.info.map <- m;+          m+      | _, m -> m++    let cached_value t =+      match (t.v, t.info.value) with+      | Value (_, v, None), None ->+          let v = Some v in+          t.info.value <- v;+          v+      | _, v -> v++    let info_is_empty i =+      i.map = None && i.value = None && i.findv_cache = None && i.hash = None+     let clear_info_fields i =       if not (info_is_empty i) then (         i.value <- None;         i.map <- None;         i.hash <- None;         i.findv_cache <- None) -    let rec clear_elt ~max_depth depth v =-      match v with-      | `Contents (c, _) -> if depth + 1 > max_depth then Contents.clear c-      | `Node t -> clear ~max_depth (depth + 1) t+    let rec clear_elt ~max_depth depth _ = function+      | `Contents (c, _) -> Contents.clear c+      | `Node t -> clear_node ~max_depth (depth + 1) t -    and clear_info ~max_depth ?v depth i =-      let clear _ v = clear_elt ~max_depth depth v in-      let () =-        match v with-        | Some (Value (_, _, Some um)) ->+    and clear_node ~max_depth depth n =+      if depth = max_depth then (+        clear_info_fields n.info;+        match n.v with Value (_, v, _) -> P.Node.Val.clear v | _ -> ())

As I implemented it:

  1. it keeps every caches before `max_depth,
  2. discards caches at max_depth,
  3. doesn't visit after max_depth.

This is not the behaviour of the order version, I've reverted this.

Ngoguey42

comment created time in a day

PullRequestReviewEvent

push eventNgoguey42/irmin

Ngoguey42

commit sha 19592c8f061c2124bf5a2b362767ae5c82c4172d

Address review comments

view details

push time in a day

Pull request review commentmirage/irmin

Rework caching

 module Make (P : Private.S) = struct           v       | _, v -> v -    let hash c =+    let hash ?(cache = true) c =

This is annoying!

Error: Multiple definition of the module name Contents.
       Names must be unique in a given structure or signature.
Ngoguey42

comment created time in a day

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentmirage/irmin

Rework caching

 struct       | Partial : (hash -> partial_ptr t option) -> partial_ptr layout       | Truncated : truncated_ptr layout -    and partial_ptr = {-      target_hash : hash Lazy.t;-      mutable target : partial_ptr t option;-    }-    (** [mutable target : partial_ptr t option] could be turned to-        [target : partial_ptr t Lazy.t] to make the code even clearer (we never-        set it back to [None]), but we might soon implement a garbage collection-        method for inodes that will necessitate that mutable option (among other-        things). *)+    and partial_ptr_target =+      | Newie of partial_ptr t

Exactly. I'll even rename newie to dirty

Ngoguey42

comment created time in a day

Pull request review commentmirage/irmin

Rework caching

 module Make (P : Private.S) = struct         acc ->         acc Lwt.t =      fun ~force ~uniq ~pre ~post ~path ?depth ~node ~contents ~tree t acc ->+      let cache = force = `True in

Agreed.

Should I include that change in this PR?

Ngoguey42

comment created time in a day

PullRequestReviewEvent
PullRequestReviewEvent