diff --git a/lib/system.nim b/lib/system.nim index 3029d0865d..5a84f4a522 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -2715,6 +2715,9 @@ when not defined(JS): #and not defined(nimscript): ## ## Default mode is readonly. Returns true iff the file could be reopened. + proc setStdIoUnbuffered*() {.tags: [], benign.} + ## Configures `stdin`, `stdout` and `stderr` to be unbuffered. + proc close*(f: File) {.tags: [].} ## Closes the file. diff --git a/lib/system/sysio.nim b/lib/system/sysio.nim index 62ea40e17f..6622a4f648 100644 --- a/lib/system/sysio.nim +++ b/lib/system/sysio.nim @@ -369,4 +369,12 @@ proc writeFile(filename, content: string) = else: sysFatal(IOError, "cannot open: ", filename) +proc setStdIoUnbuffered() = + when declared(stdout): + discard c_setvbuf(stdout, nil, IONBF, 0) + when declared(stderr): + discard c_setvbuf(stderr, nil, IONBF, 0) + when declared(stdin): + discard c_setvbuf(stdin, nil, IONBF, 0) + {.pop.} diff --git a/web/news/version_0_15_released.rst b/web/news/version_0_15_released.rst index ad3119ccaa..618e57baa0 100644 --- a/web/news/version_0_15_released.rst +++ b/web/news/version_0_15_released.rst @@ -16,6 +16,7 @@ Library Additions - Added ``readHeaderRow`` and ``rowEntry`` to ``parsecsv.nim`` to provide a lightweight alternative to python's ``csv.DictReader``. +- Added ``setStdIoUnbuffered`` proc to ``system.nim`` to enable unbuffered I/O. Compiler Additions ------------------