Blame RELEASE

Packit a43c12
0.4.27
Packit a43c12
======
Packit a43c12
Packit a43c12
  - sse: preserve non volatile sse registers, needed for MSVC (Matej Knopp)
Packit a43c12
  - x86: don't hard-code register size to zero in orc_x86_emit_*() functions (Igor Rondarev)
Packit a43c12
  - Fix incorrect asm generation on 64-bit Windows when building with MSVC (Jan Schmidt)
Packit a43c12
  - Support build using the Meson build system (Nirbheek Chauhan, Tim-Philipp Müller)
Packit a43c12
Packit a43c12
0.4.26
Packit a43c12
======
Packit a43c12
Packit a43c12
  - Use 64 bit arithmetic to increment the stride if needed (Wim Taymans)
Packit a43c12
  - Fix generation of ModR/M / SIB bytes for the EBP, R12, R13 registers
Packit a43c12
    on X86/X86-64 (Sebastian Dröge)
Packit a43c12
  - Fix test_parse unit test if no executable backend is available (Pascal Terjan)
Packit a43c12
  - Add orc-test path to the -uninstalled .pc file (Josep Torra)
Packit a43c12
  - Fix compiler warnings in the tests on OS X (Josep Torra)
Packit a43c12
Packit a43c12
0.4.25
Packit a43c12
======
Packit a43c12
Packit a43c12
  - compiler: also prefer the backup function when no target, instead
Packit a43c12
    of trying to use emulation which is usually slower (Wim Taymans)
Packit a43c12
  - executor: fix load of parameters smaller than 64 bits, fixing crashes
Packit a43c12
    on ldresnearb and friends in emulated code (Wim Taymans)
Packit a43c12
  - test-limits: improve test without target (Wim Taymans)
Packit a43c12
  - Only check for Android's liblog on Android targets, so we don't accidentally
Packit a43c12
    pick up another liblog that may exist elsewhere (Sebastian Dröge)
Packit a43c12
  - Don't require libtool for uninstalled setups (-uninstalled pkg-config file)
Packit a43c12
    (Julien Isorce)
Packit a43c12
  - Make -Bsymbolic check in configure work with clang (Koop Mast)
Packit a43c12
  - Coverity code analyser fixes (Luis de Bethencourt)
Packit a43c12
  - docs: update generated opcode tables
Packit a43c12
  - add orc_version_string() function and make orcc check the liborc that is
Packit a43c12
    being picked up to make sure the right lib is being used (Tim-Philipp Müller)
Packit a43c12
Packit a43c12
0.4.24
Packit a43c12
======
Packit a43c12
Packit a43c12
  - Only reuse constants of the same size and value (Wim Taymans)
Packit a43c12
  - Fix reading of .orc files with Windows line endings on
Packit a43c12
    Windows (Tim-Philipp Müller)
Packit a43c12
  - Fix out of bounds array access in the tests (Luis de Bethencourt)
Packit a43c12
  - Remove duplicate code path in orcc (Edward Hervey)
Packit a43c12
  - Put a limit to the memcpy test (Edward Hervey)
Packit a43c12
  - Fix mmap leak on error path (Vincent Penquerc'h)
Packit a43c12
Packit a43c12
0.4.23
Packit a43c12
======
Packit a43c12
Packit a43c12
  - Various improvements to the NEON backend to bring it closer to the SSE
Packit a43c12
    backend (Wim Waymans)
Packit a43c12
  - Add support for setting a custom backup function (Wim Taymans)
Packit a43c12
  - Preserve NEON/VFP registers across subroutines (Jerome Laheurte)
Packit a43c12
  - Fix 64 bit parameter loading on big-endian systems (Tim-Philipp Müller)
Packit a43c12
  - Improved implementations for various opcodes (Wim Taymans)
Packit a43c12
  - Various improvements and fixes to constants handling (Wim Taymans)
Packit a43c12
  - Avoid some undefined operations on signed integers (Wim Taymans)
Packit a43c12
  - Prefer user specific directories over global ones for intermediate files
Packit a43c12
    to prevent name collisions (Fabian Deutsch)
Packit a43c12
Packit a43c12
0.4.22
Packit a43c12
======
Packit a43c12
Packit a43c12
Maintenance release:
Packit a43c12
Packit a43c12
  - Handle NOCONFIGURE=1 in autogen.sh (Colin Walters)
Packit a43c12
  - Some memory leak fixes in the compiler (Sebastian Dröge, Thiago Santos)
Packit a43c12
  - Fixes for compiler warnings on Win64 (Edward Hervey)
Packit a43c12
  - Properly detect CPU features on Android in non-debug build (Jan Schmidt)
Packit a43c12
  - Use Android logging system instead of stderr for debug output (Jan Schmidt)
Packit a43c12
Packit a43c12
0.4.21
Packit a43c12
======
Packit a43c12
Packit a43c12
Maintenance release:
Packit a43c12
Packit a43c12
  - Add libtool versioning to the linker flags again. This was accidentially
Packit a43c12
    removed in 0.4.20 but should not cause any problems on platforms other
Packit a43c12
    than OS X (Sebastian Dröge)
Packit a43c12
Packit a43c12
Packit a43c12
0.4.20
Packit a43c12
======
Packit a43c12
Packit a43c12
Maintenance release:
Packit a43c12
Packit a43c12
  - Fix list corruption when splitting code memory chunks, causing crashes
Packit a43c12
    when allocating a lot of code memory and trying to free it later
Packit a43c12
    (Tim-Philipp Müller)
Packit a43c12
  - Add some extra checks for the number of variables used in ORC code to
Packit a43c12
    prevent overflows and crashes in the compiler (Vincent Penquerc'h)
Packit a43c12
  - Various compiler warnings, coverity warnings and static code analysis
Packit a43c12
    fixes (Sebastian Dröge)
Packit a43c12
Packit a43c12
0.4.19
Packit a43c12
======
Packit a43c12
Packit a43c12
Maintenance release:
Packit a43c12
Packit a43c12
  - Fix out-of-tree builds (Edward Hervey)
Packit a43c12
  - Fix many memory leaks, compiler warnings and coverity warnings (Tim-Philipp Müller,
Packit a43c12
    Olivier Crête, Todd Agulnick, Sebastian Dröge, Vincent Penquerc'h, Edward Hervey)
Packit a43c12
  - Documentation fix for mulhsw, mulhuw (William Manley)
Packit a43c12
Packit a43c12
0.4.18
Packit a43c12
======
Packit a43c12
Packit a43c12
Maintenance release:
Packit a43c12
Packit a43c12
 - Important bugfix in reading constants from bytecode. (Tim-Philipp Müller
Packit a43c12
   and Sebastian Dröge)
Packit a43c12
 - Documentation and code cleanup (Stefan Sauer)
Packit a43c12
 - Fix cache flushing on iOS (Andoni Morales Alastruey)
Packit a43c12
Packit a43c12
Packit a43c12
0.4.17
Packit a43c12
======
Packit a43c12
Packit a43c12
Maintenance release:
Packit a43c12
Packit a43c12
 - Merged known distro patches.
Packit a43c12
 - Added MIPS backend (Guillaume Emont).
Packit a43c12
 - Disabled ARM backend because of poor coverage.
Packit a43c12
 - Added bytecode parsing and writing.  This can be used instead of
Packit a43c12
   manual creation of OrcPrograms.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.16
Packit a43c12
======
Packit a43c12
Packit a43c12
Fix a few bugs people noticed in 0.4.15.
Packit a43c12
Packit a43c12
 - orc_init() tried to take the same mutex as generated C code that
Packit a43c12
   calls (indirectly) orc_init().
Packit a43c12
 - sse: Fixes for 64 bit pointers with any of the upper 32 bits set.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.15
Packit a43c12
======
Packit a43c12
Packit a43c12
This should have been release much earlier.
Packit a43c12
Packit a43c12
 - Protect global resources with mutexes.  Duh.  This solves a bunch
Packit a43c12
   of bug reports.
Packit a43c12
 - Restore c64x-c backend.  Untested.
Packit a43c12
 - Convert MMX and SSE backends to a new instruction scheduler.
Packit a43c12
 - Add alignment and size hints to parser.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.14
Packit a43c12
======
Packit a43c12
Packit a43c12
Yet more bug fixing.  Altivec should work again, OS/X should
Packit a43c12
work again.  MMX should work again.  Another codegen bug on
Packit a43c12
SSE fixed.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.13
Packit a43c12
======
Packit a43c12
Packit a43c12
Fixes two serious code generation bugs in 0.4.12 on SSE and
Packit a43c12
Altivec.  Also added some compatibility code to mitigate
Packit a43c12
the previous automatic inclusion of stdint.h.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.12
Packit a43c12
======
Packit a43c12
Packit a43c12
This is primarily a bug fixing release.
Packit a43c12
Packit a43c12
 - Fix gcc-4.6 warnings in generated code
Packit a43c12
 - Codegen fixes for Altivec.  Passes regression tests again.
Packit a43c12
 - More error checking for code allocation.
Packit a43c12
 - NEON: floating point improvements
Packit a43c12
 - Removed stdint.h from API.  This could theoretically cause
Packit a43c12
   breakage if you depended on orc to include stdint.h.
Packit a43c12
Packit a43c12
One new feature is the OrcCode structure, which keeps track of
Packit a43c12
compiled code.  This now allows applications to free unused code.
Packit a43c12
Packit a43c12
Internally, x86 code generation was completely refactored to add
Packit a43c12
an intermediate stage, which will later be used for instruction
Packit a43c12
reordering.  None of this is useful yet.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.11
Packit a43c12
======
Packit a43c12
Packit a43c12
This is primarily a bug fixing release.
Packit a43c12
Packit a43c12
 - Fixes for CPUs that don't have backends
Packit a43c12
 - Fix loading of double parameters
Packit a43c12
 - mmx: Fix 64-bit parameter loading
Packit a43c12
 - sse/mmx: Fix x2/x4 with certain opcodes
Packit a43c12
Packit a43c12
There are still some issues with the ARM backend on certain
Packit a43c12
architecture levels (especially ARMv6).  Some assistance from
Packit a43c12
a user with access to such hardware would be useful.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.10
Packit a43c12
======
Packit a43c12
Packit a43c12
Changes:
Packit a43c12
Packit a43c12
 - Added several simple 64-bit opcodes
Packit a43c12
 - Improved debugging by adding ORC_CODE=emulate
Packit a43c12
 - Allocation of mmap'd areas for code now has several fallback
Packit a43c12
   methods, in order to placate various SELinux configurations.
Packit a43c12
 - Various speed improvements in SSE backend
Packit a43c12
 - Add SSE implementations of ldreslinl and ldresnearl.
Packit a43c12
 - Update Mersenne Twister example
Packit a43c12
Packit a43c12
There was a bug in the calculation of maximum loop shift that, when
Packit a43c12
fixed, increases the speed of certain functions by a factor of two.
Packit a43c12
However, the fix also triggers a bug in Schroedinger, which is fixed
Packit a43c12
in the 1.0.10 release.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.9
Packit a43c12
=====
Packit a43c12
Packit a43c12
This is primarily a bug fixing release.
Packit a43c12
Packit a43c12
Changes:
Packit a43c12
Packit a43c12
 - Added handling for 64-bit constants
Packit a43c12
 - Fix building and use of static library
Packit a43c12
 - Fix register allocation on Win64 (still partly broken, however)
Packit a43c12
 - Quiet some non-errors printed by orcc in 0.4.8.
Packit a43c12
 - Fix implementation of several opcodes.
Packit a43c12
Packit a43c12
Until this release, the shared libraries all had the same versioning
Packit a43c12
information.  This should be fixed going forward.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.8
Packit a43c12
=====
Packit a43c12
Packit a43c12
Changes:
Packit a43c12
Packit a43c12
 - Fix Windows and OS/X builds
Packit a43c12
 - Improve behavior in failure cases
Packit a43c12
 - Major improvements for Altivec backend
Packit a43c12
 - Significant documentation additions
Packit a43c12
Packit a43c12
Memory for executable code storage is now handled in a much more
Packit a43c12
controlled manner, and it's now possible to reclaim this memory
Packit a43c12
after it's no longer needed.
Packit a43c12
Packit a43c12
A few more 64-bit opcodes have been added, mostly related to
Packit a43c12
arithmetic on floating point values.
Packit a43c12
Packit a43c12
The orcc tool now handles 64-bit and floating point parameters
Packit a43c12
and constants.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.7
Packit a43c12
=====
Packit a43c12
Packit a43c12
Changes:
Packit a43c12
Packit a43c12
 - Lots of specialized new opcodes and opcode prefixes.
Packit a43c12
 - Important fixes for ARM backend
Packit a43c12
 - Improved emulation of programs (much faster)
Packit a43c12
 - Implemented fallback rules for almost all opcodes for
Packit a43c12
   SSE and NEON backends
Packit a43c12
 - Performance improvements for SSE and NEON backends.
Packit a43c12
 - Many fixes to make larger programs compile properly.
Packit a43c12
 - 64-bit data types are now fully implemented, although
Packit a43c12
   there are few operations on them.
Packit a43c12
Packit a43c12
Loads and stores are now handled by separate opcodes (loadb,
Packit a43c12
storeb, etc).  For compatibility, these are automatically
Packit a43c12
included where necessary.  This allowed new specialized
Packit a43c12
loading opcodes, for example, resampling a source array
Packit a43c12
for use in scaling images.
Packit a43c12
Packit a43c12
Opcodes may now be prefixed by "x2" or "x4", indicating that
Packit a43c12
a operation should be done on 2 or 4 parts of a proportionally
Packit a43c12
larger value.  For example, "x4 addusb" performs 4 saturated
Packit a43c12
unsigned additions on each of the four bytes of 32-bit
Packit a43c12
quantities.  This is useful in pixel operations.
Packit a43c12
Packit a43c12
The MMX backend is now (semi-) automatically generated from
Packit a43c12
the SSE backend.
Packit a43c12
Packit a43c12
The orcc tool has a new option "--inline", which creates inline
Packit a43c12
versions of the Orc stub functions.  The orcc tool also recognizes
Packit a43c12
a new directive '.init', which instructs the compiler to generate
Packit a43c12
an initialization function, which when called at application init
Packit a43c12
time, compiles all the generated functions.  This allows the
Packit a43c12
generated stub functions to avoid checking if the function has
Packit a43c12
already been compiled.  The use of these two features can
Packit a43c12
dramatically decrease the cost of calling Orc functions.
Packit a43c12
Packit a43c12
Known Bugs: Orc generates code that crashes on 64-bit OS/X.
Packit a43c12
Packit a43c12
Plans for 0.4.8: (was 2.5 for 4 this time around, not too bad!)
Packit a43c12
Document all the new features in 0.4.7.  Instruction scheduler.
Packit a43c12
Code and API cleanup.
Packit a43c12
Packit a43c12
Packit a43c12
Packit a43c12
0.4.6
Packit a43c12
=====
Packit a43c12
Packit a43c12
Changes:
Packit a43c12
Packit a43c12
 - Various fixes to make Orc more portable
Packit a43c12
 - Major performance improvements to NEON backend
Packit a43c12
 - Minor performance improvements to SSE backend
Packit a43c12
 - Major improvements to ARM backend, now passes regression
Packit a43c12
   tests.
Packit a43c12
Packit a43c12
The defaults for floating point operations have been changed
Packit a43c12
somewhat: NANs are handled more like the IEEE 754 standard,
Packit a43c12
and denormals in operations are treated as zeros.  The NAN
Packit a43c12
changes causes certain SSE operations to be slightly slower,
Packit a43c12
but produce less surprising results.  Treating denormals as
Packit a43c12
zero has effects ranging from "slightly faster" to "now possible".
Packit a43c12
Packit a43c12
New tool: orc-bugreport.  Mainly this is to provide a limited
Packit a43c12
testing tool in the field, especially for embedded targets
Packit a43c12
which would not have access to the testsuite that is not
Packit a43c12
installed.
Packit a43c12
Packit a43c12
The environment variable ORC_CODE can now be used to adjust
Packit a43c12
some code generation.  See orc-bugreport --help for details.
Packit a43c12
Packit a43c12
orcc has a new option to generate code that is compatible
Packit a43c12
with older versions of Orc.  For example, if your software
Packit a43c12
package only uses 0.4.5 features, you can use --compat 0.4.5
Packit a43c12
to generate code that run on 0.4.5, otherwise it may generate
Packit a43c12
code that requires 0.4.6.  Useful for generating source code
Packit a43c12
for distribution.
Packit a43c12
Packit a43c12
New NEON detection relies on Linux 2.6.29 or later.
Packit a43c12
Packit a43c12
Plans for 0.4.7: (not that past predictions have been at all
Packit a43c12
accurate) New opcodes for FIR filtering, scaling and compositing
Packit a43c12
of images and video.  Instruction scheduler, helpful for non-OOO
Packit a43c12
CPUs.  Minor SSE/NEON improvements.  Orcc generation of inline
Packit a43c12
macros.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.5
Packit a43c12
=====
Packit a43c12
Packit a43c12
This release contains many small improvements related to
Packit a43c12
converting GStreamer from liboil to Orc.
Packit a43c12
Packit a43c12
The major addition in this release is the mainstreaming of
Packit a43c12
the NEON backend, made possible by Nokia.
Packit a43c12
Packit a43c12
There is a new experimental option to ./configure,
Packit a43c12
--enable-backend, which allows you to choose a single code
Packit a43c12
generation backend to include in the library.  This is mostly
Packit a43c12
useful for embedded systems, and is not recommended in general.
Packit a43c12
Packit a43c12
The upcoming release will focus on improving code generation
Packit a43c12
for the SSE and NEON backends.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.4
Packit a43c12
=====
Packit a43c12
Packit a43c12
This is almost entirely a cleanup and bug fix release.
Packit a43c12
Packit a43c12
 - fix register copying on x86-64
Packit a43c12
 - better checking for partial test failures
Packit a43c12
 - fix documention build
Packit a43c12
 - fix build on many systems I don't personally use
Packit a43c12
 - various fixes to build/run on Win64 (Ramiro Polla)
Packit a43c12
 - add performance tests
Packit a43c12
Packit a43c12
Next release will merge in the new pixel compositing opcodes
Packit a43c12
and the SSE instruction scheduler.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.3
Packit a43c12
=====
Packit a43c12
Packit a43c12
New opcodes: all the 32-bit float opcodes from the orc-float
Packit a43c12
library have been moved into the core library.
Packit a43c12
Packit a43c12
New opcodes: splitlw and splitwb, which are equivalent to
Packit a43c12
select0lw, select1lw, select0wb, and select1wb, except that
Packit a43c12
the new opcodes split a value into two destinations in one
Packit a43c12
opcode.
Packit a43c12
Packit a43c12
New backend: c64x-c, for the TI C64x+ DSP.  This backend only
Packit a43c12
produces source code, unlike other backends which can produce
Packit a43c12
both source and binary code.  Generating code for this backend
Packit a43c12
can be done using 'orcc --assembly --target=c64x-c'.
Packit a43c12
Packit a43c12
Orc now understands and can generate code for two-dimensional
Packit a43c12
arrays.  If the size of the array is known at compile time,
Packit a43c12
this information can be used to improve generated code.
Packit a43c12
Packit a43c12
Various improvements to the ARM backend by Wim Taymans.  The
Packit a43c12
ARM backend is still experimental.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.2
Packit a43c12
=====
Packit a43c12
Packit a43c12
Bug fixes to C backend.  Turns out this is rather important on
Packit a43c12
CPUs that don't have a native backend.
Packit a43c12
Packit a43c12
New features have been postponed to 0.4.3.
Packit a43c12
Packit a43c12
Packit a43c12
0.4.1
Packit a43c12
=====
Packit a43c12
Packit a43c12
This release introduces the orcc program, which parses .orc files and
Packit a43c12
outputs C source files to compile into a library or application.  The
Packit a43c12
main source file implements the functions described by the .orc source
Packit a43c12
code, by creating Orc programs and compiling them at runtime.  Another
Packit a43c12
source file that it outputs is a test program that can be compiled and
Packit a43c12
run to determine if Orc is generating code correctly.  In future
Packit a43c12
releases, the orcc tool will be expanded to output assembly code, as
Packit a43c12
well as make it easier to use Orc in a variety of ways.
Packit a43c12
Packit a43c12
Much of Schroedinger and GStreamer have been converted to use Orc
Packit a43c12
instead of liboil, as well as converting code that wasn't able to
Packit a43c12
use liboil.  To enable this in Schroedinger, use the --enable-orc
Packit a43c12
configure option.  The GStreamer changes are in the orc branch in
Packit a43c12
the repository at http://cgit.freedesktop.org/~ds/gstreamer
Packit a43c12
Packit a43c12
Scheduled changes for 0.4.2 include a 2-D array mode for converting
Packit a43c12
the remaining liboil functions used in Schroedinger and GStreamer.
Packit a43c12
Packit a43c12
Packit a43c12
Major changes:
Packit a43c12
Packit a43c12
 - Add the orcc compiler.  Generates C code that creates Orc programs
Packit a43c12
   from .orc source files.
Packit a43c12
 - Improved testing
Packit a43c12
 - Fixes in the C backend
Packit a43c12
 - Fix the MMX backend to emit 'emms' instructions.
Packit a43c12
 - Add a few rules to the SSE backend.
Packit a43c12
Packit a43c12
Packit a43c12
Packit a43c12
0.4.0
Packit a43c12
=====
Packit a43c12
Packit a43c12
Stuff happened.
Packit a43c12