Darling logo

Tuesday, July 23, 2019

Darling Progress Report Q2 2019

Summary of Progress

We are very excited to say that in Q2 2019 (April 1 to June 30) we saw more community involvement than ever before. Many pull requests were submitted that spanned from bug fixes for our low level assembly to higher level modules such as the AppKit framework. Thanks to everyone for your contributions and we hope for this level of engagement to continue.

Darling Community Discord

While we have relied solely on GitHub issues for a long time, it has become apparent that a platform for people to ask general questions, share knowledge, and coordinate efforts is necessary. There is now an official Discord server that is open for everybody to join in order to discuss anything Darling related. Here is the invite link: https://discord.gg/XRD3mQA. Feel free to join and invite anyone who may be interested!

Darling Core

The community submitted more pull requests than we have ever received before in Q2.

James Urquhart's pull requests gave us more stubs for many frameworks including DrawSprocket, AGL, Carbon, CoreServices, and ApplicationServices. Wow, what a list, thank you James! James also fixed a very low level bug where system calls with large numbers of arguments wouldn't work properly for 32-bit applications. Finally, he fixed a problem where Darling was using clock_sleep instead of clock_nanosleep and a bug with the stat system call.

Commits sent in by kamillys gave us more stubs for the AddressBook and Carbon frameworks.

New Website

Sergey has remade our project website using Hugo. This new website looks very modern and adapts for mobile devices. This refresh looks very snazzy! The Frequently Asked Questions section of the site is perfectly placed to answer some of the most commonly sought after information. The whole page has the right balance of content without overwhelming the viewer with technical details. The new site also highlights the key features and goals of Darling, including "Fast, Free, Compatible, Easy to Use, and Native."



AppKit

Continued improvements were seen with our implementation of AppKit. Sergey squashed some bugs including crashing when no spelling engines were present and pointers having the wrong printing format. He got the X11 pasteboard to work with our AppKit. Ctrl+c/Ctrl+v away, even pretend it's Command if you want!

GitHub user kamillys also submitted a PR which gave AppKit more stubs for NSApplication and NSWorkspace.

AppKit also now also reexports ApplicationServices, solving some crashes due to undefined symbols when programs were being loaded.

Nested Frameworks

Some frameworks on macOS appear to be just one framework but under the hood are made up of sub-frameworks which are usually reexported so that when being linked to it appears to be one big framework. Until now, our build system didn't support nested frameworks. In June, Andrew added support for this and system frameworks such as Accelerate now have the same file structure as they do on macOS. This was accomplished using some CMake magic and carefully replicating the structure of some system frameworks.

Framework Nesting VS Reexporting

Reexporting is when a dynamic library presents itself as also containing the symbols of the library or framework it is reexporting. Symbols are typically functions, constants, or classes. This is why you can link to only AppKit and without linking to Foundation you can use Foundation symbols. Nested frameworks are when one framework is placed inside the other. In the case where a larger framework is broken into sub-frameworks (like CoreServices and ApplicationServices) you need to have the parent framework reexport those sub-frameworks in order to appear as one framework. Another use case for nesting frameworks is when your framework relies on a supporting library and it's only meant to be used by your framework. This is like keeping it private. In that case the parent framework wouldn't reexport it but it would instead link to its child framework.



Foundation

A good amount of attention was received by Foundation this time. Our NSKeyedArchiver/NSKeyedUnarchiver had many bug fixes and improvements submitted by  CuriousTommy. Stability in this area very important because NSKeyedArchiver is used to serialize objects extensively in almost every Cocoa application. In addition to those improvements, Tommy gave Foundation symbols for the NSScriptClassDefinition category of NSObject and fixed an issue with some some macros in NSObjCRuntime.h.

Stubs were also added by kamillys for NSScriptClassDescription and for some NSCallbacks functions that Foundation was missing.

These changes improve the general compatibility because as the name implies, Foundation is very fundamental and relied on by many other libraries and applications.

CoreFoundation

Error handling in NSSet was improved by Tommy by better checking parameters, particularly if someone tries to insert a nil object into a set, which isn't supposed to be possible but was possible before. Thanks Tommy!

Going Forward

Strong community involvement is always exciting and motivating. We received lots of feedback and pull requests! If you have any questions about ways you can contribute and learn, join our Discord linked at the top of this post. When first trying to help out an open source project it may seem unclear how you can help. If none of the open issues on GitHub jump out of you, the Discord is the perfect place to ask where you can start. The wiki also is very useful because it contains build instructions and workarounds for known build problems.

It was also nice to see the community step up and fix some 32-bit specific bugs because as anticipated in the last progress report, the release of macOS coming in a few months drops all support for 32-bit applications. Darling plans to continue supporting 32-bit applications for a long time and once GUI support improves it will be a strong option for applications that stop working due to the lack of 32-bit capabilities.

See you all in a few months,

- The Darling Project

13 comments:

  1. this is honestly pretty awesome.

    ReplyDelete
  2. Nice post ! Thanks for sharing a very informative post .This information is really helpful for my business of DVC Resale business.

    ReplyDelete
  3. Great post ! Thanks for sharing a valuable information about topic . This information is really informative &helpful for my business of Modern African Print Clothing Modern African clothing. Keep sharing these kind of valuable blog post .

    ReplyDelete
  4. Thanks for sharing valuable information about Yacht charter. Its really helpful for my business of Yacht hire Greece. Keep sharing these kind of valuable and informative blog post.

    ReplyDelete
  5. Simsii sterile syringe filter are disposable syringe filters that are attached to the end of a syringe to remove particles from a sample, prior to analysis.
    Sterile Syringe filters

    ReplyDelete
  6. Thank you for this wonderful information looking forward for more. We are Providing the best quality assignment help. You will find out online My Assignment Help service on firstassignmenthelp. And these services are very reliable, and they can provide information about any topic related to the academics. If you need any college level Assignment Help at reliable quality with better work. Kindly visit our website firstassignmenthelp.

    ReplyDelete
  7. Great post ! Thanks for sharing a valuable information about topic . This information is really informative &helpful for my business of Modern African Print Clothing Modern African clothing. Keep sharing these kind of valuable blog post .

    ReplyDelete
  8. תמשיכו בפרסום פוסטים מעניינים כמו זה. תודה.
    gabaygroup.com

    ReplyDelete
  9. Nice Post...
    Hi, I am Dayna Martin as an Office tech support executive well praise amongst the customer to help out them in resolve their queries related to office setup. As problem or queries can turn up at anytime so you should be ready for it, just visit office.com/setup and download the most recent office setup. While doing so if you come crosswise any complexity then you can make association with me.

    ReplyDelete
  10. At assignment help, we are proud to announce its success in writing industry in Australia. If you are wondering who can do my assignment, we became one of the most popular assignment writing services in Australia.
    We always provide customized high-quality assignments written by our experienced assignment experts. So if you have any academic problem with assignment writing, our 500+ experts at your disposal to help you in the best possible manner.
    We also provided free samples for more detailed knowledge. Know more about our PhD experts and their completed assignments online. Hire top assignment helper now.

    ReplyDelete
  11. Helpful source to clarify all issues quickly.
    ESPN.com/activate
    https://www.activateyourdevices.com/activate-a-device/activate-espn/

    ReplyDelete
  12. Our QuickBooks Support team have an extream knowledge and talent of QuickBooks software. So the process is very simple to contact our QuickBooks team anytime & anywhere.

    ReplyDelete