-*- mode: org; coding: utf-8; -*-

This file contains random to-do ideas.


* Better support fixed-size arrays

Using structs for fixed-size arrays leads to inefficient
encoding/decoding.  We must have native support that makes use of the
vector encoders/decoders of basic types.

* Support `quadruple'

* Statically allocate RPC buffers (non-reentrant variant)

May significantly improve performance, but may also require an
`xdr-max-type-size' procedure.


* Batch RPC calls through a `future'-like construct
  and a dedicated RPC thread

See [[http://okmij.org/ftp/meta-future/#remote-applications][Oleg's work]] for ideas.

  (define acall (make-asynchronous-rpc-call ...))

  (let ((p1 (acall 123))
        (p2 (acall 42))) ; no I/O done at this point
    (finish p1)          ; send both calls at once
    (finish p2))

See also [[http://www.erights.org/elib/distrib/pipeline.html]["Promise Pipelining" at erights.org]].

* Support some authentication flavors

* Compiler

** Generate more efficient encoders/decoders

Get source from `xdr/types.scm', perform loop unrolling, etc.

** Support other Sun extensions

See [[http://optics.eee.nottingham.ac.uk/vxi11/source/vxi11/vxi11.x][vxi11]] for examples of what's needed.

*** string constants, as in "const foo = "str";" (see `key_prot.x')
*** enum without values, as in "enum foo { one, two };"
*** "unsigned long" and "long" ("hyper"?)
*** "unsigned short" and "short" ("int"?)
*** "unsigned char"

** Add stand-alone tools

`xdr-{decode,encode,describe}', `rpc-proxy', etc.

* Support [[http://www.gnu.org/software/autogen/xdr/][NFSv4 XDR extensions]]


Copyright 2007, 2008, 2009, 2010, 2012  Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification, are
permitted in any medium without royalty provided the copyright notice
and this notice are preserved.
