Attention une mise à jour du service Gitlab va être effectuée le mardi 30 novembre entre 17h30 et 18h00. Cette mise à jour va générer une interruption du service dont nous ne maîtrisons pas complètement la durée mais qui ne devrait pas excéder quelques minutes. Cette mise à jour intermédiaire en version 14.0.12 nous permettra de rapidement pouvoir mettre à votre disposition une version plus récente.

  1. 24 Sep, 2019 6 commits
    • Ludovic Courtès's avatar
      Remove references to 'guix-kernel exceptions. · e58b8b27
      Ludovic Courtès authored
      * guix-jupyter-kernel.scm (error->shtml, error->html): Remove.
      (reply-execute-request): Remove catch for 'guix-kernel exceptions.
      e58b8b27
    • Ludovic Courtès's avatar
      Use 'sxml->html-string' some more. · e1cea845
      Ludovic Courtès authored
      * guix-jupyter-kernel.scm (reply-for-environment): Use
      'sxml->html-string'.
      e1cea845
    • Ludovic Courtès's avatar
      Get rid of ";;guix kernel" and ";;guix run". · c4e9ee3f
      Ludovic Courtès authored
      We now automatically spawn the kernel found in the environment instead
      of running the "inner proxy".  That simplifies code (the inner proxy is
      no longer used) and simplifies usage (no need to remember to do ";;guix
      kernel" once you have set up the environment.)
      
      * guix-jupyter-kernel.scm (reply-for-environment-kernel): New
      procedure.
      (create-environment): Build the profile from MANIFEST, and call
      'available-kernel-specs-files' in there.  Return an error message if we
      didn't find exactly one kernel spec.
      (reply-execute-request): Support ";;guix environment NAME" magic.
      Remove support for 'magic-run?' and 'magic-kernel?'.
      (start-container): Take a profile rather than a manifest.
      [spawn]: Use 'available-kernel-specs-files' and 'exec-kernel' rather
      than 'run-inner-proxy'.
      * guix/jupyter/magic.scm (magic-env?): Adjust accordingly.
      * guix-kernel-demo.ipynb: Update.
      c4e9ee3f
    • Ludovic Courtès's avatar
      kernels: Add 'available-kernel-specs-files'. · e519e8d6
      Ludovic Courtès authored
      * jupyter/kernels.scm (available-kernel-specs-files): New procedure.
      e519e8d6
    • Ludovic Courtès's avatar
      kernels: Distinguish between 'exec-kernel' and 'spawn-kernel'. · b7b2ff26
      Ludovic Courtès authored
      * jupyter/kernels.scm (exec-kernel): New procedure.
      (spawn-kernel): Rewrite to use it.
      b7b2ff26
    • Ludovic Courtès's avatar
      kernels: Add 'kernel-specs->json'. · 8954b810
      Ludovic Courtès authored
      * jupyter/kernels.scm (<kernel-specs>): Define 'kernel-specs->json'.
      8954b810
  2. 23 Sep, 2019 1 commit
    • Ludovic Courtès's avatar
      messages: Use a larger buffer for incoming messages. · 78d429fe
      Ludovic Courtès authored
      This "fixes" the Matplotlib example.  Previously, we'd silently truncate
      the "display_data" message containing the plot as we forwarded it,
      resulting in breakage down the road.
      
      * jupyter/messages.scm <top level>: Add call to 'zmq-set-buffer-size'.
      78d429fe
  3. 20 Sep, 2019 7 commits
    • Ludovic Courtès's avatar
      Update example. · 04635011
      Ludovic Courtès authored
      * guix-kernel-demo.ipynb: Update.
      04635011
    • Ludovic Courtès's avatar
      Don't spawn a default environment upfront. · beb421ac
      Ludovic Courtès authored
      This ensures we reply to "kernel_info_request" in a timely fashion, and
      that we don't spawn a useless environment.  It also allows the user to
      not repeat ";;guix run my-env" in subsequent cells since the default
      environment is now recorded across cells.
      
      * guix-jupyter-kernel.scm (%default-environment-property): New variable.
      (proxy-state-default-environment, set-proxy-state-default-environment):
      New procedures.
      (create-environment): Call 'set-proxy-state-default-environment'.
      (reply-execute-request): Use the environment returned by
      'proxy-state-default-environment'.  Print an error as HTML when it's
      false.
      <top level>: Remove call to 'start-container' for the "default"
      environment.
      beb421ac
    • Ludovic Courtès's avatar
      kernels: 'spawn-kernel' searches for executables in $PATH. · def14612
      Ludovic Courtès authored
      * jupyter/kernels.scm (spawn-kernel): Use 'execlp' instead of 'exec'.
      This is useful notably for "irkernel", which just says "R" without an
      absolute file name.
      def14612
    • Ludovic Courtès's avatar
      Terminate and unregister existing proxy when recreating an environment. · f115d70a
      Ludovic Courtès authored
      * guix/jupyter/proxy.scm (unregister-proxied, terminate-proxied-kernel):
      New procedures.
      * guix-jupyter-kernel.scm (reply-execute-request): When 'lookup-proxied'
      returns true, call 'unmonitor-client' and 'terminate-proxied-kernel',
      and then 'create-environment'.
      f115d70a
    • Ludovic Courtès's avatar
      proxy: Unmonitor kernels that are terminated. · 5945ac36
      Ludovic Courtès authored
      * guix/jupyter/proxy.scm (terminate-proxied-kernels): Add call to
      'unmonitor-client'.
      5945ac36
    • Ludovic Courtès's avatar
      kernels: Increase timeout in kernel start-up test. · 87f44a41
      Ludovic Courtès authored
      * tests/kernels.scm ("run-kernel python3"): Increase timeout to 5000ms
      to increase the chances of getting a "starting" status message.
      87f44a41
    • Ludovic Courtès's avatar
      servers: Add 'unmonitor-client'. · 88e4b3e0
      Ludovic Courtès authored
      * jupyter/servers.scm (unmonitor-client): New procedure.
      (serve-kernels)[handle-abort]: Change to simply accumulate requests.
      [handle-requests]: New procedure.
      Adjust call to 'handle-message' accordingly.
      * tests/servers.scm ("ping pong, many clients leaving dynamically,
      shell"): New test.
      88e4b3e0
  4. 19 Sep, 2019 6 commits
    • Ludovic Courtès's avatar
      Environment contents are now displayed by the kernel. · f985eaac
      Ludovic Courtès authored
      The kernel has access to the manifest, so it can display its actual
      contents (including version numbers) upfront, before the environment is
      built.
      
      * guix/jupyter/inner-proxy.scm (kernel-info->shtml)
      (kernel-info->html): Remove.
      (reply-execute-request): Simply reply "Done!".
      * guix-jupyter-kernel.scm (manifest->shtml)
      (reply-for-environment, create-environment): New procedures.
      (reply-execute-request): Call 'create-environment'.
      f985eaac
    • Ludovic Courtès's avatar
      Pass the store connection as a state property. · 647d5afd
      Ludovic Courtès authored
      * guix-jupyter-kernel.scm (%store-property): New variable.
      (proxy-state-store): New procedure.
      (reply-execute-request): Use it instead of using 'with-store'.
      (kernel): Use 'with-store' and pass the store as a state property.
      647d5afd
    • Ludovic Courtès's avatar
      inner-proxy: Save the ZeroMQ context as a state property. · 6d550be4
      Ludovic Courtès authored
      * guix/jupyter/inner-proxy.scm (%context): Remove.
      (%zmq-context-property): New variable.
      (reply-execute-request): Use 'proxy-state-property' instead of referring
      to '%context'.
      (run-inner-proxy): Call 'zmq-create-context' here, and save the context
      as a %ZMQ-CONTEXT-PROPERTY property of the state.
      6d550be4
    • Ludovic Courtès's avatar
      proxy: Add user-defined properties to <proxy-state>. · 95fdf89d
      Ludovic Courtès authored
      * guix/jupyter/proxy.scm (<proxy-state>)[properties]: New field.
      (proxy-state): Adjust accordingly.
      (proxy-state-property, set-proxy-state-property): New procedures.
      95fdf89d
    • Ludovic Courtès's avatar
      Add (guix jupyter inner-proxy). · 1201d247
      Ludovic Courtès authored
      * guix-jupyter-container.scm: Rename to...
      * guix/jupyter/inner-proxy.scm: ... this, and turn into a module.
      * Makefile.am (SOURCES): Add 'inner-proxy.scm' and remove
      'guix-jupyter-container.scm'.
      * guix-jupyter-kernel.scm (container-path): Remove.
      (start-container)[spawn]: Use (guix jupyter inner-proxy).
      1201d247
    • Ludovic Courtès's avatar
      environment: Rewrite to use a profile manifest and 'eval/container*'. · 24c8abfd
      Ludovic Courtès authored
      * guix/jupyter/environ.scm: Remove.
      * guix/jupyter/environment.scm, guix/jupyter/containers.scm: New files.
      * tests/environ.scm: Remove.
      * Makefile.am (SOURCES): Adjust accordingly.
      (SCM_TESTS): Remove tests/environ.scm.
      * guix-jupyter-container.scm <top level>: Turn into...
      (run-inner-proxy): ... this.  New procedure.
      * guix-jupyter-kernel.scm (%inferior): New variable.
      (reply-execute-request): Use 'string-tokenize' and
      'specifications->manifest'.  Pass the manifest to 'start-container'.
      (module-to-import?): New procedure.
      (start-container): Rewrite to take a manifest and to evaluate code with
      'eval/container*'.  Set the 'GUIX_ENVIRONMENT' and 'JUPYTER_PATH'
      environment variables.
      * jupyter/kernels.scm (jupyter-kernel-path): Remove "GUIX_PROFILE"
      hack.
      24c8abfd
  5. 17 Sep, 2019 2 commits
  6. 16 Sep, 2019 2 commits
    • Ludovic Courtès's avatar
      Require Guile-Gcrypt >= 0.2.0. · 84c4fdb6
      Ludovic Courtès authored
      * configure.ac: Ensure we have the (gcrypt mac) module.
      * jupyter/kernels.scm: Use (gcrypt mac) instead of (gcrypt hmac).
      (generate-key): Call 'generate-signing-key'.
      * jupyter/messages.scm: Use (gcrypt mac).
      (get-signature): Use 'mac-algorithm' instead of a symbol.
      84c4fdb6
    • Ludovic Courtès's avatar
      json: Remove workaround for Guile-JSON 3.1.0. · 536d9f98
      Ludovic Courtès authored
      * jupyter/json.scm <top level>: Remove workaround for Guile-JSON 3.1.0.
      536d9f98
  7. 13 Sep, 2019 8 commits
    • Ludovic Courtès's avatar
      Move remaining kernel modules under (guix jupyter ...). · 887d6fe4
      Ludovic Courtès authored
      * guix-kernel/environ.scm: Rename to...
      * guix/jupyter/environ.scm: ... this.
      * guix-kernel/magic.scm: Rename to...
      * guix/jupyter/magic.scm: ... this
      * guix-jupyter-container.scm, guix-jupyter-kernel.scm,
      tests/environ.scm, tests/magic.scm: Adjust accordingly.
      * Makefile.am (SOURCES): Adjust accordingly.
      887d6fe4
    • Ludovic Courtès's avatar
      messages: Add JSON-mapped record types for "kernel_info_reply". · 8c6ac7f0
      Ludovic Courtès authored
      * jupyter/messages.scm (%current-protocol-version): New variable.
      (<language-info>, <kernel-info-reply>): New record types.
      * guix/jupyter/kernel.scm: New file.
      * Makefile.am (SOURCES): Add it.
      * guix-jupyter-kernel.scm (KERNEL-INFO): Remove.
      (reply-kernel-info-request): Use 'kernel-info-reply->json'.
      * tests/kernels.scm ("kernel_info_request"): Use
      'json->kernel-info-reply' and associated record types.
      8c6ac7f0
    • Ludovic Courtès's avatar
      json: Rebase on top of 'define-record-type*'. · b01b7af1
      Ludovic Courtès authored
      * jupyter/json.scm (json, <=>): New variables.
      (define-json-reader): Adjust to the new syntax for SPEC.
      (define-json-writer): Likewise.
      (define-json-mapping): Rebase on top of 'define-record-type*'.  Move
      JSON field spec under the 'json' keyword.
      * jupyter/kernels.scm (<kernel-specs>, <connection>): Adjust
      accordingly.
      (find-kernel-specs, allocate-connection): Use new syntactic
      constructors.
      b01b7af1
    • Ludovic Courtès's avatar
      proxy: Factorize global request handler. · c824394e
      Ludovic Courtès authored
      * guix-jupyter-container.scm (general-handler, dispatch): Remove.
      <top level>: Use 'proxy-request-handler' instead.
      * guix-jupyter-kernel.scm (general-handler, dispatch): Remove.
      <top level>: Use 'proxy-request-handler' instead.
      * guix/jupyter/proxy.scm (proxy-request-handler): New procedure.
      c824394e
    • Ludovic Courtès's avatar
      kernels: 'reply-html' doesn't set a recipient on iopub messages. · 0ff99a32
      Ludovic Courtès authored
      * jupyter/kernels.scm (reply-html): Pass #:recipient only when SOCKET is
      'kernel-shell'.
      0ff99a32
    • Ludovic Courtès's avatar
      Factorize proxy state handling in (guix jupyter proxy). · 1e334a55
      Ludovic Courtès authored
      * guix/jupyter/proxy.scm: New file.
      * Makefile.am (SOURCES): Add it.
      * guix-jupyter-container.scm (%main-kernel, %main-kernel-id)
      (register-kernel, kernel-by-name): Remove.
      (local-eval): No longer return COUNTER.
      (general-handler): Rewrite to expect a <proxy-state> and to pass a
      <proxy-state> to all the message type handlers.
      (ignore-request, reply-execute-request, shutdown): Adjust accordingly.
      <top level>: Create a <proxy-state> and pass it to 'server-kernels'.
      * guix-jupyter-kernel.scm (%main-kernel, %main-kernel-id)
      (register-proxy, proxy-by-name): Remove.
      (general-handler): Rewrite to expect a <proxy-state> and to pass a
      <proxy-state> to all the message type handlers.
      (ignore-request, reply-execute-request, shutdown): Adjust accordingly.
      (kill-containers): Remove.
      <top level>: Create a <proxy-state> and pass it to 'server-kernels'.
      1e334a55
    • Ludovic Courtès's avatar
      kernels: 'reply-html' replies to the message sender. · aa902cec
      Ludovic Courtès authored
      * jupyter/kernels.scm (reply-html): Pass #:recipient to 'send-message'.
      aa902cec
    • Ludovic Courtès's avatar
      Rewrite proxy to use 'serve-kernels'. · 1726ccb3
      Ludovic Courtès authored
      * jupyter/kernels.scm (generate-key): New procedure.
      (relay-message): Remove.
      * jupyter/messages.scm (<message>): Use 'define-immutable-record-type'
      and define 'set-message-content'.
      * guix-jupyter-container.scm (local-eval): Rewrite in terms of
      'send-message'.
      (reply-html-to-kernel): Remove.
      (general-handler): Copy from *-kernel.scm.
      (execute-request-sans-magic): New procedure.
      (ignore-request, reply-execute-request, shutdown): Adjust to new calling
      convention.
      (%main-kernel, %main-kernel-id): New variables.
      <top level>: Use 'serve-kernels'.
      * guix-jupyter-kernel.scm (%main-kernel, %main-kernel-id): New
      variables.
      (general-handler): Check whether we're talking to %MAIN-KERNEL.
      (reply-kernel-info-request, reply-execute-request, shutdown): Add 'kind'
      parameter.
      (new-container-connect): Remove.
      (start-container): Return a <kernel>.
      <top level>: Pass both the "default" container kernel and our client to
      'server-kernels'.  Set %MAIN-KERNEL.
      1726ccb3
  8. 12 Sep, 2019 4 commits
    • Ludovic Courtès's avatar
      Add (guix jupyter logging). · 82363869
      Ludovic Courtès authored
      * guix/jupyter/logging.scm: New file.
      * Makefile.am (SOURCES): Add it.
      82363869
    • Ludovic Courtès's avatar
      guix-jupyter-kernel: Use 'serve-kernels'. · 6446ff08
      Ludovic Courtès authored
      * guix-jupyter-kernel.scm (heartbeat-handler, start-kernel): Remove.
      (general-handler): Adjust prototype to match what 'serve-kernels'
      expects.
      <top level>: Use 'serve-kernels'.
      6446ff08
    • Ludovic Courtès's avatar
      kernels: Allow for OS-allocated TCP port numbers. · 150c006f
      Ludovic Courtès authored
      * jupyter/kernels.scm (allocate-connection): #:first-port defaults to #f.
      [allocate-port]: New procedure
      [try-connect]: New procedure.
      Use it in lieu of 'test-bind', and remove the extra 'zmq-connect'
      calls.
      (test-bind): Remove.
      150c006f
    • Ludovic Courtès's avatar
      servers: Add 'serve-kernels'. · fe70f6da
      Ludovic Courtès authored
      * jupyter/kernels.scm (kernel-socket-kind): New procedure.
      (zmq-poll*, allocate-connection): Export.
      * jupyter/servers.scm (%server-scheduler-prompt, %server-exit-prompt):
      New variables.
      * jupyter/servers.scm (monitor-client, leave-server-loop)
      (serve-kernels): New procedures.
      * tests/servers.scm: New file.
      fe70f6da
  9. 09 Sep, 2019 4 commits
    • Ludovic Courtès's avatar
      kernels: Catch EINTR on 'zmq-poll' calls. · 5093a6ea
      Ludovic Courtès authored
      * jupyter/kernels.scm (EINTR-safe): New procedure.
      (read-message): Use it.
      5093a6ea
    • 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
      servers: Take <connection> records. · 60fa602b
      Ludovic Courtès authored
      * jupyter/servers.scm (connection-file->kernel): Rename to...
      (connection->kernel): ... this, and take a CONNECTION instead of a
      PORT.
      (connection-file->kernel): Rewrite as a composition.
      60fa602b
    • 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