You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1.8 KiB

Possible Future Features

These are some features we're interested in, but don't have yet, and which will require some amount of design work.

File Locking

POSIX's answer is fcntl with F_SETLK/F_GETLK/etc., which provide advisory record locking. Unfortunately, these locks are associated with processes, which means that if two parts of a program independently open a file and try to lock it, if they're in the same process, they automatically share the lock.

Other locking APIs exist on various platforms, but none is widely standardized.

POSIX F_SETLK-style locking is used by SQLite.

File change monitoring

POSIX has no performant way to monitor many files or directories for changes.

Many popular operating systems have system-specific APIs to do this though, so it'd be desirable to come up with a portable API to provide access to this functionality.

Scalable event-based I/O

POSIX's select and poll have the property that each time they're called, the implementation has to scan through all the file descriptors to report if any of them has I/O ready, which is inefficient when there are large numbers of open files or sockets.

Many popular operating systems have system-specific APIs that provide alternative ways to monitor large numbers of I/O streams though, so it'd be desirable to come up with a portable API to provide access to this functionality.

Crash recovery

POSIX doesn't have clear guidance on what applications can expect their data will look like if the system crashes or the storage device is otherwise taken offline abruptly.

We have fsync and fdatasync, but even these have been a topic of much discussion.

Also, currently WASI's docs don't make any guarantees about things like path_rename being atomic.