Quantcast
Channel: Planet Object Pascal
Viewing all articles
Browse latest Browse all 1725

From Zero To One: Library and site updates

$
0
0

After being quiet for quite some time (but extremely busy), I am now posting updates about what is new in the “Cromis Library” and on the page itself.

Page updates

In the past I already worked with TRAC, a great open source project management tool written in Python. I fiddled with it a little, even used it for one of my internal projects, but that was more or less it. Now after a few years, I upgraded my Debian VM, where the blog runs and decided that I upgrade and use TRAC again. So I put up a project management for “Cromis Library”. It features:

You can find the page here: http://www.cromis.net/trac/cromis. It is also accessible from the blog top navigation under “DOCS”. Why did I decide to do this? Well I want to run my projects in a more structured manner. Yes, I write them in my spare time and when I can, but that does not mean, I can’t have a road-map, a ticket system and a forum. It took me very little time to set up and I think I will benefit from it. Also the users of “Cromis Library” will have a lot of info at hand. More and more people use my library and I get a lot of e-mails regarding how to use something, etc… Lots of content in these e-mails  is overlapped and I think its a shame, that the content is not available online. As of now it is! Furthermore I will benefit from bug tracking tickets and from tasks that I will assign to myself. This way I have a clear picture what I intend to do and how are things progressing. But please do not take the road-map as sacred. After all I have a family and a job among other things and I will update the road-map and change dates if needed.

The documentation is currently not there yet, but it will dribble in slowly. Also the code, is for reasons I will not discuss here right now, not ultra clean and organized at that moment. But downloads are always stable snapshots when they are made. This means that using SVN code directly, is being on the bleeding edge.

I am open to criticism, suggestions and most of all participation on the site itself. Welcome to it :)

Library updates

  1. Cromis.IPCBoth IPC and IMC went through some serious redesigns, to allow further code development and to incorporate new features. All the changes are listed on the download page, I will sum here
    • New events have been added, OnClientConnect, OnClientDisconnect, OnServerError
    • Improved error handling and notifications, especially the server side
    •  Unit renamed to Cromis.Comm.IPC
    • Server now holds a list of connected clients
    • Clients can specify their class that holds the data for each client
  2. Cromis.IMC - Similar changes as IPC
    • New events have been added, OnClientConnect, OnClientDisconnect, OnServerError
    • Improved error handling and notifications, especially the server side
    •  Unit renamed to Cromis.Comm.IMC
    • Server now holds a list of connected clients
    • Clients can specify their class that holds the data for each client
    • Exposed bindings for TCP server
  3. Cromis.Scheduler - Scheduler has been optimized and new funcionality has been added
    • LastEvent propery for schedule
    • OnScheduleAdd and OnScheduleRemove handlers added to events list
    • stQueue added as signal type, this allows more modern approach then Sychronize
    • Improved thread stopping and freeing
  4. Cromis.AnyValue - Very important change here. Safe mode code has been added, that does not use hooks. Under x64 it is automatically enabled and under x86 you can enable it if you fear for the stability. But do not worry it is rock solid anyway :)
    • “AnyValue_HookingOn” and “AnyValue_HookingOff” defines added
    • Under x64 automatically swithces to safe mode. Manual control over hooking

Here I would like to appeal for help.  Cromis.AnyValue uses System.pas hooks to be as fast as it is and as memory efficient. But that means, I have to use Cromis.Detours. And while it is rock solid under x86, the code it is not x64 safe. Although it works just fine in my tests, that does not mean it will work fine anywhere. I lack the assembler knowledge to make it x64 safe and I also lack time to do so. So if any of you has the skills and want’s to help, I will be more then happy and that person will have my eternal gratitude :)


Viewing all articles
Browse latest Browse all 1725

Trending Articles