Re: Announcing Mecca

2018-05-05 Thread Ali Çehreli via Digitalmars-d-announce

On 05/05/2018 04:09 AM, Joakim wrote:

On Saturday, 5 May 2018 at 10:43:53 UTC, Mengu wrote:

On Friday, 4 May 2018 at 05:23:51 UTC, Shachar Shemesh wrote:

Hello everybody,

I am very happy to announce that Mecca version 0.0.1 (sorry, no more 
zeros than that) is now officially available. You can get the source 
code at https://github.com/weka-io/mecca. The API documentation is at 
https://weka-io.github.com/mecca/docs.


[...]


why the name mecca?


Liran said in his closing keynote that they use a lot of internal 
codenames that rhyme with Weka.


Shachar further explained that they have internal tools and projects 
that all end with "eka" like teka. M was available, so they called it 
Meka, which sounded like an existing place so changed its name to Mecca.


Ali


Re: Announcing Mecca

2018-05-05 Thread Joakim via Digitalmars-d-announce

On Saturday, 5 May 2018 at 10:43:53 UTC, Mengu wrote:

On Friday, 4 May 2018 at 05:23:51 UTC, Shachar Shemesh wrote:

Hello everybody,

I am very happy to announce that Mecca version 0.0.1 (sorry, 
no more zeros than that) is now officially available. You can 
get the source code at https://github.com/weka-io/mecca. The 
API documentation is at https://weka-io.github.com/mecca/docs.


[...]


why the name mecca?


Liran said in his closing keynote that they use a lot of internal 
codenames that rhyme with Weka.


Re: Announcing Mecca

2018-05-05 Thread Mengu via Digitalmars-d-announce

On Friday, 4 May 2018 at 05:23:51 UTC, Shachar Shemesh wrote:

Hello everybody,

I am very happy to announce that Mecca version 0.0.1 (sorry, no 
more zeros than that) is now officially available. You can get 
the source code at https://github.com/weka-io/mecca. The API 
documentation is at https://weka-io.github.com/mecca/docs.


[...]


why the name mecca?


Re: Announcing Mecca

2018-05-04 Thread Laeeth Isharc via Digitalmars-d-announce

On Friday, 4 May 2018 at 05:23:51 UTC, Shachar Shemesh wrote:

Hello everybody,

I am very happy to announce that Mecca version 0.0.1 (sorry, no 
more zeros than that) is now officially available. You can get 
the source code at https://github.com/weka-io/mecca. The API 
documentation is at https://weka-io.github.com/mecca/docs.


[...]


https://www.reddit.com/r/programming/comments/8gxrkg/wekaio_open_sources_mecca_dlang_library_for_nogc?sort=new


Announcing Mecca

2018-05-03 Thread Shachar Shemesh via Digitalmars-d-announce

Hello everybody,

I am very happy to announce that Mecca version 0.0.1 (sorry, no more 
zeros than that) is now officially available. You can get the source 
code at https://github.com/weka-io/mecca. The API documentation is at 
https://weka-io.github.com/mecca/docs.


Mecca is a run-time support library for fibers management, as well as a 
few useful containers and libraries.


At this point in time, a getting started tutorial is still not 
available. Instead, I will post this small program for an echo server. 
It should give you a hint what APIs to check out with the documentation, 
so you can expand your search:


import core.sys.posix.sys.socket;
import std.algorithm : move;
import std.functional : toDelegate;

import mecca.log;
import mecca.reactor;
import mecca.reactor.io.fd;
import mecca.reactor.io.signals;

enum EchoerPort = 31337;

int main()
{
theReactor.setup();

reactorSignal.registerHandler(OSSignal.SIGTERM, 
toDelegate());
reactorSignal.registerHandler(OSSignal.SIGINT, 
toDelegate());


theReactor.spawnFiber!listener();

return theReactor.start();
}

void termHandler(ref const(signalfd_siginfo) siginfo) {
// Signal handler, but any non-yielding operation is safe to call 
from here.

theReactor.stop();
}

void listener() {
auto listenSocket = ConnectedSocket.listen( SockAddrIPv4.any( 
EchoerPort ) );

listenSocket.setSockOpt( SOL_SOCKET, SO_REUSEADDR, 1 );

while( true ) {
SockAddr clientAddress;
auto clientSocket = listenSocket.accept(clientAddress);

// The next line's toString is the only reason we can't annotate
// listener as @nogc.
INFO!"Received new connection from %s"(clientAddress.toString());
theReactor.spawnFiber!echoClient( move(clientSocket) );
}
}

void echoClient(ConnectedSocket sock) @nogc {
ssize_t dataLength;
do {
char[4096] buffer;
dataLength = sock.read(buffer);
sock.write(buffer[0..dataLength]);
} while( dataLength>0 );
}