|
1 |
| -GNUstep Objective-C Runtime 2.0 |
| 1 | +GNUstep Objective-C Runtime 2.1 |
2 | 2 | ===============================
|
3 | 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. |
| 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. |
7 | 8 |
|
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: |
12 | 10 |
|
13 |
| -- The linker now removes duplicate selectors within a library. |
| 11 | +- ? |
14 | 12 |
|
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: |
74 | 14 |
|
75 | 15 | https://github.com/gnustep/libobjc2.git
|
76 | 16 |
|
77 | 17 | Alternatively, a tarball is available from:
|
78 | 18 |
|
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 |
81 | 21 |
|
82 | 22 | The runtime library is responsible for implementing the core features of the
|
83 | 23 | object model, as well as exposing introspection features to the user. The
|
|
0 commit comments