#+TITLE: Capability Security for Everyone, Finally! Spritely's Approach #+AUTHOR: Randy Farmer & Christine Lemmer-Webber #+DATE: 2023-10-30 Mon #+REVEAL_INIT_OPTIONS: width:1200, height:800, controlsLayout: 'edges' # #+OPTIONS: reveal_center:t reveal_progress:t reveal_history:nil reveal_control:t # #+OPTIONS: reveal_mathjax:t reveal_rolling_links:t reveal_keyboard:t reveal_overview:t num:nil # #+OPTIONS: reveal_width:1200 reveal_height:800 #+OPTIONS: toc:nil num:nil reveal_title_slide:nil #+REVEAL_MARGIN: 0.075 #+REVEAL_MIN_SCALE: 0.5 #+REVEAL_MAX_SCALE: 2.5 #+REVEAL_TRANS: cube #+REVEAL_THEME: night #+REVEAL_HLEVEL: 2 #+REVEAL_HEAD_PREAMBLE: #+REVEAL_ROOT: ../static/reveal.js * #+REVEAL_HTML:

Capability Security for Everyone, Finally!

Spritely's Approach

Randy Farmer (he/him) Christine Lemmer-Webber (she/her) https://spritely.institute Hackers 2023 * #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: * #+REVEAL_HTML: * #+REVEAL_HTML: *** #+REVEAL_HTML: * Spritely: back to the future #+REVEAL_HTML: *** Goblins: distributed, cooperative, transactional programming #+REVEAL_HTML: *** Distributed security you can understand - If you don't have it, you can't use it - It's just argument passing! *** COMMENT #+REVEAL_HTML: *** COMMENT #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** OCapN: the Object Capability Network #+REVEAL_HTML: *** Time-traveling distributed debugger #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+REVEAL_HTML: *** #+BEGIN_SRC scheme (define (evaluate expr env) (match expr ;; Support builtin types ((or #t #f (? number?)) expr) ;; Quoting (('quote quoted-expr) quoted-expr) ;; Variable lookup ((? symbol? name) (env-lookup env name)) ;; Conditionals (('if test consequent alternate) (if (evaluate test env) (evaluate consequent env) (evaluate alternate env))) ;; Lambdas (Procedures) (('lambda (args ...) body) (lambda (. vals) (evaluate body (extend-env env args vals)))) ;; Procedure Invocation (Application) ((proc-expr arg-exprs ...) (apply (evaluate proc-expr env) (map (lambda (arg-expr) (evaluate arg-expr env)) arg-exprs))))) #+END_SRC *** #+REVEAL_HTML: *** #+REVEAL_HTML: ** We are a research institution & that means collaboration #+REVEAL_HTML: *** Now (pre-)announcing: OCapCon - BOF tonight! *** Join us! #+REVEAL_HTML: https://community.spritely.institute (Code: OCAPN2023)