summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/system.nim3
-rw-r--r--lib/system/sysio.nim8
-rw-r--r--web/news/version_0_15_released.rst1
3 files changed, 12 insertions, 0 deletions
diff --git a/lib/system.nim b/lib/system.nim
index 3029d0865..a1668cc78 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 62ea40e17..552213a2d 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 setvbuf(stdout, nil, IONBF, 0)
+  when declared(stderr):
+    discard setvbuf(stderr, nil, IONBF, 0)
+  when declared(stdin):
+    discard 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 ad3119cca..618e57baa 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
 ------------------