Commit graph

73 commits

Author SHA1 Message Date
Jjp137
3ad48069d3 Fix word wrapping 2019-10-22 17:59:12 -07:00
Jjp137
93461aee34 Fix many broken links
Note that contrary to what docgen.rst currently says, the ids have
to match exactly or else most web browsers will not jump to the
intended symbol.
2019-10-22 17:59:12 -07:00
Andreas Rumpf
889b745b2b
Revert "Fixes #12187 (#12321)" (#12447)
This reverts commit 00c31e8766.
2019-10-18 15:59:22 +02:00
Clyybber
00c31e8766 Fixes #12187 (#12321)
* Fixes #12187
* Point to fork of compactdict
Since the original repo is now archived / read-only
2019-10-08 14:15:47 +02:00
narimiran
34d0be2ec1 [backport] run nimpretty on os-related stuff 2019-09-30 13:58:15 +02:00
Federico Ceratto
39290cf88c Fix spellings (#12277) [backport] 2019-09-27 07:02:54 +02:00
Araq
f8000d4ba1 fixes #12186 2019-09-18 12:16:52 +02:00
c-blake
322f395f31 Make MemSlice stringification both simpler and faster. (#10464) 2019-01-27 13:52:46 +01:00
c-blake
a54e3f4602 Allow an escape hatch for platform specific flags/default override (#9968)
* Allow an escape hatch for platform specific flags (of which there are many,
for example MAP_POPULATE itself is a Linux-only thing, not other Unix).

Continue with same defaults as before in this commit, but that really
should be changed to *not* include MAP_POPULATE.  While pre-faulting
all the pages can be useful sometimes *if* you know you're going to
access all the data, it is highly unlikely to be what users expect the
default to be.  For some things all that up front work is 1000s of
times slower than being lazy/on-demand/only ever faulting parts of the
file.  Even the MAP_POPULATE fan who originally in 2014 committed to
this file defaulted it to off (but turned it always-on as a "temporary"
work around for some long since gone/mutated compiler issue).

Anyway, at least something like this `mapFlags` gives users the ability
to override the poor default choice or activate any other idiosyncratic
platform-specific features.

* Use simple, efficient default flags, but also accept whatever the open/mapMem
caller specifies.  Save flags in MemFile so they can be used in `resize`.

This field should not need exporting like the others -- callers can always
save whatever values they pass -- but we include a cautionary comment in
case anyone ever asks for a `*` there, as well as for documentation.

Also make documentation for ``mapFlags`` in open more likely to inspire care.
2018-12-14 11:44:11 +01:00
Araq
f828e5da49 clean up the implementation of the new memfiles.resize 2018-12-12 12:10:17 +01:00
Araq
77a884f178 export every field of MemFile for more low level trickery; refs #9922 2018-12-12 12:03:57 +01:00
Charles Blake
b92594572e For now just implement resize per https://github.com/nim-lang/Nim/pull/9922
discussion (with special mremap usage on Linux, but ordinary munmap, mmap on
other POSIX).  Someone needs to do the when windows branch.
2018-12-11 14:57:28 -05:00
Charles Blake
369ac2dd2d Address dom96/Araq opinions in https://github.com/nim-lang/Nim/pull/9922
Updating accessors are also provided since the idea of this change is to
allow "updating" operations external to the module which are by their very
nature closely tied to module internals (as well as to OS interface details).
2018-12-11 10:27:27 -05:00
Charles Blake
740c5b13ea Let handles be seen outside of memfiles module so that "updating"
operations (like eg., resizing a file and re-mapping) do not need
to worry about race conditions of re-opened paths, renamed parent
directories and that sort of thing.  Operating directly on already
open handles is both safer and more efficient than relying upon the
stability of filesystem paths.
2018-12-10 11:40:08 -05:00
Andreas Rumpf
223e92b83a stdlib: documenation updates, the exception names have been changed 2018-10-25 07:42:45 +02:00
c-blake
cec89d8354 This has been unnecessary as long as rawNewObj has called zeroMem, (#8867)
and more recently indexing past the Nim-logical end has become
illegal making this line cause a crash.
2018-09-04 15:26:34 +02:00
Yuriy Glukhov
dfe3f16022 Don't depend on string.h in codegen (#8299) 2018-07-13 17:41:59 +02:00
Araq
8bcaee1fdf make tmemfile2 work again 2018-07-06 15:53:32 +02:00
Dmitry Atamanov
bf5d619a52 Add MemMapFileStream. Fixes in memFiles. (#7944)
* Add MemMapFileStream

* Added tests

* Fixed bug in memfiles (zero index for string)

* Added flush to changelog

* Attempt to fix Win's nuances

* Fix attempt to fix

* Continue...

* And again...

* Reworked tests (all for win on Win)

* Fixes in flush (Win)

* Replace fn vars to consts

* Added the attempts parameter to the flush

* Replace while to for

* Move to memfiles

* Use Natural instead of uint

* Better error messages for append mode. Handle specific cases.
2018-06-14 17:34:26 +01:00
Araq
bbb0fd4eb7 remove deprecated stuff from the stdlib; introduce better deprecation warnings 2018-05-05 21:45:07 +02:00
Araq
e593fef320 memfiles: better error checking for Windows; refs #6361 2018-01-03 13:24:20 +01:00
Denis Rumyantsev
71b1377be9 Update memfiles.nim (#6328)
FIX error in MemFile fileSize
2017-09-15 12:50:10 +02:00
Arne Döring
000b8afd26 Remove expr/stmt (#5857) 2017-07-25 09:28:23 +02:00
c-blake
d59441340d Fixes incorrect fd==0 test on Unix; Conserves handles by default. (#5512)
* Fix 2 problems.  First, 0 is a valid fd on Unix (easily gotten if user first
closes all fds and then starts using memfiles).  Use -1 instead for an invalid
fd.  Second, it is best practice to conserve open fds on Unix and file handles
on Windows.  These handles are not needed unless the user wants to remap the
memory with ``mapMem`` (or a hypothetical future ``proc resize``).  Adding a
new bool param ``allowRemap=false`` to ``memfiles.open`` solves this cleanly
in a "mostly" backward compatible way.  This is only "mostly" because the
default ``false`` case does not keep unneeded resources allocated, but that
most sensible default means that any ``mapMem`` callers need to fix all their
open calls to have allowRemap=true, as this PR also does for tmemfiles2.nim.
* Include backwards compatibility note.
2017-03-12 20:45:10 +01:00
Charles Blake
ec1a77bb86 Oops - forgot export marker. 2016-12-22 16:12:31 -05:00
Charles Blake
1bb6775f92 Add a proc == for MemSlice. 2016-12-22 15:25:13 -05:00
James Parkinson
a241b0f131 Add doco on mapMem(), extend doco on open(), and add extra lines space for readability 2016-08-05 20:55:25 +10:00
Jacek Sieka
64b0485207 fix types of ansi_c/sysio to more closely match C ABI
also fixes some instances of using C library functions when there are
nim alternatives available
2016-06-05 12:03:20 +08:00
JamesP
305766a9fa Bug fix: change non-fmRead file mode to set GENERIC_READ or GENERIC_WRITE
instead of GENERIC_ALL
which on 64bit windows rasied an [OSError] exception
2015-09-24 09:04:55 +10:00
JamesP
bdc1c5ee84 change type of windows handles to Handle 2015-09-24 09:03:03 +10:00
JamesP
7656fae456 fix wasOpened reference and set to false on close 2015-09-23 06:20:19 +10:00
JamesP
d23c697044 Add wasOpened flag for windows, so not attempt close when unopened 2015-09-22 16:16:51 +10:00
JamesP
b6b2750327 Undo zero check 2015-09-22 15:54:44 +10:00
JamesP
88fc415c69 bug fix: close() only unmapViewOfFile() when fHandle is valid.
Added extra test on windows close so if already closed it
doesn't throw an exception.
2015-09-12 14:41:50 +10:00
Adam Strzelecki
43bddf62dd lib: Trim .nim files trailing whitespace
via OSX: find . -name '*.nim' -exec sed -i '' -E 's/[[:space:]]+$//' {} +
2015-09-04 23:03:56 +02:00
Charles Blake
5ec4b7946f Add note about what is included. 2015-08-04 13:25:41 -04:00
Charles Blake
0487ad4180 Use hyperlinks to refer to other procs. 2015-08-04 13:16:27 -04:00
Charles Blake
abf15ec6ce Expand memSlices doc comment & use better example.
Have lines() iterators docs point back to memSlices() for details.
2015-08-04 12:11:33 -04:00
Charles Blake
9e8b4475e2 Spruce up doc comments as per dom96 suggestions. 2015-08-03 12:34:03 -04:00
Charles Blake
c373c7209a toString --> $. 2015-08-03 12:26:08 -04:00
Charles Blake
1bea224c4a Try to get examples to render right as HTML. 2015-08-02 12:29:24 -04:00
Charles Blake
2e4e0ffd3d Add some example code blocks. 2015-08-02 12:25:57 -04:00
Charles Blake
ad67bfcf46 Quote the \ in doc comments. 2015-08-02 12:21:49 -04:00
Charles Blake
63c4f204e8 Add some little one-line doc comment of MemSlice. 2015-08-02 12:20:05 -04:00
Charles Blake
2bcd4e9a38 Add top of module comment. Re-order definitions to
type, then converter, then 3 iterators lowest- to highest-level
(also fastest to slowest) including a new intermediate iterator
lines(MemFile, buffer) that is more like readLine(File) in case
that helps anyone port code.
Add doc comments.
Also have toString just use newString+c_memcpy instead of
currently fragile toNimStr which Araq wants a separate PR for.
2015-08-02 12:03:52 -04:00
Charles Blake
fc54fbfb98 Nix unchecked which has no semantics for objects. 2015-08-02 05:28:21 -04:00
Charles Blake
0b4c816cba cstring->pointer in MemSlice to make consistent with MemFile and
also to make more clear the care required to use MemSlice instances.
(E.g., memXXX functions rather than strXXX functions).
2015-07-29 06:14:44 -04:00
Charles Blake
f2c5676767 Remove NUL termination unneeded post toNimStr fix. 2015-07-28 06:45:07 -04:00
Charles Blake
ae303cc1c3 Rename [rR]ecord->[mM]emSlice, rec->ms, End->ending. Also update some comments. 2015-07-26 07:52:30 -04:00
Charles Blake
3f4255dd14 Beg->data, Len->size to address Varriount's issue. I was unaware of
lower case members as a strict style convention.
2015-07-24 17:23:11 -04:00