1. 09 Sep, 2019 11 commits
    • Ludovic Courtès's avatar
      kernels: 'read-message' no longer calls a non-existent procedure. · baaad11b
      Ludovic Courtès authored
      * jupyter/kernels.scm (read-message): Remove call to non-existent
      'zmq-get-msg-bytevector'.
      baaad11b
    • Ludovic Courtès's avatar
      kernels: Define <connection> record type and use it. · 3edceba2
      Ludovic Courtès authored
      * jupyter/kernels.scm (<kernel>): Use 'define-immutable-record-type'.
      Add 'set-kernel-name' and 'set-kernel-pid'.
      (find-kernel-by-name): Rename to...
      (find-kernel-specs-file): ... this.
      (find-kernel-specs): New procedure.
      (<connection>): New record type.
      (new-connection-file, kernel-arguments, exec-kernel): Remove.
      (allocate-connection, spawn-kernel): New procedure.
      (run-kernel): Rewrite to take a <kernel-spec> and to use
      'allocate-connection'.
      * tests/kernels.scm (%python3-specs): New variable.
      ("run-kernel python3"): Adjust accordingly.
      * guix-jupyter-container.scm (reply-execute-request): Likewise.
      3edceba2
    • Ludovic Courtès's avatar
      kernels: Define <kernel-specs>. · 4c8895dd
      Ludovic Courtès authored
      * jupyter/kernels.scm (<kernel-specs>): New record type.
      (kernel-arguments): Use 'json->kernel-specs' and 'kernel-specs-arguments'.
      4c8895dd
    • Ludovic Courtès's avatar
      kernels: 'read-message' no longer swallows heartbeat messages. · 1abf4098
      Ludovic Courtès authored
      * jupyter/kernels.scm (read-message): Return heartbeat messages.
      1abf4098
    • Ludovic Courtès's avatar
      Switch to Guile-JSON 3.x. · 0bd4ecd7
      Ludovic Courtès authored
      Guile-JSON 3.x is incompatible with Guile-JSON 1.x, which we relied on
      until now: it maps JSON dictionaries to alists (instead of hash tables),
      and JSON arrays to vectors (instead of lists).  This commit is about
      adjusting all the existing code to this new mapping.
      
      * jupyter/kernels.scm (kernel-arguments): Use 'assoc-ref' instead of
      'hash-ref'; pass JSON array through 'vector->list'.
      (relay-message, reply-html): Likewise.
      * jupyter/messages.scm (string->header): Likewise.
      * guix-jupyter-container.scm (local-eval, reply-execute-request): Likewise.
      * guix-jupyter-kernel.scm (reply-execute-request): Likewise.
      * guix-kernel/jupyter-client.scm (json->kernel): Likewise.
      * tests/kernels.scm: Likewise.
      * environment.scm (propagated-inputs): Replace GUILE-JSON with
      GUILE-JSON-3.
      0bd4ecd7
    • Ludovic Courtès's avatar
      kernels: 'read-message' reads from any of the kernel's sockets. · d88fb653
      Ludovic Courtès authored
      * jupyter/kernels.scm (read-message): Rewrite to use 'zmq-poll'.  Add
      optional 'timeout' parameter.
      * tests/kernels.scm ("execute_request"): Call 'read-message' thrice and
      check all three replies.
      d88fb653
    • Ludovic Courtès's avatar
      kernels: 'run-kernel' no longer requires a UUID parameter. · 22e7d33f
      Ludovic Courtès authored
      * jupyter/kernels.scm (run-kernel): Remove 'uuid' parameter and add
       #:identity parameter.  Do not set ZMQ_IDENTITY on SOCKET-SHELL when
       #:identity is #f.
      * guix-jupyter-container.scm (reply-execute-request): Pass #:identity to
      'run-kernel'.
      * tests/kernels.scm (%kernel-uuid): Remove.
      ("run-kernel python3"): Remove %KERNEL-UUID argument from 'run-kernel'
      call.
      ("execute_request"): Remove #:recipient argument to 'send-message'.
      Remove reference to %KERNEL-UUID.
      22e7d33f
    • Ludovic Courtès's avatar
      kernels: Add 'kernel-sockets'. · 3b418494
      Ludovic Courtès authored
      * jupyter/kernels.scm (kernel-sockets): New procedure.
      (close-kernel): Use it.
      3b418494
    • Ludovic Courtès's avatar
      Move more kernel helpers to (guix kernels). · 16553955
      Ludovic Courtès authored
      * guix-kernel/jupyter-client.scm (read-message, send-message, pub)
      (pub-busy, pub-idle, reply-html): Move to...
      * jupyter/kernels.scm: ... here.
      16553955
    • Ludovic Courtès's avatar
      Rename (guix-kernel jupyter-server) to (jupyter kernels). · 0556e9dd
      Ludovic Courtès authored
      * guix-kernel/jupyter-server.scm: Rename to...
      * jupyter/kernels.scm: ... this.
      * guix-jupyter-container.scm, guix-jupyter-kernel.scm,
      guix-kernel/jupyter-client.scm: Adjust accordingly.
      * Makefile.am (SOURCES): Likewise.
      0556e9dd
    • Ludovic Courtès's avatar
      Remove <notebook>, use <kernel> throughout. · 30004d60
      Ludovic Courtès authored
      * guix-kernel/jupyter-client.scm (<notebook>, notebook): Remove.
      (json->notebook): Rename to...
      (json->kernel): ... this, and adjust accordingly.
      (read-message, send-message, relay-message, pub, pub-busy)
      (pub-idle, reply-html): Adjust accordingly.
      * guix-kernel/jupyter-server.scm (<kernel>)[key]: New field.
      (kernel-iopub): New macro.
      (kernel): Add #:key.
      (close-kernel): New procedure.
      * guix-jupyter-kernel.scm: Adjust, replacing "notebook" with "kernel".
      * guix-jupyter-container.scm: Likewise.
      30004d60
  2. 11 Oct, 2018 1 commit
    • Ludovic Courtès's avatar
      jupyter-server: Define a <kernel> record type. · b59ff4a5
      Ludovic Courtès authored
      * guix-kernel/jupyter-server.scm (<kernel>): New record type.
      (kernel): New procedure.
      (run-kernel): Return a <kernel> instead of an alist.
      * guix-jupyter-container.scm (register-kernel): Replace 'name' and
      'values' parameters with 'kernel'.
      (kernel-by-name): Return the kernel itself, not the pair.
      (kernel-shell-by-name, kernel-iosub-by-name): Remove.
      (proxy-exec-kernel): Adjust accordingly.
      b59ff4a5
  3. 24 Sep, 2018 2 commits
    • Ludovic Courtès's avatar
      jupyter-server: Use keyword arguments. · 40b45870
      Ludovic Courtès authored
      * guix-kernel/jupyter-server.scm (new-connection-file): Change to use
      keyword arguments.  Use 'call-with-output-file' instead of
      'open-output-file'.
      (run-kernel): Adjust accordingly.
      40b45870
    • Ludovic Courtès's avatar
      Send and receive bytevectors. · da295031
      Ludovic Courtès authored
      This avoids the occasional string decoding error for byte streams that
      were not actual UTF-8 strings.
      
      This is based on commit fbab29d738b46d8637579ccec93be49520a4606f ("Fixed
      a bug when the kernel could not send kernel_info (1 minute pause after
      notebook starts)") of <https://github.com/jerry40/guile-kernel
      
      >.
      
      * guix-jupyter-container.scm (reply-execute-request): Turn UUID into a
      bytevector.
      * guix-jupyter-kernel.scm (send-to-container): Turn NAME into a
      bytevector and use 'zmq-send-msg-parts-bytevector'.
      (heartbeat-handler): Use '-bytevector' send and receive procedures.
      (general-handler): Likewise.  Add calls to 'utf8->string' as needed.
      * guix-kernel/jupyter-client.scm (send-to-jupyter)
      (pub): Likewise.
      * guix-kernel/jupyter-server.scm (run-kernel): Likewise.
      Co-authored-by: default avatarjerry40 <epanfilov@gmail.com>
      da295031
  4. 21 Sep, 2018 3 commits
  5. 11 Sep, 2018 1 commit
    • Ludovic Courtès's avatar
      Really search for 'ipython' in $PATH. · 669abe5e
      Ludovic Courtès authored
      Previously we assumed $PATH contained a single entry.
      
      * guix-kernel/jupyter-server.scm (search-path->list): New procedure.
      (exec-kernel): Use it along with 'search-path' to determine the absolute
      file name of 'ipython'.
      669abe5e
  6. 17 Jul, 2018 1 commit
    • ROUBY Pierre-Antoine's avatar
      guix-kernel: Add ipython. · 0c25abe7
      ROUBY Pierre-Antoine authored
      * guix-jupyter-container.scm (proxy-exec-kernel): Get streams message
        type.
        (local-eval): Send 'guix-end-of-eval' message.
      * guix-jupyter-kernel.scm (proxy-exec-container): Get streams message
        type.
      * guix-kernel/jupyter-client.scm (reply-html): Send 'guix-end-of-eval'
        message.
      * guix-kernel/jupyter-server.scm (exec-kernel): Add IPython.
      0c25abe7
  7. 05 Jul, 2018 1 commit
    • ROUBY Pierre-Antoine's avatar
      guix-kernel: Run Jupyter kernel over Guix kernel. · a76494a7
      ROUBY Pierre-Antoine authored
      * guix-jupyter-container.scm: Add magic kernel command.
      * guix-jupyter-kernel.scm: Add magic kernel command.
      * guix-kernel/jupyter-server.scm: New file.
      * Makefile.am: Add jupyter-server to SOURCE.
      * guix-kernel/magic.scm (magic-kernel?,
        magic-get-kernel-name): Add procedure.
        (magic?): Change '%%' by ';;'.
      * guix-kernel-demo.ipynb: Add new guix-kernel features.
      * logo.png: New file.
      a76494a7