Pierre-Antoine Champin

SemWeb.Pro 2018

http://champin.net/2018/semwebpro/

Plan de la présentation

  1. Web Assembly
  2. Rust
  3. Sophia

1. Web Assembly

Javascript

DéveloppeurNavigateur
Programmation
Compilation JIT
Exécution

Web Assembly

DéveloppeurNavigateur
Programmation
Compilation
Exécution
“WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. ...

Source : webassembly.org

... Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications.”

Source : webassembly.org

wasm

Complémentarité

  • Extension de la VM JS
  • Code "glue" JS nécessaire

Cas d'utilisation

  • Code critique en terme de performances
  • Partage de code entre client et serveur

2. Rust

“Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety. ”

Source : rust-lang.org

Historique

  • 2006 : Début du projet par Graydon Hoare
  • 2009 : Mozilla endosse le projet
  • 2015 : Version 1.0
  • 2018 : Version 1.30.0

Abstractions à coût zéro

  • Méthodes, encapsulation
  • Interfaces, polymorphisme
  • Design patterns (Itérateur, ...)
  • Pattern matching
  • ...

Gestion de la mémoire

Cdéveloppeurpeu fiable
Javaramasse-miettespeu performant
Rustcompilateur👍😅

Rust + Wasm

3. Sophia

“A Rust toolkit for RDF and Linked Data.”

Source : github.com/pchampin/sophia_rs

Fait

  • Traits génériques pour le modèle RDF
  • Implémentation: Graphe en mémoire
  • Parser / serializer N-Triple

À faire

  • Autres implémentations de graphe (HDT, TPF...)
  • Autres formats (RDF/XML, Turtle, JSON-LD...)
  • Datasets (graphes nommés)
  • Requêtes (SPARQL)
  • Validation (SHAQL, ShEx)
  • ...

Performances

Temps de chargement d'un graphe en mémoire
Temps de réponse (premier résultat)
Temps de réponse (tous les résultats)
Temps de chargement d'un graphe en mémoire (WASM)
Temps de réponse (premier résultat) (WASM)
Temps de réponse (tous les résultats) (WASM)

http://champin.net/2018/semwebpro/

https://crates.io/crates/sophia

Annexes

Occupation mémoire
Occupation mémoire (WASM)
Temps de parsing N-Triple