Skip to content

Commit e5eaeae

Browse files
committed
Update ANNOUNCE.
1 parent 9d790b4 commit e5eaeae

File tree

2 files changed

+98
-70
lines changed

2 files changed

+98
-70
lines changed

ANNOUNCE

Lines changed: 10 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,23 @@
1-
GNUstep Objective-C Runtime 2.0
1+
GNUstep Objective-C Runtime 2.1
22
===============================
33

4-
This the second major release of the GNUstep Objective-C runtime (a.k.a.
5-
libobjc2). This runtime was designed to support the features of modern
6-
dialects of Objective-C for use with GNUstep and other Objective-C programs.
4+
This the first update to the second major release of the GNUstep Objective-C
5+
runtime (a.k.a. libobjc2). This runtime was designed to support the features
6+
of modern dialects of Objective-C for use with GNUstep and other Objective-C
7+
programs.
78

8-
This release introduces a new Objective-C ABI, which is designed to be forward
9-
compatible with future changes and removes a large number of hacks that were
10-
required for compatibility with the prior ABI that included features introduced
11-
in the 1980s. Highlights include:
9+
Highlights of this release include:
1210

13-
- The linker now removes duplicate selectors within a library.
11+
- ?
1412

15-
- The linker will remove duplicate protocol definitions within a library.
16-
17-
- Protocols and classes are now always accessed via an indirection layer, so
18-
they can be extended by future versions of the ABI without breaking
19-
compatibility.
20-
21-
- Categories can include property metadata and both categories.
22-
23-
- Constant strings are now emitted with a richer structure, which provides
24-
faster hashing and better unicode support.
25-
26-
- Instance variable metadata includes size and alignment, allowing better object
27-
layout and more accurate introspection. Instance variable metadata now
28-
includes more accurate information about ARC ownership semantics.
29-
30-
- Method metadata now includes extended type information, allowing bridged
31-
languages to understand the class that methods expect and not just the fact
32-
that they take an object. This was previously an obstacle to supporting
33-
JavaScriptCore's Objective-C bridge with GNUstep.
34-
35-
In addition to the new ABI, there are several improvements on Windows:
36-
37-
- The runtime now uses SEH-based exception handling on Windows. This
38-
interoperates with C++ exceptions in libraries compiled with MSVC or
39-
MSVC-compatible compilers.
40-
41-
- All of the assembly code paths now fully support i386 and x64 Windows.
42-
43-
- Object allocations on 32-bit Windows now use `_aligned_malloc` to guarantee
44-
sufficient alignment for AVX vectors in instance variables.
45-
46-
- The runtime now uses fibre-local storage and critical sections on Windows,
47-
improving performance in multithreaded workloads on Windows.
48-
49-
- Public runtime functions are now marked dllexport, so the runtime can be built
50-
as objc.dll on Windows.
51-
52-
**WARNING**: The new ABI is currently incompatible with incremental linking on
53-
Windows, so projects built with Microsoft's linker must disable incremental
54-
linking.
55-
56-
Note: Microsoft's WinObjC project contains a friendly fork of this library that
57-
includes a work around for the incremental linking issue. If you wish to use
58-
incremental linking on Windows, please use that version. A subsequent version
59-
of clang and link.exe should include a fix that will make it possible to use
60-
this version with incremental linking.
61-
62-
The runtime will now use the new ABI's data structures internally and will
63-
automatically upgrade on-disk structures from old ABIs when used with the old
64-
ABI. As a result, memory usage will be higher when using the old ABI and users
65-
who are unable to recompile their code may prefer to stick with the 1.9.x
66-
release series. Mixing libraries compiled with the old and new ABIs is not
67-
supported and will abort at run time.
68-
69-
The new ABI provides better run-time introspection metadata and smaller
70-
binaries. When used with the new ABI, this version of the runtime will consume
71-
less memory than the previous release.
72-
73-
You may obtain the code for this release from git and use the 2.0 branch:
13+
You may obtain the code for this release from git and use the 2.1 branch:
7414

7515
https://github.com/gnustep/libobjc2.git
7616

7717
Alternatively, a tarball is available from:
7818

