|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [MirageOS-devel] [ANN] release of Irmin 0.12.0 and introducing irmin-watcher
Hi all,
I am in the process of releasing Irmin 0.12.0[1] which brings support for
native file-system watchers, to improve the performance of watches.
Previously, an Irmin apps who wanted to use watches would set-up file-system
scanning/polling by doing:
let () = Irmin_unix.install_dir_polling_listener 1.
which would scan the `.git/refs` directory every second. This was working but
it was slow (if you are unlucky you might wait for 1s for the watch callbacks
to trigger) and disk/CPU intensive as we were scanning the full directory every
second to detect file changes: in case you have 1000s of tags, this could
easily saturate your CPU (in case you wonder, yes, we really have Git
repositories with 1000s of tags).
In the 0.12.0 new world, you would do:
let () = Irmin_unix.set_listen_dir_hook ()
and it will do "the right thing". E.g. if you are on linux, and have the
`inotify` package installed, it will use libinotify to get notified by the
kernel on every change and it will re-scan the whole directory. On OSX, if you
have the `osx-fsevents package installed, it will do the same thing using OSX
fsevents library. The portable compatibility layer between inotify and fsevents
comes with `irmin-watcher`[2] that I have just released as well.
Best,
Thomas
[1]: https://github.com/mirage/irmin/releases/tag/0.12.0
[2]: https://github.com/samoht/irmin-watcher/releases/tag/0.2.0
CHANGES:
Irmin 0.12.0
* Depends on irmin-watcher 0.2.0 to use portable file-system watches
(fsevents on OSX or inotify on Linux) to replace the slow and CPU
intensive file-system polling that was the default (#380, @samoht)
* Do not use `Lwt_unix.fork` in the tests anymore (#383, @samoht)
* Switch from Stringext to Astring (#382, @samoht)
* Fix regression in the tests for using Git over HTTP (#376, @samoht)
* Catch top-level exceptions in watch callbacks (#375, @samoht)
* Fix merge of assoc list with no common ancestor (#374, @samoht)
* Improve documentation for Git bare repositories (#363, @kayceesrk)
* New functor `Make_with_metadata` to customize the type of the
nodes metadata (#364, @samoht)
* Remove mentions of private modules from the public interface
(#364, @samoht)
Irmin-watcher 0.2.0
- Allow to watch non-existing directories (#8, @samoht)
- Expose `Irmin_watches.stats` to get stats about the numbers
of active watchdogs, and callback dispatchers (#7, @samoht)
- When using fsevents/inotify do not scan the whole tree everytime
(#6, @samoht)
- Use realpath(3) on Linux and GetFullPathName on Windows to
normalise the path to watch (#6, @samoht)
- inotify: close the inotify file descriptor when stopping the
watch (#6. @samoht)
- inotify: fix the path of watched events (inotify uses relative
patch, unless fsevents which uses absolute paths) (#6, @samoht)
- fix detection of removed files (#6, @samoht)
_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |