|
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