79-
https://github.com/gnustep/libobjc2/archive/v2.0.zip
80-
https://github.com/gnustep/libobjc2/archive/v2.0.tar.gz
19+
https://github.com/gnustep/libobjc2/archive/v2.1.zip
20+
https://github.com/gnustep/libobjc2/archive/v2.1.tar.gz
8121

8222
The runtime library is responsible for implementing the core features of the
8323
object model, as well as exposing introspection features to the user. The

ANNOUNCE.2.0

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
GNUstep Objective-C Runtime 2.0
2+
===============================
3+
4+
This the second major release of the GNUstep Objective-C runtime (a.k.a.
5+
libobjc2). This runtime was designed to support the features of modern
6+
dialects of Objective-C for use with GNUstep and other Objective-C programs.
7+
8+
This release introduces a new Objective-C ABI, which is designed to be forward
9+
compatible with future changes and removes a large number of hacks that were
10+
required for compatibility with the prior ABI that included features introduced
11+
in the 1980s. Highlights include:
12+
13+
- The linker now removes duplicate selectors within a library.
14+
15+
- The linker will remove duplicate protocol definitions within a library.
16+
17+
- Protocols and classes are now always accessed via an indirection layer, so
18+
they can be extended by future versions of the ABI without breaking
19+
compatibility.
20+
21+
- Categories can include property metadata and both categories.
22+
23+
- Constant strings are now emitted with a richer structure, which provides
24+
faster hashing and better unicode support.
25+
26+
- Instance variable metadata includes size and alignment, allowing better object
27+
layout and more accurate introspection. Instance variable metadata now
28+
includes more accurate information about ARC ownership semantics.
29+
30+
- Method metadata now includes extended type information, allowing bridged
31+
languages to understand the class that methods expect and not just the fact
32+
that they take an object. This was previously an obstacle to supporting
33+
JavaScriptCore's Objective-C bridge with GNUstep.
34+
35+
In addition to the new ABI, there are several improvements on Windows:
36+
37+
- The runtime now uses SEH-based exception handling on Windows. This
38+
interoperates with C++ exceptions in libraries compiled with MSVC or
39+
MSVC-compatible compilers.
40+
41+
- All of the assembly code paths now fully support i386 and x64 Windows.
42+
43+
- Object allocations on 32-bit Windows now use `_aligned_malloc` to guarantee
44+
sufficient alignment for AVX vectors in instance variables.
45+
46+
- The runtime now uses fibre-local storage and critical sections on Windows,
47+
improving performance in multithreaded workloads on Windows.
48+
49+
- Public runtime functions are now marked dllexport, so the runtime can be built
50+
as objc.dll on Windows.
51+
52+
**WARNING**: The new ABI is currently incompatible with incremental linking on
53+
Windows, so projects built with Microsoft's linker must disable incremental
54+
linking.
55+
56+
Note: Microsoft's WinObjC project contains a friendly fork of this library that
57+
includes a work around for the incremental linking issue. If you wish to use
58+
incremental linking on Windows, please use that version. A subsequent version
59+
of clang and link.exe should include a fix that will make it possible to use
60+
this version with incremental linking.
61+
62+
The runtime will now use the new ABI's data structures internally and will
63+
automatically upgrade on-disk structures from old ABIs when used with the old
64+
ABI. As a result, memory usage will be higher when using the old ABI and users
65+
who are unable to recompile their code may prefer to stick with the 1.9.x
66+
release series. Mixing libraries compiled with the old and new ABIs is not
67+
supported and will abort at run time.
68+
69+
The new ABI provides better run-time introspection metadata and smaller
70+
binaries. When used with the new ABI, this version of the runtime will consume
71+
less memory than the previous release.
72+
73+
You may obtain the code for this release from git and use the 2.0 branch:
74+
75+
https://github.com/gnustep/libobjc2.git
76+
77+
Alternatively, a tarball is available from:
78+
79+
https://github.com/gnustep/libobjc2/archive/v2.0.zip
80+
https://github.com/gnustep/libobjc2/archive/v2.0.tar.gz
81+
82+
The runtime library is responsible for implementing the core features of the
83+
object model, as well as exposing introspection features to the user. The
84+
GNUstep runtime implements a superset of Apple's Objective-C Runtime APIs.
85+
86+
If you come across any problems, please file them in the issue tracker:
87+
88+
https://github.com/gnustep/libobjc2/issues

0 commit comments

Comments
 (0)