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

Minor useless cleanups #1

Closed
wants to merge 5 commits into from
Closed

Minor useless cleanups #1

wants to merge 5 commits into from

Conversation

dylex
Copy link

@dylex dylex commented Oct 17, 2015

I'm just starting to read through the code (because I think this is pretty awesome) and doing some cleanups as I go, really just so I understand what's going on. Feel free to reject this or take only some of it, but maybe as I get farther in I'll be able to add something actually useful at some point.

If there're specific parts you'd like someone to look at let me know.

Apparently mine was too old.  The version is just a rough guess but
seems to work.
Rates about 15% faster with random data
This may not be all that better for simple values, but should be for
nested lists at least.
Since some of us don't have it; the default should work for both
@verement
Copy link
Owner

verement commented Nov 4, 2015

Dylan, thanks for all of these suggestions; I really appreciate the review and your interest.

There are a few main places that I think need attention right now... one is reading and writing the database file, and the other is the network connection management.

Obviously database reading mostly works, but it could use a performance boost. My thought is probably to use attoparsec possibly in conjunction with pipes, but maybe you have a better idea.

The functions needed for database writing are there and actually work, but I was hung up for a long while on a GHC bug that caused a deadlock after forking the process. Although that seems to be fixed as of GHC 7.8.4, the main thing I need to figure out now is how to schedule database writes to happen on a recurring basis but also allow them to be triggered manually via the dump_database() MOO built-in and when the server shuts down.

As for network handling... I still need to write the implementation for open_network_connection(), and rework some (or a lot) of the dispatch code in order to support the hold-input connection option. There's also some interaction to fix between read() and out-of-band data, and missing support for $server_options.connect_timeout.

While there are also a few other things, I think these are the main things needed before a preliminary 1.0 release would seem feasible.

Thanks again for your interest!

@verement verement closed this Mar 17, 2016
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

Successfully merging this pull request may close these issues.

2 participants