www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Mecca available on macOS

reply Jacob Carlborg <doob me.com> writes:
I would like to announce that I've ported Mecca [1] to macOS. It was 
merged in May but I never bothered to announce it until now. Everything 
except the file watcher has been ported and is working. Unfortunately 
the unit tests fail in Travis CI, but they pass locally and in Circle 
CI. Something related to a timer that is failing.

When it comes to the implementation, it's structured so that the new 
code will work on any Darwin platform (it's only tested on macOS). In 
this process I also moved some platform specific code for Linux to the 
`mecca.platform` and `mecca.reactor.platform` packages. This means that 
all platform specific code lives in these two packages and there are no 
version blocks outside of these packages (as far as I could find). The 
version blocks that exist are very few, due the the platform specific 
code lives in their own files. They're just needed to import the correct 
platform specific file. I think this turned out really nice compared to 
the mess that's in druntime, where most files are littered with version 
blocks.

The Darwin implementation uses kqueue, which is available on other 
platforms as well, like the various BSD flavors. The kqueue specific 
code is guarded with its own version block to make it possible to reuse 
on other platforms, if someone wants to port Mecca to a new platform. 
Some timer related code is implemented using libdispatch on Darwin, but 
I think this could be implemented using kqueue as well. I think 
libdispatch is available on *BSD as well, but might not be installed by 
default.

[1] https://github.com/weka-io/mecca

-- 
/Jacob Carlborg
Aug 07 2019
parent reply Ron Tarrant <rontarrant gmail.com> writes:
On Wednesday, 7 August 2019 at 11:01:55 UTC, Jacob Carlborg wrote:
 I would like to announce that I've ported Mecca [1] to macOS.
 [1] https://github.com/weka-io/mecca
I'm not familiar with Mecca. What is a Container/reactor library?
Aug 07 2019
next sibling parent =?UTF-8?Q?Ali_=c3=87ehreli?= <acehreli yahoo.com> writes:
On 08/07/2019 10:45 AM, Ron Tarrant wrote:
 On Wednesday, 7 August 2019 at 11:01:55 UTC, Jacob Carlborg wrote:
 I would like to announce that I've ported Mecca [1] to macOS.
 [1] https://github.com/weka-io/mecca
I'm not familiar with Mecca. What is a Container/reactor library?
DConf 2018 presentation says Weka.io is a small start-up company producing a hyper-scalable high performance software only (BYOH) storage system written in D. During our work we've created a rather rich set of run time support tools for our system that are not, on their own, related to our specific product, or even storage at large. Mecca is a stand-alone library providing those tools. This lecture goes over the highlights of what Mecca contains, and some cool uses for it. http://dconf.org/2018/talks/shemesh.html Ali
Aug 07 2019
prev sibling parent Jacob Carlborg <doob me.com> writes:
On 2019-08-07 19:45, Ron Tarrant wrote:

 I'm not familiar with Mecca. What is a Container/reactor library?
I guess it's a reactor library. I see it as a library providing fiber based non-blocking IO. It also provides containers, logging, reflection, serialization and a bunch of other things that are usually found in a standard library. -- /Jacob Carlborg
Aug 08 2019