Skip to content
Tags give the ability to mark specific points in history as being important
  • proot-v3.2.0
    db1f36f8 · Prepare release v3.2. ·
    Release v3.2
    ============
    
    This release was mostly driven by the requirements of "CARE", a new
    project based on PRoot that will be released publicly soon on
    http://reproducible.io.  For information, "CARE" is the short for
    "Comprehensive Archiver for Reproducible Execution".
    
    Highlights
    ----------
    
    + Many bugs exposed by a couple of static code analyzers (Coverity,
      Clang, ...) and some test-suites (Linux Test Project, libuv, ...)
      are now fixed.
    
    + The "kompat" extension ("-k" option) can now emulate most of the
      kernel features that would be required by the guest system but that
      are not available on the host kernel.  For example, it can now make
      programs from Ubuntu 13.04 64-bit run on RedHat 5 64-bit without any
      further tweaks:
    
         rh5-64$ proot -k 3.8 -R ubuntu-13.04-64bit/ ...
    
    + On ARM and x86_64, the heap segment is now emulated with a regular
      memory mapping to ensure this former always exists.  This was
      required because some kernels might put a non-fixed memory mapping
      right after the regular heap when using some GNU ELF interpreters
      (ld.so) as loaders.  Without the heap segment emulation, some
      programs like Bash would crash because the heap can't grow anymore:
    
          bash: xmalloc: locale.c:73: cannot allocate 2 bytes (0 bytes allocated)
    
    Miscellaneous
    -------------
    
    + When using the "-R" option, the path to the guest rootfs is now
      bound into the guest rootfs itself.  This is required to run
      programs that search for their DSOs in /proc/self/maps, like VLC for
      instance.
    
    + When using the "-v" option with a level greater than 2, syscalls are
      now printed as strings instead of numbers, à la strace:
    
        $ proot -v 3 true
        [...]
        proot info: pid 29847: sysenter start: mmap(0x0, 0x2d141, 0x1, 0x2, 0x3, 0x0) [...]
        [...]
    
    + The article about the migration from ScratchBox2 is now publicly
      available:
    
        https://github.com/cedric-vincent/PRoot/blob/v3.2/doc/articles/howto_migrate_from_scratchbox2.txt
    
    Internal changes
    ----------------
    
    + Tools based on PRoot (CARE, DepsTracker, ATOS, ...) can now easily
      replace the original command-line interface with their own
      command-line interface.
    
    + It is now possible to chain forged syscalls to a regular syscall.
      Search for "register_chained_syscall" in the sources for details.
    
    + A couple of new helpers are now visible from the extensions.
    
    Thanks
    ------
    
    + Bug reports and tests: Corbin Champion, Maxence Dalmais, and Nicolas
      Cornu.
    
    + Static code analysis: Antoine Moynault and Christophe Guillon.
    
    + Patches: Rémi Duraffort.
    
    + Unexpected hint: Christophe Monat :)
    
    Validation
    ----------
    
    ====================  =================  ==============  =================  =========
    testsuite                   host distro    guest distro           features   comments
    ====================  =================  ==============  =================  =========
    proot-v3.2                 OBS */x86_64            none                N/A          a
    proot-v3.2                    OBS */x86            none                N/A          a
    proot-v3.2             Ubuntu-10.10/arm            none               none          a
    
    proot-v3.2            Slack-14.0/x86_64            none               none          a
    proot-v3.2            Slack-14.1/x86_64            none            seccomp          a
    
    proot-v3.2/memcheck   Slack-14.1/x86_64            none               none          a
    proot-v3.2/memcheck   Slack-14.1/x86_64            none            seccomp          a
    
    proot-v3.2/asan       Slack-14.1/x86_64            none               none          a
    proot-v3.2/asan       Slack-14.1/x86_64            none            seccomp          a
    
    proot-v3.2/talleak    Slack-14.0/x86_64            none               none          a
    proot-v3.2/talleak    Slack-14.1/x86_64            none            seccomp          a
    
    libuv-0.10.18         Slack-14.0/x86_64    same as host               none          b
    libuv-0.10.18         Slack-14.0/x86_64    same as host             kompat       b, c
    libuv-0.10.18         Slack-14.1/x86_64    same as host            seccomp          a
    libuv-0.10.18         Slack-14.1/x86_64    same as host     seccomp/kompat          b
    
    libuv-0.10.18         Slack-14.0/x86_64  Slack-14.0/x86               none          b
    libuv-0.10.18         Slack-14.0/x86_64  Slack-14.0/x86             kompat       b, c
    libuv-0.10.18         Slack-14.1/x86_64  Slack-14.0/x86            seccomp          a
    libuv-0.10.18         Slack-14.1/x86_64  Slack-14.0/x86     seccomp/kompat          b
    
    ltp-syscall-20130904  Slack-14.0/x86_64    same as host               none          d
    ltp-syscall-20130904  Slack-14.0/x86_64    same as host             kompat       d, e
    ltp-syscall-20130904  Slack-14.1/x86_64    same as host            seccomp          d
    ltp-syscall-20130904  Slack-14.1/x86_64    same as host     seccomp/kompat          e
    
    ltp-syscall-20130904  Slack-14.0/x86_64  Slack-14.0/x86               none       d, f
    ltp-syscall-20130904  Slack-14.0/x86_64  Slack-14.0/x86             kompat    d, e ,f
    ltp-syscall-20130904  Slack-14.1/x86_64  Slack-14.0/x86            seccomp       d, f
    ltp-syscall-20130904  Slack-14.1/x86_64  Slack-14.0/x86     seccomp/kompat    d, e, f
    
    perl-5.18.1           Slack-14.0/x86_64    same as host               none          h
    perl-5.18.1           Slack-14.0/x86_64    same as host             kompat       h, i
    perl-5.18.1           Slack-14.1/x86_64    same as host            seccomp          h
    perl-5.18.1           Slack-14.1/x86_64    same as host     seccomp/kompat          h
    
    perl-5.18.1           Slack-14.0/x86_64  Slack-14.0/x86               none          h
    perl-5.18.1           Slack-14.0/x86_64  Slack-14.0/x86             kompat       h, i
    perl-5.18.1           Slack-14.1/x86_64  Slack-14.0/x86            seccomp          h
    perl-5.18.1           Slack-14.1/x86_64  Slack-14.0/x86     seccomp/kompat          h
    
    posixtestsuite-1.5.2  Slack-14.0/x86_64    same as host               none          a
    posixtestsuite-1.5.2  Slack-14.0/x86_64    same as host             kompat          a
    posixtestsuite-1.5.2  Slack-14.1/x86_64    same as host            seccomp          a
    posixtestsuite-1.5.2  Slack-14.1/x86_64    same as host     seccomp/kompat          a
    
    posixtestsuite-1.5.2  Slack-14.0/x86_64  Slack-14.0/x86               none          j
    posixtestsuite-1.5.2  Slack-14.0/x86_64  Slack-14.0/x86             kompat          j
    posixtestsuite-1.5.2  Slack-14.1/x86_64  Slack-14.0/x86            seccomp          j
    posixtestsuite-1.5.2  Slack-14.1/x86_64  Slack-14.0/x86     seccomp/kompat          j
    
    perl-5.16.1           Slack-14.0/x86_64  Slack-14.0/ARM         qemu-1.6.1          h
    coreutils-8.19        Slack-14.0/x86_64  Slack-14.0/ARM         qemu-1.6.1          k
    
    performance           Slack-14.0/x86_64            none               none          l
    ====================  =================  ==============  =================  =========
    
    Comments
    --------
    
    a: everything is OK
    
    b: failures:
    
       - "signal_multiple_loops" (ptrace slowdown -> timeout)
    
    c: failures:
    
       - "threadpool_cancel_getaddrinfo" (need investigation)
    
    d: failures:
    
       - "creat07", "execve04" (due to the usage of a loader in PRoot)
    
       - "ptrace01", "ptrace02", "ptrace03", "ptrace05" (no ptrace
         emulation in PRoot)
    
       - "rmdir02" (reach the PATH_MAX limit in PRoot)
    
       - "mremap03", "msync05", "pwrite03", "pwrite03_64" (due to heap
         emulation in PRoot)
    
       - "msgctl10", "msgctl11", (ptrace slowdown -> timeout)
    
    e: failures:
    
       - "eventfd2_03", "pselect01", "pselect01_64" (known limitation of
         the "kompat" extension in PRoot)
    
    f: failures:
    
       - "modify_ldt01" (need investigation)
    
    h: failures:
    
       - "cpan/File-Path/t/Path.t",
         "dist/ExtUtils-Command/t/eu_command.t", "op/magic.t" (known
         failures due to PRoot)
    
    i: failures:
    
       - parallel build is broken (need investigation)
    
    j: failures:
    
       - "pthread_attr_setdetachstate", "pthread_attr_getdetachstate",
         "pthread_attr_init" (need investigation)
    
    k: failures:
    
       - "misc/ls-misc", "misc/printenv", "split/fail",
         "df/total-unprocessed", "dd/skip-seek", "dd/skip-seek-past-file"
         (due to QEMU user-mode)
    
       - "install/basic-1", "mkdir/p-3", "readlink/can-e",
         "readlink/can-f", "readlink/can-m" (known failures due to PRoot)
    
    l: performance regression introduced by commit 7863f562
  • v3.2
    db1f36f8 · Prepare release v3.2. ·
    Release v3.2
    ============
    
    This release was mostly driven by the requirements of "CARE", a new
    project based on PRoot that will be released publicly soon on
    http://reproducible.io.  For information, "CARE" is the short for
    "Comprehensive Archiver for Reproducible Execution".
    
    Highlights
    ----------
    
    + Many bugs exposed by a couple of static code analyzers (Coverity,
      Clang, ...) and some test-suites (Linux Test Project, libuv, ...)
      are now fixed.
    
    + The "kompat" extension ("-k" option) can now emulate most of the
      kernel features that would be required by the guest system but that
      are not available on the host kernel.  For example, it can now make
      programs from Ubuntu 13.04 64-bit run on RedHat 5 64-bit without any
      further tweaks:
    
         rh5-64$ proot -k 3.8 -R ubuntu-13.04-64bit/ ...
    
    + On ARM and x86_64, the heap segment is now emulated with a regular
      memory mapping to ensure this former always exists.  This was
      required because some kernels might put a non-fixed memory mapping
      right after the regular heap when using some GNU ELF interpreters
      (ld.so) as loaders.  Without the heap segment emulation, some
      programs like Bash would crash because the heap can't grow anymore:
    
          bash: xmalloc: locale.c:73: cannot allocate 2 bytes (0 bytes allocated)
    
    Miscellaneous
    -------------
    
    + When using the "-R" option, the path to the guest rootfs is now
      bound into the guest rootfs itself.  This is required to run
      programs that search for their DSOs in /proc/self/maps, like VLC for
      instance.
    
    + When using the "-v" option with a level greater than 2, syscalls are
      now printed as strings instead of numbers, à la strace:
    
        $ proot -v 3 true
        [...]
        proot info: pid 29847: sysenter start: mmap(0x0, 0x2d141, 0x1, 0x2, 0x3, 0x0) [...]
        [...]
    
    + The article about the migration from ScratchBox2 is now publicly
      available:
    
        https://github.com/cedric-vincent/PRoot/blob/v3.2/doc/articles/howto_migrate_from_scratchbox2.txt
    
    Internal changes
    ----------------
    
    + Tools based on PRoot (CARE, DepsTracker, ATOS, ...) can now easily
      replace the original command-line interface with their own
      command-line interface.
    
    + It is now possible to chain forged syscalls to a regular syscall.
      Search for "register_chained_syscall" in the sources for details.
    
    + A couple of new helpers are now visible from the extensions.
    
    Thanks
    ------
    
    + Bug reports and tests: Corbin Champion, Maxence Dalmais, and Nicolas
      Cornu.
    
    + Static code analysis: Antoine Moynault and Christophe Guillon.
    
    + Patches: Rémi Duraffort.
    
    + Unexpected hint: Christophe Monat :)
    
    Validation
    ----------
    
    ====================  =================  ==============  =================  =========
    testsuite                   host distro    guest distro           features   comments
    ====================  =================  ==============  =================  =========
    proot-v3.2                 OBS */x86_64            none                N/A          a
    proot-v3.2                    OBS */x86            none                N/A          a
    proot-v3.2             Ubuntu-10.10/arm            none               none          a
    
    proot-v3.2            Slack-14.0/x86_64            none               none          a
    proot-v3.2            Slack-14.1/x86_64            none            seccomp          a
    
    proot-v3.2/memcheck   Slack-14.1/x86_64            none               none          a
    proot-v3.2/memcheck   Slack-14.1/x86_64            none            seccomp          a
    
    proot-v3.2/asan       Slack-14.1/x86_64            none               none          a
    proot-v3.2/asan       Slack-14.1/x86_64            none            seccomp          a
    
    proot-v3.2/talleak    Slack-14.0/x86_64            none               none          a
    proot-v3.2/talleak    Slack-14.1/x86_64            none            seccomp          a
    
    libuv-0.10.18         Slack-14.0/x86_64    same as host               none          b
    libuv-0.10.18         Slack-14.0/x86_64    same as host             kompat       b, c
    libuv-0.10.18         Slack-14.1/x86_64    same as host            seccomp          a
    libuv-0.10.18         Slack-14.1/x86_64    same as host     seccomp/kompat          b
    
    libuv-0.10.18         Slack-14.0/x86_64  Slack-14.0/x86               none          b
    libuv-0.10.18         Slack-14.0/x86_64  Slack-14.0/x86             kompat       b, c
    libuv-0.10.18         Slack-14.1/x86_64  Slack-14.0/x86            seccomp          a
    libuv-0.10.18         Slack-14.1/x86_64  Slack-14.0/x86     seccomp/kompat          b
    
    ltp-syscall-20130904  Slack-14.0/x86_64    same as host               none          d
    ltp-syscall-20130904  Slack-14.0/x86_64    same as host             kompat       d, e
    ltp-syscall-20130904  Slack-14.1/x86_64    same as host            seccomp          d
    ltp-syscall-20130904  Slack-14.1/x86_64    same as host     seccomp/kompat          e
    
    ltp-syscall-20130904  Slack-14.0/x86_64  Slack-14.0/x86               none       d, f
    ltp-syscall-20130904  Slack-14.0/x86_64  Slack-14.0/x86             kompat    d, e ,f
    ltp-syscall-20130904  Slack-14.1/x86_64  Slack-14.0/x86            seccomp       d, f
    ltp-syscall-20130904  Slack-14.1/x86_64  Slack-14.0/x86     seccomp/kompat    d, e, f
    
    perl-5.18.1           Slack-14.0/x86_64    same as host               none          h
    perl-5.18.1           Slack-14.0/x86_64    same as host             kompat       h, i
    perl-5.18.1           Slack-14.1/x86_64    same as host            seccomp          h
    perl-5.18.1           Slack-14.1/x86_64    same as host     seccomp/kompat          h
    
    perl-5.18.1           Slack-14.0/x86_64  Slack-14.0/x86               none          h
    perl-5.18.1           Slack-14.0/x86_64  Slack-14.0/x86             kompat       h, i
    perl-5.18.1           Slack-14.1/x86_64  Slack-14.0/x86            seccomp          h
    perl-5.18.1           Slack-14.1/x86_64  Slack-14.0/x86     seccomp/kompat          h
    
    posixtestsuite-1.5.2  Slack-14.0/x86_64    same as host               none          a
    posixtestsuite-1.5.2  Slack-14.0/x86_64    same as host             kompat          a
    posixtestsuite-1.5.2  Slack-14.1/x86_64    same as host            seccomp          a
    posixtestsuite-1.5.2  Slack-14.1/x86_64    same as host     seccomp/kompat          a
    
    posixtestsuite-1.5.2  Slack-14.0/x86_64  Slack-14.0/x86               none          j
    posixtestsuite-1.5.2  Slack-14.0/x86_64  Slack-14.0/x86             kompat          j
    posixtestsuite-1.5.2  Slack-14.1/x86_64  Slack-14.0/x86            seccomp          j
    posixtestsuite-1.5.2  Slack-14.1/x86_64  Slack-14.0/x86     seccomp/kompat          j
    
    perl-5.16.1           Slack-14.0/x86_64  Slack-14.0/ARM         qemu-1.6.1          h
    coreutils-8.19        Slack-14.0/x86_64  Slack-14.0/ARM         qemu-1.6.1          k
    
    performance           Slack-14.0/x86_64            none               none          l
    ====================  =================  ==============  =================  =========
    
    Comments
    --------
    
    a: everything is OK
    
    b: failures:
    
       - "signal_multiple_loops" (ptrace slowdown -> timeout)
    
    c: failures:
    
       - "threadpool_cancel_getaddrinfo" (need investigation)
    
    d: failures:
    
       - "creat07", "execve04" (due to the usage of a loader in PRoot)
    
       - "ptrace01", "ptrace02", "ptrace03", "ptrace05" (no ptrace
         emulation in PRoot)
    
       - "rmdir02" (reach the PATH_MAX limit in PRoot)
    
       - "mremap03", "msync05", "pwrite03", "pwrite03_64" (due to heap
         emulation in PRoot)
    
       - "msgctl10", "msgctl11", (ptrace slowdown -> timeout)
    
    e: failures:
    
       - "eventfd2_03", "pselect01", "pselect01_64" (known limitation of
         the "kompat" extension in PRoot)
    
    f: failures:
    
       - "modify_ldt01" (need investigation)
    
    h: failures:
    
       - "cpan/File-Path/t/Path.t",
         "dist/ExtUtils-Command/t/eu_command.t", "op/magic.t" (known
         failures due to PRoot)
    
    i: failures:
    
       - parallel build is broken (need investigation)
    
    j: failures:
    
       - "pthread_attr_setdetachstate", "pthread_attr_getdetachstate",
         "pthread_attr_init" (need investigation)
    
    k: failures:
    
       - "misc/ls-misc", "misc/printenv", "split/fail",
         "df/total-unprocessed", "dd/skip-seek", "dd/skip-seek-past-file"
         (due to QEMU user-mode)
    
       - "install/basic-1", "mkdir/p-3", "readlink/can-e",
         "readlink/can-f", "readlink/can-m" (known failures due to PRoot)
    
    l: performance regression introduced by commit 7863f562
  • proot-v3.1.0
    086eaab1 · Prepare release v3.1. ·
    Release v3.1
    ============
    
    Command-line interface changes
    ------------------------------
    
    + The initial command is not search in "." anymore, unless the "./"
      prefix is specified or unless "." is in $PATH, as expected.
    
    + The "-B" and "-Q" options are obsoleted by the new "-R" option.
      This latter is equivalent to "-B -r", as there was actually no point
      at using the "-B" option without "-r".
    
    + A warning is now emitted when the rootfs is specified à la
      chroot(1), that is, without using "-r" or "-R".
    
    The old command-line interface is not documented anymore, but it will
    be still supported for a couple of releases.  Although, users are
    strongly encouraged to switch to the new one:
    
            ======================   =================
            old CLI                  new CLI
            ======================   =================
            proot rootfs             proot -r rootfs
            proot -B rootfs          proot -R rootfs
            proot -B -r rootfs       proot -R rootfs
            proot -Q qemu rootfs     proot -R rootfs -q qemu
            proot -Q qemu -r rootfs  proot -R rootfs -q qemu
            =======================  =======================
    
    Extensions
    ----------
    
    + The "kompat" extension ("-k" option) has been greatly enhanced.  For
      example, it can now make programs from Ubuntu 13.04 32-bit run on
      RedHat 5 64-bit:
    
         rh5-64$ proot -k 3.8 -R ubuntu-13.04-32bit/ ...
    
    + The "fake id0" extension ("-0" option) handles more syscalls:
      mknod(2), capset(2), setxattr(2), setresuid(2), setresgid(2),
      getresuid(2), and getresgid(2).
    
    Miscellaneous
    -------------
    
    + PRoot is now compiled with large file-system support (LFS), this
      make it works with 64-bit file-systems (eg. CIFS) on 32-bit
      platforms.
    
    + The special symbolic link "/proc/self/root" now points to the guest
      rootfs, that is, to the path specified by "-r" or "-R".  Just like
      with chroot(2), this symlink may be broken as the referenced host
      path likely does not exist in the guest rootfs.  Although, this
      symlink is typically used to know if a process is under a chroot-ed
      environment.
    
    + Under QEMU, LD_LIBRARY_PATH is not clobbered anymore when a guest
      program is launched by a host program.
    
    + When seccomp-filter is enabled, this release is about 8% faster than
      the previous one.
    
    + A couple of bugs reported by Scan Coverity are fixed.
    
    Thanks
    ------
    
    Special thanks to Stephan Hadamik, Jérôme Audu, and Rémi Duraffort for
    their valuable help.
  • v3.1
    086eaab1 · Prepare release v3.1. ·
    Release v3.1
    ============
    
    Command-line interface changes
    ------------------------------
    
    + The initial command is not search in "." anymore, unless the "./"
      prefix is specified or unless "." is in $PATH, as expected.
    
    + The "-B" and "-Q" options are obsoleted by the new "-R" option.
      This latter is equivalent to "-B -r", as there was actually no point
      at using the "-B" option without "-r".
    
    + A warning is now emitted when the rootfs is specified à la
      chroot(1), that is, without using "-r" or "-R".
    
    The old command-line interface is not documented anymore, but it will
    be still supported for a couple of releases.  Although, users are
    strongly encouraged to switch to the new one:
    
            ======================   =================
            old CLI                  new CLI
            ======================   =================
            proot rootfs             proot -r rootfs
            proot -B rootfs          proot -R rootfs
            proot -B -r rootfs       proot -R rootfs
            proot -Q qemu rootfs     proot -R rootfs -q qemu
            proot -Q qemu -r rootfs  proot -R rootfs -q qemu
            =======================  =======================
    
    Extensions
    ----------
    
    + The "kompat" extension ("-k" option) has been greatly enhanced.  For
      example, it can now make programs from Ubuntu 13.04 32-bit run on
      RedHat 5 64-bit:
    
         rh5-64$ proot -k 3.8 -R ubuntu-13.04-32bit/ ...
    
    + The "fake id0" extension ("-0" option) handles more syscalls:
      mknod(2), capset(2), setxattr(2), setresuid(2), setresgid(2),
      getresuid(2), and getresgid(2).
    
    Miscellaneous
    -------------
    
    + PRoot is now compiled with large file-system support (LFS), this
      make it works with 64-bit file-systems (eg. CIFS) on 32-bit
      platforms.
    
    + The special symbolic link "/proc/self/root" now points to the guest
      rootfs, that is, to the path specified by "-r" or "-R".  Just like
      with chroot(2), this symlink may be broken as the referenced host
      path likely does not exist in the guest rootfs.  Although, this
      symlink is typically used to know if a process is under a chroot-ed
      environment.
    
    + Under QEMU, LD_LIBRARY_PATH is not clobbered anymore when a guest
      program is launched by a host program.
    
    + When seccomp-filter is enabled, this release is about 8% faster than
      the previous one.
    
    + A couple of bugs reported by Scan Coverity are fixed.
    
    Thanks
    ------
    
    Special thanks to Stephan Hadamik, Jérôme Audu, and Rémi Duraffort for
    their valuable help.
  • proot-v3.0.2
    103bb665 · Prepare release v3.0.2. ·
    Release v3.0.2
    ==============
    
    * Fix the search of the initial command: when the initial command is a
      symbolic link, PRoot has to dereference it in guest namespace, not
      in the host one.
    
    * Return error code EACCESS instead of EISDIR when trying to execute a
      directory.  Some programs, such as "env", behave differently with
      respect to this error code.  For example:
    
          ### setup
          $ mkdir -p /tmp/foo/python
          $ export PATH=/tmp/foo:$PATH
    
          ### before (PRoot v2.3 ... v3.0.1)
          before$ proot env python
          env: python: Is a directory
    
          ### now (PRoot v3.0.2 ...)
          $ proot env python
          Python 2.7.5 (default, May 29 2013, 02:28:51)
          [GCC 4.8.0] on linux2
          Type "help", "copyright", "credits" or "license" for more information.
          >>>
    
  • v3.0.2
    103bb665 · Prepare release v3.0.2. ·
    Release v3.0.2
    ==============
    
    * Fix the search of the initial command: when the initial command is a
      symbolic link, PRoot has to dereference it in guest namespace, not
      in the host one.
    
    * Return error code EACCESS instead of EISDIR when trying to execute a
      directory.  Some programs, such as "env", behave differently with
      respect to this error code.  For example:
    
          ### setup
          $ mkdir -p /tmp/foo/python
          $ export PATH=/tmp/foo:$PATH
    
          ### before (PRoot v2.3 ... v3.0.1)
          before$ proot env python
          env: python: Is a directory
    
          ### now (PRoot v3.0.2 ...)
          $ proot env python
          Python 2.7.5 (default, May 29 2013, 02:28:51)
          [GCC 4.8.0] on linux2
          Type "help", "copyright", "credits" or "license" for more information.
          >>>
    
  • proot-v3.0.1
    717a79fe · Prepare release v3.0.1. ·
    Release v3.0.1
    ==============
    
    Fix support for bindings where the guest path is explicitly not
    dereferenced.  Be careful, the syntax has changed:
    
            before$ proot -b /bin/bash:!/bin/sh
    
            now$ proot -b /bin/bash:/bin/sh!
    
  • v3.0.1
    717a79fe · Prepare release v3.0.1. ·
    Release v3.0.1
    ==============
    
    Fix support for bindings where the guest path is explicitly not
    dereferenced.  Be careful, the syntax has changed:
    
            before$ proot -b /bin/bash:!/bin/sh
    
            now$ proot -b /bin/bash:/bin/sh!
    
  • proot-v3.0.0
    5fa7b727 · Prepare release v3.0. ·
    Release v3.0
    ============
    
    New features
    ------------
    
    * PRoot can now use the kernel feature named "seccomp-filter", a.k.a
      "seccomp mode 2", to improve its own performance significantly.  For
      examples, the tables below show the time overhead induced by PRoot
      compared to a native execution:
    
      - when generating the Perl 5.16.1 package:
    
        ===============  ===========  ==========
        command          seccomp off  seccomp on
        ===============  ===========  ==========
        ./configure.gnu          75%         25%
        make -j4                 70%         45%
        make -j4 check           25%          9%
        ===============  ===========  ==========
    
      - when generating the Coreutils 8.19 package:
    
        ===============  ===========  ==========
        command          seccomp off  seccomp on
        ===============  ===========  ==========
        ./configure              80%         33%
        make -j4                 75%         33%
        make -j4 check           80%          8%
        ===============  ===========  ==========
    
    * It is now possible to explicitly not dereference the guest location
      of a binding by specifying ``!`` as the first character.  For
      instance::
    
          proot -b /bin/bash:!/bin/sh
    
      will not overlay ``/bin/dash`` when this latter is pointed to by
      ``/bin/sh`` (it's typically the case on Ubuntu and Debian).
    
    Fix
    ---
    
    * The initial command is not search in $PATH anymore when it starts
      with ``/`` or ``./``, and it doesn't exist.  For instance::
    
          $ rm test
          $ proot ./test
          proot warning: './test not found (root = /, cwd = /usr/local/cedric/git/proot)
          proot error: see `proot --help` or `man proot`.
    
    Thanks
    ------
    
    Many thanks to Will Drewry and Indan Zupancic, who made possible to
    accelerate PTRACE_SYSCALL with seccomp-filter.  Also, thanks to Paul
    Moore for his valuable set of seccomp tools.
    
    Notes
    -----
    
    * Unlike what I said, this release is not shipped with a ptrace
      emulator.  It's planned for the next one, though.
    
    * Seccomp-filter was first introduced in Linux 3.5 a year ago, it was
      also officially back-ported to Ubuntu 12.04 (Linux 3.2).  To know if
      PRoot is actually using this accelerator on your system, check the
      verbose output.  For intance::
    
        $ proot -v 1 true
        ...
        proot info: ptrace acceleration (seccomp mode 2) enabled
        ...
    
      But first, be sure it was built with this support::
    
        $ proot -V
        ...
        built-in accelerators: process_vm = yes, seccomp_filter = yes
        ...
    
  • v3.0
    5fa7b727 · Prepare release v3.0. ·
    Release v3.0
    ============
    
    New features
    ------------
    
    * PRoot can now use the kernel feature named "seccomp-filter", a.k.a
      "seccomp mode 2", to improve its own performance significantly.  For
      examples, the tables below show the time overhead induced by PRoot
      compared to a native execution:
    
      - when generating the Perl 5.16.1 package:
    
        ===============  ===========  ==========
        command          seccomp off  seccomp on
        ===============  ===========  ==========
        ./configure.gnu          75%         25%
        make -j4                 70%         45%
        make -j4 check           25%          9%
        ===============  ===========  ==========
    
      - when generating the Coreutils 8.19 package:
    
        ===============  ===========  ==========
        command          seccomp off  seccomp on
        ===============  ===========  ==========
        ./configure              80%         33%
        make -j4                 75%         33%
        make -j4 check           80%          8%
        ===============  ===========  ==========
    
    * It is now possible to explicitly not dereference the guest location
      of a binding by specifying ``!`` as the first character.  For
      instance::
    
          proot -b /bin/bash:!/bin/sh
    
      will not overlay ``/bin/dash`` when this latter is pointed to by
      ``/bin/sh`` (it's typically the case on Ubuntu and Debian).
    
    Fix
    ---
    
    * The initial command is not search in $PATH anymore when it starts
      with ``/`` or ``./``, and it doesn't exist.  For instance::
    
          $ rm test
          $ proot ./test
          proot warning: './test not found (root = /, cwd = /usr/local/cedric/git/proot)
          proot error: see `proot --help` or `man proot`.
    
    Thanks
    ------
    
    Many thanks to Will Drewry and Indan Zupancic, who made possible to
    accelerate PTRACE_SYSCALL with seccomp-filter.  Also, thanks to Paul
    Moore for his valuable set of seccomp tools.
    
    Notes
    -----
    
    * Unlike what I said, this release is not shipped with a ptrace
      emulator.  It's planned for the next one, though.
    
    * Seccomp-filter was first introduced in Linux 3.5 a year ago, it was
      also officially back-ported to Ubuntu 12.04 (Linux 3.2).  To know if
      PRoot is actually using this accelerator on your system, check the
      verbose output.  For intance::
    
        $ proot -v 1 true
        ...
        proot info: ptrace acceleration (seccomp mode 2) enabled
        ...
    
      But first, be sure it was built with this support::
    
        $ proot -V
        ...
        built-in accelerators: process_vm = yes, seccomp_filter = yes
        ...
    
  • proot-v2.4.1
    Release v2.4.1
    ==============
    
    Fixes
    -----
    
    * Fix all warnings reported by GCC-4.8 "-Wall -Wextra" and Coverity
      Prevent 4.5.
    
    * Fix Unix sockets path translation for some x86_64 systems.
    
    * Make the "kompat" extension (-k option) work again.
    
    * Fix spurious "can't delete /tmp/proot-$PID-XXXXX" messages.
    
  • v2.4.1
    Release v2.4.1
    ==============
    
    Fixes
    -----
    
    * Fix all warnings reported by GCC-4.8 "-Wall -Wextra" and Coverity
      Prevent 4.5.
    
    * Fix Unix sockets path translation for some x86_64 systems.
    
    * Make the "kompat" extension (-k option) work again.
    
    * Fix spurious "can't delete /tmp/proot-$PID-XXXXX" messages.
    
  • proot-v2.4.0
    0e68e899 · Prepare release v2.4. ·
    Release v2.4
    ============
    
    New architectures
    -----------------
    
    * PRoot now works natively on Linux ARM64 systems (a.k.a AArch64).
      Note that PRoot/AArch64 doesn't support 32-bit binaries yet.
    
    * PRoot/x86_64 now supports x32 binaries/rootfs.
    
    Fixes
    -----
    
    * Paths from Unix domain sockets are now translated.  For example, it
      wasn't possible previously to use "tmux" in the guest rootfs if
      another instance were running in the host rootfs.
    
    * When a host path is bound to a nonexistent guest path, PRoot tries
      to create this latter in the guest rootfs, for some technical
      reasons.  Previously, this "dummy" guest path was created with RWX
      permissions but this might cause troubles when re-using the rootfs
      for other purpose.  Now, this "dummy" guest path is created with
      minimal permissions, and it is also possible to avoid its creation
      by defining the PROOT_DONT_POLLUTE_ROOTFS environment variable.
    
    Command-line interface changes
    ------------------------------
    
    * The directory "/run" is removed from the list of recommended
      bindings (-B option) because this creates to much conflicts with
      programs that write in the "/run/var" directory.
    
    * The -0 option now makes user's files appear as if they were actually
      owned by root, and it also fakes the success of any mode changes
      (chmod* syscalls).  This is typically useful to create packages
      where the files belong to the root user (it's almost always the
      case).
    
    Internal changes
    ----------------
    
    * PRoot should be even more portable now.  For instance, there's no
      need to worry about syscallee-saved registers anymore.
    
    Thanks
    ------
    
    This release was made possible thanks to, in no special order: Yvan
    Roux, Jerôme Audu, Heehooman, Yann Droneaud, and James Le Cuirot.  See
    "git log" for details.
    
    Validation
    ----------
    
    All the packages were built successfully on OBS.  The following tests
    were ran on Slackware64 14.0 (and "current-130312" for x32) with QEMU
    1.4.0.
    
    =====================  ===========  =================  ==================
    Guest distro           Options            Testsuite          Failures
    =====================  ===========  =================  ==================
    Slackware64 14.0                    PRoot-v2.4         OK
    Slackware64 14.0       memcheck     PRoot-v2.4         OK
    STLinux 2.4 SH4                     smoke tests        OK
    Ubuntu 10.10 ARM                    PRoot-v2.4         OK
    OpenEmbedded AArch64                smoke tests        OK
    Slackware64 14.0       -r /         Perl 5.16.1        OK  2/2189  [1]_
    Slackware64 14.0       -k 3.2.29    Perl 5.16.1        OK  2/2189  [1]_
    Slackware 14.0 i486    -B           Perl 5.16.1        OK  3/2188  [2]_
    Gentoo 20130130 x32    -B           Perl 5.16.1        OK  3/2188  [2]_
    Slackware 14.0 ARM     -Q qemu-arm  Perl 5.16.1        OK  3/2188  [2]_
    Slackware64 14.0       -r /         CoreUtils 8.19     OK  5/491   [3]_
    Slackware64 14.0       -k 3.2.29    CoreUtils 8.19     OK  5/491   [3]_
    Slackware 14.0 ARM     -Q qemu-arm  CoreUtils 8.19     OK  12/491  [4]_
    Slackware64 14.0       -r /         POSIX tests 1.5.1  OK  same as native
    Slackware 14.0 i486    -B           POSIX tests 1.5.1  OK  same as v2.3.1
    Slackware 14.0 ARM     -Q qemu-arm  POSIX tests 1.5.1  OK  same as v2.3.1
    =====================  ===========  =================  ==================
    
    .. [1] not a regression: cpan/File-Path/t/Path.t,
           dist/ExtUtils-Command/t/eu_command.t
    
    .. [2] not a regression: op/magic.t + [1]
    
    .. [3] not a regression: install/basic-1, mkdir/p-3, readlink/can-e,
           readlink/can-f, readlink/can-m
    
    .. [4] not a regression: misc/ls-misc, misc/printenv, split/fail,
           misc/stty, df/total-unprocessed, dd/skip-seek,
           dd/skip-seek-past-file, + [3]_
    
  • v2.4
    0e68e899 · Prepare release v2.4. ·
    Release v2.4
    ============
    
    New architectures
    -----------------
    
    * PRoot now works natively on Linux ARM64 systems (a.k.a AArch64).
      Note that PRoot/AArch64 doesn't support 32-bit binaries yet.
    
    * PRoot/x86_64 now supports x32 binaries/rootfs.
    
    Fixes
    -----
    
    * Paths from Unix domain sockets are now translated.  For example, it
      wasn't possible previously to use "tmux" in the guest rootfs if
      another instance were running in the host rootfs.
    
    * When a host path is bound to a nonexistent guest path, PRoot tries
      to create this latter in the guest rootfs, for some technical
      reasons.  Previously, this "dummy" guest path was created with RWX
      permissions but this might cause troubles when re-using the rootfs
      for other purpose.  Now, this "dummy" guest path is created with
      minimal permissions, and it is also possible to avoid its creation
      by defining the PROOT_DONT_POLLUTE_ROOTFS environment variable.
    
    Command-line interface changes
    ------------------------------
    
    * The directory "/run" is removed from the list of recommended
      bindings (-B option) because this creates to much conflicts with
      programs that write in the "/run/var" directory.
    
    * The -0 option now makes user's files appear as if they were actually
      owned by root, and it also fakes the success of any mode changes
      (chmod* syscalls).  This is typically useful to create packages
      where the files belong to the root user (it's almost always the
      case).
    
    Internal changes
    ----------------
    
    * PRoot should be even more portable now.  For instance, there's no
      need to worry about syscallee-saved registers anymore.
    
    Thanks
    ------
    
    This release was made possible thanks to, in no special order: Yvan
    Roux, Jerôme Audu, Heehooman, Yann Droneaud, and James Le Cuirot.  See
    "git log" for details.
    
    Validation
    ----------
    
    All the packages were built successfully on OBS.  The following tests
    were ran on Slackware64 14.0 (and "current-130312" for x32) with QEMU
    1.4.0.
    
    =====================  ===========  =================  ==================
    Guest distro           Options            Testsuite          Failures
    =====================  ===========  =================  ==================
    Slackware64 14.0                    PRoot-v2.4         OK
    Slackware64 14.0       memcheck     PRoot-v2.4         OK
    STLinux 2.4 SH4                     smoke tests        OK
    Ubuntu 10.10 ARM                    PRoot-v2.4         OK
    OpenEmbedded AArch64                smoke tests        OK
    Slackware64 14.0       -r /         Perl 5.16.1        OK  2/2189  [1]_
    Slackware64 14.0       -k 3.2.29    Perl 5.16.1        OK  2/2189  [1]_
    Slackware 14.0 i486    -B           Perl 5.16.1        OK  3/2188  [2]_
    Gentoo 20130130 x32    -B           Perl 5.16.1        OK  3/2188  [2]_
    Slackware 14.0 ARM     -Q qemu-arm  Perl 5.16.1        OK  3/2188  [2]_
    Slackware64 14.0       -r /         CoreUtils 8.19     OK  5/491   [3]_
    Slackware64 14.0       -k 3.2.29    CoreUtils 8.19     OK  5/491   [3]_
    Slackware 14.0 ARM     -Q qemu-arm  CoreUtils 8.19     OK  12/491  [4]_
    Slackware64 14.0       -r /         POSIX tests 1.5.1  OK  same as native
    Slackware 14.0 i486    -B           POSIX tests 1.5.1  OK  same as v2.3.1
    Slackware 14.0 ARM     -Q qemu-arm  POSIX tests 1.5.1  OK  same as v2.3.1
    =====================  ===========  =================  ==================
    
    .. [1] not a regression: cpan/File-Path/t/Path.t,
           dist/ExtUtils-Command/t/eu_command.t
    
    .. [2] not a regression: op/magic.t + [1]
    
    .. [3] not a regression: install/basic-1, mkdir/p-3, readlink/can-e,
           readlink/can-f, readlink/can-m
    
    .. [4] not a regression: misc/ls-misc, misc/printenv, split/fail,
           misc/stty, df/total-unprocessed, dd/skip-seek,
           dd/skip-seek-past-file, + [3]_
    
  • proot-v2.3.1
    fac5101d · Prepare release v2.3.1. ·
    Release v2.3.1
    ==============
    
    New feature
    -----------
    
    * The "fake id0" feature was improved by Rémi Duraffort in order to
      support privileged write operations in read-only files/directories.
      Some package managers (Fedora, Debian, ...) relies on this special
      behavior::
    
          # ls -ld /usr/lib
          dr-xr-xr-x 22 root root 40960 Jan  2 11:19 /usr/lib/
          # install -v something.so /usr/lib/
          removed ‘/usr/lib/something.so‘
          ‘something.so‘ -> ‘/usr/lib/something.so‘
    
    Fixes
    -----
    
    * Fix bindings to a guest path that contains a symbolic link.  For
      example when the given guest path ``/var/run/dbus`` is a symbolic
      link to ``/run/dbus``.
    
    * Fix a memory corruption when accessing files in "/proc/self/"
    
    Special thanks to Rémi Duraffort for the improved "fake id0" feature
    and for the bug reports.
    
  • v2.3.1
    fac5101d · Prepare release v2.3.1. ·
    Release v2.3.1
    ==============
    
    New feature
    -----------
    
    * The "fake id0" feature was improved by Rémi Duraffort in order to
      support privileged write operations in read-only files/directories.
      Some package managers (Fedora, Debian, ...) relies on this special
      behavior::
    
          # ls -ld /usr/lib
          dr-xr-xr-x 22 root root 40960 Jan  2 11:19 /usr/lib/
          # install -v something.so /usr/lib/
          removed ‘/usr/lib/something.so‘
          ‘something.so‘ -> ‘/usr/lib/something.so‘
    
    Fixes
    -----
    
    * Fix bindings to a guest path that contains a symbolic link.  For
      example when the given guest path ``/var/run/dbus`` is a symbolic
      link to ``/run/dbus``.
    
    * Fix a memory corruption when accessing files in "/proc/self/"
    
    Special thanks to Rémi Duraffort for the improved "fake id0" feature
    and for the bug reports.
    
  • proot-v2.3.0
    Release v2.3
    ============
    
    This release is intended more specifically to developers and advanced
    users, it was mostly driven by the requirements of an internal
    STMicroelectronics project named "Auto-Tuning Optimization Service".
    
    New features
    ------------
    
    * There's now an extension mechanism in PRoot that allows developers
      to add their own features and/or to use PRoot as a Linux process
      instrumentation engine.  The two following old features were moved
      to this new extension interface: "-k *string*" and "-0"
      (respectively: set the kernel release and compatibility level to
      *string*"; and force some syscalls to behave as if executed by
      "root").
    
    * It is now possible to execute PRoot under PRoot, well somewhat.
      Actually the initial instance of PRoot detects that it is being
      called again and recomputes the configuration for the new process
      tree.  This feature is still experimental and was way harder to
      implement than expected, however it was worth the effort since it
      enforced the consistency in PRoot.  Just one example among many, in
      PRoot the "chroot" feature is now really equivalent to the
      "mount/bind" one, that is, ``chroot path/to/rootfs`` is similar to
      ``mount --bind path/to/rootfs /``.
    
    * The "current working directory" (chdir(2), getcwd(2), ...) is now
      fully emulated by PRoot.  Sadly a minor regression was introduced:
      even if the current working directory has been removed, getcwd(2)
      returns a "correct" value.  This should be fixed in the next
      release.
    
    Command-line interface changes
    ------------------------------
    
    * The message "proot info: started/exited" isn't printed by default
      anymore since it might introduce noise when PRoot is used inside a
      test-suite that compares outputs.  This message was initially added
      to know whether the guest program has exited immediately.
    
    * The "-u" and "-W" options have disappeared.  The former wasn't
      really useful and the latter was definitely useless since the
      default "current working directory" is "." since v2.1, that means
      the three examples below are equivalent ("-W" was just an alias to
      "-b . -w .")::
    
          proot -b . [...]
          proot -b . -w . [...]
          proot -W [...]
    
    Fixes
    -----
    
    * The option ``-w .`` is now really equivalent to ``-w $PWD``.
    
    * A bug almost impossible to describe here has been fixed, it appeared
      only when specifying relative bindings, for instance: ``-b .``.
    
    Internal changes
    ----------------
    
    * PRoot now relies on Talloc: a hierarchical, reference counted memory
      pool system with destructors.  It is the core memory allocator used
      in Samba: http://talloc.samba.org.  This is definitely a worthwhile
      dependency for the sake of development scalability and
      debuggability.  For example, PRoot now has an explicit garbage
      collector (c.f. ``tracee->ctx``), and the full dynamic memory
      hierarchy can be printed by sending the USR1 signal to PRoot::
    
          native-shell$ proot --mount=$HOME --mount=/proc --rootfs=./slackware-14/
          prooted-shell$ kill -s USR1 $(grep Tracer /proc/self/status | cut -f 2)
    
          Tracee           0x6150c0  768 bytes  0 ref'    (pid = 22495)
              talloc_new: ./tracee/tracee.c:97 0x615420  0 bytes  0 ref'
              $exe             0x61bef0  10 bytes  0 ref'     ("/bin/bash")
              @cmdline         0x61bf60  16 bytes  0 ref'     ("/bin/sh", )
                  /bin/sh          0x61bfd0  8 bytes  0 ref'
              $glue            0x61bae0  24 bytes  0 ref'     ("/tmp/proot-22494-UfGAPh")
              FileSystemNameSpace 0x615480  32 bytes  0 ref'
                  $cwd             0x61b880  13 bytes  0 ref'     ("/home/cedric")
                  Bindings         0x61b970  16 bytes  0 ref'     (host)
                      Binding          0x615570  8280 bytes  1 ref'   (/home/cedric:/home/cedric)
                      Binding          0x6176a0  8280 bytes  1 ref'   (/proc:/proc)
                      Binding          0x6197d0  8280 bytes  1 ref'   (/usr/local/proot/slackware-14:/)
                  Bindings         0x61b900  16 bytes  0 ref'     (guest)
                      Binding          -> 0x6176a0
                      Binding          -> 0x615570
                      Binding          -> 0x6197d0
    
  • v2.3
    Release v2.3
    ============
    
    This release is intended more specifically to developers and advanced
    users, it was mostly driven by the requirements of an internal
    STMicroelectronics project named "Auto-Tuning Optimization Service".
    
    New features
    ------------
    
    * There's now an extension mechanism in PRoot that allows developers
      to add their own features and/or to use PRoot as a Linux process
      instrumentation engine.  The two following old features were moved
      to this new extension interface: "-k *string*" and "-0"
      (respectively: set the kernel release and compatibility level to
      *string*"; and force some syscalls to behave as if executed by
      "root").
    
    * It is now possible to execute PRoot under PRoot, well somewhat.
      Actually the initial instance of PRoot detects that it is being
      called again and recomputes the configuration for the new process
      tree.  This feature is still experimental and was way harder to
      implement than expected, however it was worth the effort since it
      enforced the consistency in PRoot.  Just one example among many, in
      PRoot the "chroot" feature is now really equivalent to the
      "mount/bind" one, that is, ``chroot path/to/rootfs`` is similar to
      ``mount --bind path/to/rootfs /``.
    
    * The "current working directory" (chdir(2), getcwd(2), ...) is now
      fully emulated by PRoot.  Sadly a minor regression was introduced:
      even if the current working directory has been removed, getcwd(2)
      returns a "correct" value.  This should be fixed in the next
      release.
    
    Command-line interface changes
    ------------------------------
    
    * The message "proot info: started/exited" isn't printed by default
      anymore since it might introduce noise when PRoot is used inside a
      test-suite that compares outputs.  This message was initially added
      to know whether the guest program has exited immediately.
    
    * The "-u" and "-W" options have disappeared.  The former wasn't
      really useful and the latter was definitely useless since the
      default "current working directory" is "." since v2.1, that means
      the three examples below are equivalent ("-W" was just an alias to
      "-b . -w .")::
    
          proot -b . [...]
          proot -b . -w . [...]
          proot -W [...]
    
    Fixes
    -----
    
    * The option ``-w .`` is now really equivalent to ``-w $PWD``.
    
    * A bug almost impossible to describe here has been fixed, it appeared
      only when specifying relative bindings, for instance: ``-b .``.
    
    Internal changes
    ----------------
    
    * PRoot now relies on Talloc: a hierarchical, reference counted memory
      pool system with destructors.  It is the core memory allocator used
      in Samba: http://talloc.samba.org.  This is definitely a worthwhile
      dependency for the sake of development scalability and
      debuggability.  For example, PRoot now has an explicit garbage
      collector (c.f. ``tracee->ctx``), and the full dynamic memory
      hierarchy can be printed by sending the USR1 signal to PRoot::
    
          native-shell$ proot --mount=$HOME --mount=/proc --rootfs=./slackware-14/
          prooted-shell$ kill -s USR1 $(grep Tracer /proc/self/status | cut -f 2)
    
          Tracee           0x6150c0  768 bytes  0 ref'    (pid = 22495)
              talloc_new: ./tracee/tracee.c:97 0x615420  0 bytes  0 ref'
              $exe             0x61bef0  10 bytes  0 ref'     ("/bin/bash")
              @cmdline         0x61bf60  16 bytes  0 ref'     ("/bin/sh", )
                  /bin/sh          0x61bfd0  8 bytes  0 ref'
              $glue            0x61bae0  24 bytes  0 ref'     ("/tmp/proot-22494-UfGAPh")
              FileSystemNameSpace 0x615480  32 bytes  0 ref'
                  $cwd             0x61b880  13 bytes  0 ref'     ("/home/cedric")
                  Bindings         0x61b970  16 bytes  0 ref'     (host)
                      Binding          0x615570  8280 bytes  1 ref'   (/home/cedric:/home/cedric)
                      Binding          0x6176a0  8280 bytes  1 ref'   (/proc:/proc)
                      Binding          0x6197d0  8280 bytes  1 ref'   (/usr/local/proot/slackware-14:/)
                  Bindings         0x61b900  16 bytes  0 ref'     (guest)
                      Binding          -> 0x6176a0
                      Binding          -> 0x615570
                      Binding          -> 0x6197d0
    
  • proot-v2.2.0
    35e40ebd · Prepare release v2.2. ·
    Release v2.2
    ============
    
    * This release brings some critical fixes so an upgrade is highly
      recommended, especially on x86_64 and Ubuntu.
    
    * PRoot is now a lot faster: the speed-up can be up to 50% depending
      on the kind of application.
    
    * PRoot can now mount/bind files anywhere in the guest rootfs, even if
      the mount point has no parent directory (and/or can't be created).
      With previous versions of PRoot, that would created kinda black hole
      in the filesystem hierarchy that might bug some programs like "cpio"
      or "rpm".
    
      For example, with the previous version of PRoot::
    
           $ proot -b /etc/motd:/black/holes/and/revelations
           proot warning: can't create the guest path (binding) ...
           proot info: started
    
           $ find /black
           find: `/black: No such file or directory
    
           $ cat /black/holes/and/revelations
           Time has come to make things right -- Matthew Bellamy
    
      And now::
    
           $ proot -b /etc/motd:/black/holes/and/revelations
           proot info: started
    
           $ find /black
           /black
           /black/holes
           /black/holes/and
           /black/holes/and/revelations
    
           $ cat /black/holes/and/revelations
           Time has come to make things right -- Matthew Bellamy
    
    * "/run" was added to the list of recommended bindings (-B/-Q).
    
    * SH4 and ARM architectures are now officially supported.
    
    Thanks
    ------
    
    Huge thanks to Rémi DURAFFORT for all the tests, bug reports, fixes,
    and for hosting http://proot.me.
    
    Thanks to Thomas P. HIGDON for the advanced investigation on a really
    tricky bug (red zone corruption).
    
  • v2.2
    35e40ebd · Prepare release v2.2. ·
    Release v2.2
    ============
    
    * This release brings some critical fixes so an upgrade is highly
      recommended, especially on x86_64 and Ubuntu.
    
    * PRoot is now a lot faster: the speed-up can be up to 50% depending
      on the kind of application.
    
    * PRoot can now mount/bind files anywhere in the guest rootfs, even if
      the mount point has no parent directory (and/or can't be created).
      With previous versions of PRoot, that would created kinda black hole
      in the filesystem hierarchy that might bug some programs like "cpio"
      or "rpm".
    
      For example, with the previous version of PRoot::
    
           $ proot -b /etc/motd:/black/holes/and/revelations
           proot warning: can't create the guest path (binding) ...
           proot info: started
    
           $ find /black
           find: `/black: No such file or directory
    
           $ cat /black/holes/and/revelations
           Time has come to make things right -- Matthew Bellamy
    
      And now::
    
           $ proot -b /etc/motd:/black/holes/and/revelations
           proot info: started
    
           $ find /black
           /black
           /black/holes
           /black/holes/and
           /black/holes/and/revelations
    
           $ cat /black/holes/and/revelations
           Time has come to make things right -- Matthew Bellamy
    
    * "/run" was added to the list of recommended bindings (-B/-Q).
    
    * SH4 and ARM architectures are now officially supported.
    
    Thanks
    ------
    
    Huge thanks to Rémi DURAFFORT for all the tests, bug reports, fixes,
    and for hosting http://proot.me.
    
    Thanks to Thomas P. HIGDON for the advanced investigation on a really
    tricky bug (red zone corruption).