|
|
|
|
|
by wezfurlong
4762 days ago
|
|
Watchman uses inotify under the covers (or kqueue or portfs, depending on the OS) and abstracts the differences away. For the Facebook www build it is no longer practical to hash every file to see if it changed because there are so many that it is pretty common for the files to have fallen out of the buffer cache. Attempting to hash the files can thus lead to a significant amount of I/O and translates directly to an increased wait time for the user. In addition, because of the volume of files, it is not feasible for us to statically declare the build dependencies using a traditional Makefile or similar tool; it is crazy to maintain manually and generating the mapping is itself an expensive operation. We chose to implement this in C because because it gave us tight and deliberate control of the resources and dependencies of the service. |
|