Initial commit: 0.4.3.0 from hackage
[harpy.git] / NEWS
1                                                         -*-outline-*-
2 * Harpy NEWS
3
4 ** New in version 0.4.2
5
6 *** package structure
7
8 - The disassembler is now in a separate package, and is re-exported for
9   compatibility by Harpy. This allows us to give the more liberal BSD licence
10   to the disassembler.
11
12 *** New instructions
13
14 - The "mov", "jcc" (jump on condition code), and "cmp" instructions support
15   "Ptr a" as operand
16
17 - Henning Thielemann provided some further floating point and SSE
18   instructions.
19
20 - The loop instruction supports labels now.
21
22 *** Enhancements
23
24 - The disassembly of Harpy's internal code buffers includes all labels
25   now, even when multiple labels are defined for the same location.
26
27 ** New in version 0.4.1
28
29 *** New Instances
30
31 - Many of Harpy's types are now instances of Eq.
32
33 *** New instructions
34
35 - Added support for the prefetching instructions PREFETCH0, PREFETCH1,
36   PREFETCH2 and PREFETCHNTA.
37
38 *** Bug fixes
39
40 - Harpy.X86Disassembler.disassembleBloc was too strict and caused
41   stack overflows for large inputs.  This was fixed.
42
43 - Disassembler: The instruction prefix list was not cleared when
44   beginning to parse a new instruction.  This caused incorrect
45   disassembly of SSE instructions.
46
47 - Disassembler: A bug has been fixed in the parsing routine for the
48   addressing mode "scaled index + 32 bit offset" without base
49   register.
50
51 ** New in version 0.4
52
53 - New convenience top-level module "Harpy", which re-exports
54   Harpy.CodeGenMonad, Harpy.Call and Harpy.X86Assembler
55
56 - It is now possible to override Harpy's automatic code buffer
57   management.  The new field 'customCodeBuffer' in the type
58   'CodeGenConfig' can be set to 'Just (buf, size)', where 'buf' is a
59   pointer to a memory region of 'size' bytes.  Harpy will then use the
60   supplied code buffer and will not perform any automatic code buffer
61   allocation on overflow.  Overflow checking is still performed and
62   will result in an exception in the CodeGen monad.
63
64 - When using the high-level assembler in X86Assembler, the code buffer
65   is automatically protected from overflow.
66
67 - Floating point operations added to X86Assembler (only for double
68   operands yet).
69
70 - Preliminary support for SSE instructions.  Currently, only the
71   packed and scalar floating-point arithmetic operations are supported
72   (both in the low-level module Harpy.X86CodeGen and as methods in
73   Harpy.X86Assembler)
74
75 - Code buffer default size has been increased from 128 to 4096 bytes.
76
77 - The CodeGenMonad fails when a label is defined twice.
78
79 - It is now possible to associate names with labels, using the new
80   operation newNamedLabel.  The given names will show up in the
81   disassembly, which makes debugging of generated code much easier.
82
83 - The doc directory contains a second, slightly larger tutorial now.
84
85 - The examples/evaluator directory contains a small example
86   interpreter for arithmetic expressions, which translates expressions
87   entered at the keayboard to machine code on the fly.  This is the
88   demo program we presented at the Haskell Workshop 2007.
89
90 ** New in version 0.2
91
92 - Everything is new!  This is the first released version.
93