Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Status of WinObjC #2920

Open
steskalja opened this issue Feb 5, 2019 · 9 comments
Open

Status of WinObjC #2920

steskalja opened this issue Feb 5, 2019 · 9 comments

Comments

@steskalja
Copy link

What is the current status of WinObjC? There have been no updates in a year on the project.

@edvv
Copy link

edvv commented Feb 6, 2019

I've linked this closed issue: #2891 just for reference.

@edvv
Copy link

edvv commented Mar 22, 2019

@DHowett Thank you for this: gnustep/libobjc2#89 ... it sounds fantastic!

@davidchisnall
Copy link
Contributor

With that patch, and the relevant changes in the 2019-abiv2 branch, I believe it should now be possible to build everything with upstream clang (well, clang-cl.exe). I don't intend to merge the patch from gnustep/libobjc2#89, because we will eventually (some time in 2019) gain linker support for directives to tell the linker to not add padding to certain sections, which I consider to be the correct solution to this problem. Once link.exe supports that functionality, I will modify clang to generate the relevant directives. Until then, I hope the version of libobjc2 in WinObjC will carry that patch and that it will be the only divergence of the WinObjC version from libobjc2. Anyone wanting to use use upstream libobjc2 with WinObjC can either link with lld (which doesn't support incremental linking, but is generally fast enough that no one cares [especially on multicore machines]) or disable incremetal linking with link.exe.

Some highlights of the new ABI (from the libobjc2 ANNOUNCE file):

  • The linker now removes duplicate selectors within a library.

  • The linker will remove duplicate protocol definitions within a library.

  • Protocols and classes are now always accessed via an indirection layer, so
    they can be extended by future versions of the ABI without breaking
    compatibility.

  • Categories can include property metadata and both categories.

  • Constant strings are now emitted with a richer structure, which provides
    faster hashing and better unicode support.

  • Instance variable metadata includes size and alignment, allowing better object
    layout and more accurate introspection. Instance variable metadata now
    includes more accurate information about ARC ownership semantics.

  • Method metadata now includes extended type information, allowing bridged
    languages to understand the class that methods expect and not just the fact
    that they take an object. This was previously an obstacle to supporting
    JavaScriptCore's Objective-C bridge with GNUstep.

TL;DR: Smaller binaries, better reflection metadata, easier forward compatibility.

@edvv
Copy link

edvv commented Mar 27, 2020

@DHowett What is the status of WinObjC? If there is not a positive indication then our software is EOL'd on Windows.

@davidchisnall
Copy link
Contributor

Tagging @DHowett-MSFT, in case he misses this with his other personality.

@edvv
Copy link

edvv commented Mar 30, 2020

@davidchisnall Thank you for doing that. It is done here: Windows Edition of Graph IDE Marked EOL. WinObjC is great and your work is fantastic and I hope that WinObjC is improved by Microsoft in the future.

@StEvUgnIn
Copy link

Hi, will the next release be targetting Visual Studio 2019?

@lbc2800
Copy link

lbc2800 commented Sep 6, 2022

+1

Looking to adopt WinObjC but hard to do since it doesn't appear to be active/maintained, e.g. no activity since Jan 2020 and lack of support for VS 2019 (or later)?

@triplef
Copy link
Contributor

triplef commented Sep 10, 2022

If you’re looking for an alternative and don’t require UIKit support (i.e. Foundation etc. only) have a look at the GNUstep Windows MSVC Toolchain.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants