{"id":22625166,"url":"https://github.com/gnustep/libobjc","last_synced_at":"2026-03-07T03:30:59.848Z","repository":{"id":19533858,"uuid":"22781562","full_name":"gnustep/libobjc","owner":"gnustep","description":null,"archived":false,"fork":false,"pushed_at":"2016-03-07T23:16:00.000Z","size":308,"stargazers_count":8,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-11T17:58:18.958Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gnustep.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-09T07:34:00.000Z","updated_at":"2024-01-19T14:11:22.000Z","dependencies_parsed_at":"2022-08-21T11:10:59.162Z","dependency_job_id":null,"html_url":"https://github.com/gnustep/libobjc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gnustep/libobjc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnustep%2Flibobjc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnustep%2Flibobjc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnustep%2Flibobjc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnustep%2Flibobjc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gnustep","download_url":"https://codeload.github.com/gnustep/libobjc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnustep%2Flibobjc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30206563,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T03:24:23.086Z","status":"ssl_error","status_checked_at":"2026-03-07T03:23:11.444Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-09T00:19:41.080Z","updated_at":"2026-03-07T03:30:59.824Z","avatar_url":"https://github.com/gnustep.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nGNU Objective C notes\n*********************\n\nThis document is to explain what has been done, and a little about how\nspecific features differ from other implementations.  The runtime has\nbeen completely rewritten in gcc 2.4.  The earlier runtime had several\nsevere bugs and was rather incomplete.  The compiler has had several\nnew features added as well.\n\nThis is not documentation for Objective C, it is usable to someone\nwho knows Objective C from somewhere else.\n\n\nRuntime API functions\n=====================\n\nThe runtime is modeled after the NeXT Objective C runtime.  That is,\nmost functions have semantics as it is known from the NeXT.  The\nnames, however, have changed.  All runtime API functions have names\nof lowercase letters and underscores as opposed to the\n`traditional' mixed case names.  \n\tThe runtime api functions are not documented as of now.\nSomeone offered to write it, and did it, but we were not allowed to\nuse it by his university (Very sad story).  We have started writing\nthe documentation over again.  This will be announced in appropriate\nplaces when it becomes available.\n\n\nProtocols\n=========\n\nProtocols are now fully supported.  The semantics is exactly as on the\nNeXT.  There is a flag to specify how protocols should be typechecked\nwhen adopted to classes.  The normal typechecker requires that all\nmethods in a given protocol must be implemented in the class that\nadopts it -- it is not enough to inherit them.  The flag\n`-Wno-protocol' causes it to allow inherited methods, while\n`-Wprotocols' is the default which requires them defined.\n\n\n+load\n===========\nThis method, if defined, is called for each class and category\nimplementation when the class is loaded into the runtime.  This method\nis not inherited, and is thus not called for a subclass that doesn't\ndefine it itself.  Thus, each +load method is called exactly once by\nthe runtime.  The runtime invocation of this method is thread safe.\n\n\n+initialize \n===========\n\nThis method, if defined, is called before any other instance or class\nmethods of that particular class.  For the GNU runtime, this method is \nnot inherited, and is thus not called as initializer for a subclass that \ndoesn't define it itself.  Thus, each +initialize method is called exactly \nonce by the runtime (or never if no methods of that particular class is \nnever called).  It is wise to guard against multiple invocations anyway \nto remain portable with the NeXT runtime.  The runtime invocation of \nthis method is thread safe.\n\n\nPassivation/Activation/Typedstreams\n===================================\n\nThis is supported in the style of NeXT TypedStream's.  Consult the\nheaderfile Typedstreams.h for api functions.  I (Kresten) have\nrewritten it in Objective C, but this implementation is not part of\n2.4, it is available from the GNU Objective C prerelease archive. \n   There is one difference worth noting concerning objects stored with\nobjc_write_object_reference (aka NXWriteObjectReference).  When these\nare read back in, their object is not guaranteed to be available until\nthe `-awake' method is called in the object that requests that object.\nTo objc_read_object you must pass a pointer to an id, which is valid\nafter exit from the function calling it (like e.g. an instance\nvariable).  In general, you should not use objects read in until the\n-awake method is called.\n\n\nAcknowledgements\n================\n\nThe GNU Objective C team: Geoffrey Knauth \u003cgsk@marble.com\u003e (manager),\nTom Wood \u003cwood@next.com\u003e (compiler) and Kresten Krab Thorup\n\u003ckrab@iesd.auc.dk\u003e (runtime) would like to thank a some people for\nparticipating in the development of the present GNU Objective C.\n\nPaul Burchard \u003cburchard@geom.umn.edu\u003e and Andrew McCallum\n\u003cmccallum@cs.rochester.edu\u003e has been very helpful debugging the\nruntime.   Eric Herring \u003cherring@iesd.auc.dk\u003e has been very helpful\ncleaning up after the documentation-copyright disaster and is now\nhelping with the new documentation.\n\nSteve Naroff \u003csnaroff@next.com\u003e and Richard Stallman\n\u003crms@gnu.ai.mit.edu\u003e has been very helpful with implementation details\nin the compiler.\n\n\nBug Reports\n===========\n\nPlease read the section `Submitting Bugreports' of the gcc manual\nbefore you submit any bugs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnustep%2Flibobjc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnustep%2Flibobjc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnustep%2Flibobjc/lists"}