1. 26 Jun, 2017 1 commit
  2. 22 Jun, 2017 3 commits
  3. 12 Apr, 2017 1 commit
  4. 11 Oct, 2016 1 commit
    • Johannes Kanig's avatar
      P909-002 allow for large exit codes · 883af7f6
      Johannes Kanig authored
      Sometimes the windows syscall GetExitCodeProcess returns a large result,
      larger than the ocaml [int] type. This is expected and not an error. For
      example the constant STATUS_QUOTA_EXCEEDED, which is 0xC0000044, may be
      a valid exit code. Such large values trip up the [int_of_string] parsing
      in the client.
      
      This patch implements the following solution to this problem:
      * the server doesn't care and sends the large value;
      * (the server now recognizes this value, though, to set the timeout flag
        more often)
      * the client uses an Int64 value to parse that big constant;
      * when converting to the internal Unix.process_status type, we simply
        convert to [int], because such large values don't have any special
        meaning for Why3 anyway.
      
      * call_provers.ml
      (parse_prover_run): now directly take the exit status as argument, and
      convert it to int;
      (handle_answer): don't wrap argument to parse_prover_run into unix type
      * prove_client.ml
      (read_answer): read Int64 type now
      * server-win.c
      (handle_child_event): set timeout boolean also when exitcode is equal to
         constant STATUS_QUOTA_EXCEEDED
      
      Change-Id: I1163a6f1adf1bdbfe1f53269ce0ae57dc8bd0287
      883af7f6
  5. 09 Sep, 2016 1 commit
  6. 01 Jul, 2016 1 commit
  7. 20 May, 2016 1 commit
    • Andrei Paskevich's avatar
      Prove_client: wait for the dedicated server process · 6b98a07c
      Andrei Paskevich authored
      this allows to account for the cumulative CPU time spent
      in the dedicated server in the stats of the client process,
      which is necessary to estimate correctly the execution
      time of coqtop on proof scripts using the why3 tactic.
      
      Also, make several connection attempts before giving up.
      6b98a07c
  8. 20 Apr, 2016 1 commit
  9. 15 Apr, 2016 1 commit
    • Andrei Paskevich's avatar
      Prove_client: API refactoring · c39eacf6
      Andrei Paskevich authored
      Do not store socket_name in a reference. Instead, provide two calls:
      [connect_external] that takes the socket name as an argument and
      [connect_internal] that starts a dedicated server on a fresh socket.
      If [Prove_client.send_request] is called when no connection is
      established, it calls [connect_internal].
      
      Rationale: the only reason to have a reference for socket_name is
      to delay the connection request (for example, until the first call
      to [Prove_client.send_request]). However, if the server is already
      running when we set [socket_name], it does not cost us anything to
      establish this connection right away. This is what [connect_external]
      is for. Otherwise, if the server is not running yet, the API client
      must ensure that it will be started before the first [send_request],
      or else the connection request fails. This requires synchronisation
      between the entity that starts the server and the Why3 process. In
      this case, the API client should just call [connect_external] once
      it knows that the server is up and running.
      
      TODO:
      - what is the semantics of [disconnect]? How should we handle the
        tasks in progress?
      - what is the semantics of [max_prover_running] when working with
        an external server?
      - how should we handle server-side disconnects (if at all)?
      c39eacf6
  10. 14 Apr, 2016 2 commits
    • Andrei Paskevich's avatar
      Prove_client: change the "standalone" logic · 39ed26b1
      Andrei Paskevich authored
      1. No default socket name is provided. If Why3 should connect to
         an external server, Prove_client.set_socket_name must be called
         first.
      
      2. If Prove_client.set_socket_name was never called, Why3 assumes
         to be in the stand-alone mode, and will start the server in the
         standard tmp directory (on Unix, $TMPDIR or /tmp, on Win, $TEMP or .).
         The socket name is set to be "why3server.<PID_of_Why3>.sock",
         to avoid clashes with other Why3 processes (fixes the Coq tactic).
      
      3. Global reference Prove_client.standalone is removed.
      
      4. Call_provers does not reexport Prove_client.set_socket_name.
      
      5. Prove_client.connect does nothing if the socket reference is set.
      39ed26b1
    • Johannes Kanig's avatar
      improve handling of runstdin command · 88ce0c36
      Johannes Kanig authored
      88ce0c36
  11. 12 Apr, 2016 1 commit
  12. 10 Apr, 2016 1 commit
  13. 07 Apr, 2016 2 commits
  14. 05 Apr, 2016 1 commit
  15. 25 Mar, 2016 3 commits
  16. 22 Mar, 2016 1 commit
  17. 19 Mar, 2016 1 commit
  18. 17 Mar, 2016 2 commits