Commit Graph

3347 Commits (c9664e746b0f4b51e5fde48284e01cc7c3243c76)

Author SHA1 Message Date
Joe Groff dbbfdd7651 Revert "io.pathnames: Added ~/ (tilde) prefix recognition as a special pathname."
This reverts commit 4e10f09787.
2012-01-31 11:46:02 -08:00
Joe Groff 63f25a179e Revert "io.pathnames: Revised ~ support to expand on the first tilde, and not on "~/"."
This reverts commit 251a2a19a6.
2012-01-31 11:45:51 -08:00
otoburb 251a2a19a6 io.pathnames: Revised ~ support to expand on the first tilde, and not on "~/".
This mimics the same behaviour as "ls ~" in the shell, which expands the alias
as a directory, and not as a filename. For the specific edge-case where a
filename called "~" must have a path constructed to it (e.g. "./~" or "~/~").
2012-01-11 02:36:47 +00:00
otoburb 4e10f09787 io.pathnames: Added ~/ (tilde) prefix recognition as a special pathname.
vocab:, resource: and ~/ are special pathnames. Modified absolute-path word,
added test cases and updated io.pathname documentation.
2012-01-11 02:36:47 +00:00
Slava Pestov e9064aaf36 Set up listener's manifest so that words defined in "scratchpad" take precedence over other vocabularies and do not raise a restart. This matches the behavior of IN: and USE: in files, where the IN: takes precedence. Also remove unused clear-manifest word. Fixes #407 2012-01-02 23:18:52 -06:00
Joe Groff 3f6306ef61 math.parser: hex> etc. shouldn't take radix prefix
Fixes #453
2011-12-16 17:20:05 -08:00
rien 3b52a5ae6e fixed effect based on inner behavior and outer context 2011-12-10 19:47:34 -05:00
Doug Coleman 64886491e4 bootstrap/stage1: Turn off parser-quiet? flag sooner so the files loaded in the USING: list in stage2 print a loading message. 2011-11-30 23:15:43 -08:00
Doug Coleman c3dcf43e03 core/basis: trim down using lists 2011-11-30 23:15:42 -08:00
Joe Groff b50ffc6da0 io: implement stream protocols on f
Fixes deployed applications that write to output-stream
2011-11-28 20:36:34 -08:00
Joe Groff cad8128b3e namespaces: rework so a singleton isn't necessary
Make global foldable, and make the underlying global object a hashtable wrapper. Also, use a tuple instead of a generic array for the global box type.
2011-11-28 18:25:27 -08:00
Joe Groff c1c8155468 namespaces: make set-global/get-global foldable
Store the globals hashtable as an array of boxes so that the key-to-reference mapping is constant. Use a singleton and an unfoldable "box-at" word so that get-global and set-global optimize to direct operations on the associated box when the variable name is a compile-time constant. Fixes #200.
2011-11-28 18:25:27 -08:00
Doug Coleman 664239e1ba generalizations: Refactor stack-checker so that smart combinators can be used with curry and compose. 2011-11-27 20:25:22 -08:00
Joe Groff 039a92961d syntax: add note to #! docs 2011-11-27 15:03:40 -08:00
Joe Groff cd5f4f9b35 lexer: skip #! as a single token at front of line
Fixes #370
2011-11-27 14:59:54 -08:00
Joe Groff 8018250bd9 io.files: back out resource-path change
It's too brittle against varying current directories or the Factor directory being moved.
2011-11-27 12:37:58 -08:00
Joe Groff 19db0464a6 io.files: use initialize to set resource-path
If a resource path is already set in the image, don't change it. Should make #364 work a bit more as expected, and let us set the resource path for deployed Mac OS X bundles.
2011-11-27 12:37:58 -08:00
Joe Groff 337b08d0b2 math.integers: make bignum/f round to even on tie
Fixes #372
2011-11-26 17:44:29 -08:00
Joe Groff 9bbe578e01 math.integers: pass tests even if number-base set 2011-11-26 17:37:17 -08:00
Joe Groff fde94d2cb0 math.integers: test round-to-even-on-tie behavior 2011-11-26 16:03:43 -08:00
Joe Groff c3f4282efe math: neg? needs to be defined for all reals 2011-11-26 15:37:58 -08:00
Joe Groff 3c5fa11ede math.parser: don't accept hex float without expt
Part of #372
2011-11-26 15:15:46 -08:00
Joe Groff b38ce8a794 oops, radix prefixes shouldn't chain 2011-11-24 12:39:52 -08:00
Joe Groff 74c753ab39 math.parser: test harder 2011-11-24 12:34:50 -08:00
Joe Groff f384633dbb math.parser: reject "0x" etc. without any digits 2011-11-24 12:27:40 -08:00
Joe Groff 12a0fdf293 parser: remove parse-base dead code 2011-11-23 22:33:31 -08:00
Joe Groff 93e5b711a6 syntax: remove BIN: HEX: OCT: 2011-11-23 20:07:33 -08:00
Joe Groff 9cc643f907 math.parser: oops 2011-11-23 19:51:15 -08:00
Joe Groff ee5e4caccf math: add neg? word
Do the right thing with integers or floats
2011-11-23 19:51:05 -08:00
Joe Groff 2ff5e76690 let's pretend BIN: HEX: OCT: never happened 2011-11-23 19:22:37 -08:00
Joe Groff eee483654a use radix literals 2011-11-23 19:03:40 -08:00
Joe Groff 64017175de math.parser: natively support 0b 0o 0x syntax
Closes #371
2011-11-23 18:30:22 -08:00
Doug Coleman d7aee3256e classes.maybe: Change the type of maybe's class slot. As a result, maybe: maybe: integer is valid now, so fix the unit tests and its prettyprinting. 2011-11-23 01:43:02 -08:00
Doug Coleman e09de9d6a1 classes.maybe: make maybe's slot type a classoid so you can do maybe: union{ }. Fix prettyprinting of anonymous-union/intersection. Fixes #427, fixes #428. 2011-11-23 01:19:09 -08:00
Doug Coleman 3e2fc2f0cb classes: optimize instance? for classoids 2011-11-22 20:38:07 -08:00
Doug Coleman 30ade9023c classes: add syntax for intersection{ and union{ anonymous classes. make classoid a mixin. 2011-11-22 18:49:42 -08:00
Doug Coleman 627bce6615 classes: Make methods dispatch on maybes. Fix a couple bugs in the implementation of maybe. classoid? is now a dumb test if an object could be a well-formed classoid; valid-classoid? tests for well-formedness. Move maybe tests. Make pprint* work better on methods. 2011-11-22 15:12:20 -08:00
Doug Coleman d3a4e72f95 classes.maybe: move maybe definition from classes.union to classes.maybe 2011-11-22 02:46:36 -08:00
Doug Coleman 14dbf929ee classes.union: Define a maybe: word that makes a tuple that acts as an anonymous union for a type and f. Updated all the places we define UNION: ?foo foo POSTPONE: f ;. Fixes #416 and lots of headaches. 2011-11-22 01:56:13 -08:00
Joe Groff 86d5e8529c random: go faster
* Use int <ref> instead of 4 >le
* Inline sequences:push-all
* Types, hints, inlines
Re: #328
2011-11-15 20:45:16 -08:00
Joe Groff c882d96644 strings: inline >string and 1string
Fixes #340
2011-11-15 19:15:19 -08:00
Joe Groff 0f876e93b6 rearrange source-file-error error. to load earlier
Fixes #359
2011-11-15 18:26:35 -08:00
John Benediktsson bae84edb38 slots: fix initial value tests. 2011-11-14 10:26:08 -08:00
John Benediktsson fbfa57ea01 assocs: 5-8% performance improvement to assoc>map. Fixes #69. 2011-11-12 17:02:33 -08:00
Slava Pestov 2cf72ef255 Fix bootstrap 2011-11-12 16:45:04 -08:00
Slava Pestov 74d33de1ab hashtables: small cleanup 2011-11-12 15:35:51 -08:00
Slava Pestov 081527628d Fix ambiguity between 'initial: f' and no initial value in a slot spec. Fixes #382 2011-11-12 15:35:51 -08:00
Joe Groff beb0f48da9 vm: more defense against multi-faulting
* Clear faulting_p from a safepoint rather than inside general_error, because jumping into unwind-native-frames could blow up.
* Handle multiple faults from fatal_error by breakpointing. Is there anything else we can safely do at that point?
* Verify memory protection faults in the top half of the signal handlers because signal dispatch could fault. Treat memory faults during gc or fep as fatal errors.
* Add a function factor_vm::abort() that restores the default SIGABRT handler and ::abort()s. Use it from fatal_error() so we get useful context from gdb and so the user gets feedback from the system crash reporter that Factor blew up and didn't just disappear.
* In factorbug(), don't proceed with .s .r .c if it would be unsafe to do so.
* Don't pile on signals if we've already called fatal_error().
2011-11-12 13:02:57 -08:00
Joe Groff a3228dc7a7 math.parser: undo some inlining to shrink size
For #318.
2011-11-11 15:49:53 -08:00
John Benediktsson 3926133d4f hashtables: fix docs for new-key@, and note that quadratic probing is used now. 2011-11-10 16:20:59 -08:00
Joe Groff 26c7c564bf bootstrap.primitives: remove counting "profiling" 2011-11-10 16:04:42 -08:00
Joe Groff 5b43301eb6 vm: strip out call-counting profiler
This makes the separate "code" and "entry_point" fields in word and quotation redundant, so also remove them to reclaim an additional cell per word and quotation object, which should help with #318.
2011-11-10 16:01:07 -08:00
John Benediktsson 2b855bcb5f hashtables: allow re-using deleted tombstones. Fixes #381. 2011-11-10 13:05:51 -08:00
John Benediktsson 15fee03989 combinators: fix docs for case. 2011-11-10 11:20:28 -08:00
Joe Groff 65c17f7ace slice boa -> <slice-unsafe>
If you didn't define it, don't boa it
2011-11-09 19:22:09 -08:00
Joe Groff 0617838fb9 io: clean up some mess 2011-11-09 19:11:04 -08:00
Joe Groff f5bdff14f6 io: fix each-block-slice typo 2011-11-09 18:06:58 -08:00
Joe Groff 53d027928c io: more hot-rodding for #376
* Change the interface of read-into to return a slice and an eof boolean separately so the compiler can optimize the slice.
* Add an each-stream-block-slice combinator that behaves like each-block but reuses a preallocated buffer for every iteration.
* Pull some strings in the stream-read-into implementation to further improve type propagation and bounds check elimination.
2011-11-09 17:22:01 -08:00
John Benediktsson f0f0751910 sequences: improve docs for map-sum. 2011-11-09 15:00:08 -08:00
Joe Groff ce6669d87d io.files: add file-reader, file-writer mixins
This lets us do some trickery so that the stream-element-type propagates from <file-reader>/<file-writer>. For #376.
2011-11-09 14:43:39 -08:00
Joe Groff 1de810f416 io:read: don't resize output buffer if unnecessary
Even with a short-circuit test in the VM primitives, resize still has an overly high runtime cost in tight loops. For #376.
2011-11-09 14:29:12 -08:00
Joe Groff b3598c2384 io.backend.unix: init-signal-pipe function
Currently just reads off signal numbers and drops them.
2011-11-08 08:42:48 -08:00
Doug Coleman be9f8a99f0 Rename lookup to lookup-word. 2011-11-06 16:00:00 -08:00
Doug Coleman 43c5c9162e Make the require-hook throw an error if the vocabulary does not exist in the dictionary or on disk. Move require docs to vocabs. Add unit tests for require. Fixes #339. 2011-11-03 11:39:34 -07:00
Joe Groff 1dc540f60e vm: reserve some more special-objects
Need a jit-safepoint object to deal with #332, and ffi-signal-handler words for immediate signal handling during FFI calls
2011-11-02 22:16:08 -07:00
Doug Coleman 201109937e vocabs.loader: Fix spacing. Remove unit test. 2011-11-02 19:30:54 -07:00
Doug Coleman 484836be3a Rename (load-vocab) to (require), add tags.txt for "p" vocab loader test. Code formatting. 2011-11-02 18:07:22 -07:00
Joe Groff 75cba3106a remove BSD,solaris,etc. misc platform support code 2011-11-02 17:13:51 -07:00
Doug Coleman 351ec4ec2f Add a unit test vocabulary for vocabs.loadeer. 2011-11-02 16:47:53 -07:00
Doug Coleman 86974b11a2 Clean up formatting, rename load-vocab-hook to require-hook. Add a unit test for vocabs.loader. 2011-11-02 16:31:42 -07:00
Joe Groff 83215f75d3 sequences: relate max, min, supremum, infimum docs
Suggested by @yac. Closes #321.
2011-11-02 13:43:06 -07:00
Joe Groff c8aab6659d Revert "syntax: make it so PRIMITIVE: verifies primitives"
This reverts commit 200ea70cffc4bdc74a97e4981442161f64cdbaa3.
2011-11-02 13:23:11 -07:00
Joe Groff b3c0064012 primitives: fix effect of (clear-samples) 2011-11-02 13:23:11 -07:00
Joe Groff 3c7bd83230 add sampling profiler primitives for bootstrap 2011-11-02 13:23:10 -07:00
Joe Groff a834ebd493 syntax: make it so PRIMITIVE: verifies primitives
It's a bit strange for disparate vocabs to reference words that get created out of thin air during bootstrap, so this lets there be some trace in the seeded vocab source that there was a word created there.
2011-11-02 13:23:09 -07:00
Joe Groff 9c02c17cb8 move counting profiler to tools.profiler.counting 2011-11-02 13:23:09 -07:00
Joe Groff 4ab6d18cbd tools.profiler: rename to tools.counting-profiler 2011-11-02 13:23:06 -07:00
Joe Groff 8aebe4677b constants for special object hardcoded literals 2011-11-02 12:54:50 -07:00
Doug Coleman be12f2b27d Make "foo.private" require load foo instead.
Move require from vocabs.loader to vocabs. Update everything.
Fixes #201.
2011-11-02 11:50:03 -07:00
Slava Pestov eec7602aed Move definition of 't' from syntax to bootstrap/primitives to fix bootstrap, now that 't' really has to be a class early 2011-10-31 00:24:26 -07:00
Slava Pestov 52cf183e4e classes.union: unions of built-in types now have more efficient predicates. Fixes #292 2011-10-29 17:11:03 -07:00
Doug Coleman d3ba70a7d8 Remove the lexer-factory because nothing uses it. Update usages. 2011-10-29 01:11:19 -07:00
Doug Coleman 2bcb000873 Add a toggle word to namespaces and update docs, tests, and usages. Document with-global too. 2011-10-29 01:05:38 -07:00
Doug Coleman 9ce1f894a2 Change prompt to something we can copy/paste back into the Factor repl. Add auto-use word. Fixes #301. 2011-10-29 01:05:38 -07:00
Doug Coleman 323ee6f53e Cleanup vocab name validation. Vocab names and vocab prefixes are the same concept, and by disallowing slashes, spaces, and colon, we automatically check for absolute paths. Unit test this. 2011-10-29 01:05:37 -07:00
Joe Groff cb6f175ef8 vm: dispatch signal handlers through subprimitive
We also need to save C ABI volatile registers before calling the signal handler in order to be able to reliably resume. Add signal-handler and leaf-signal-handler subprimitives to preserve volatile registers before invoking the signal handler C function.
2011-10-27 21:18:18 -07:00
Doug Coleman 313a8dbe88 Add a lint check for swap .. swap that can be replaced by dip. Clean up the cases it finds. 2011-10-26 13:01:04 -07:00
Doug Coleman 1641adc511 Use dip instead of swap swap for making file streams 2011-10-26 11:48:26 -07:00
Doug Coleman b5b27676c4 Update Windows for word renames, fix lint errors 2011-10-24 21:50:02 -07:00
Doug Coleman f05e33fa37 Fix all failures in the linux64 build email 2011-10-24 19:33:09 -07:00
Doug Coleman b61f9f6903 Forget some classes after unit tests so that running "classes" test succeeds multiple times in a row 2011-10-24 16:59:46 -07:00
John Benediktsson 7b177d6237 vocabs.loader: actually use the root cache. 2011-10-24 16:19:59 -07:00
Doug Coleman 96da8df16e Rename class to class-of 2011-10-24 06:47:42 -05:00
Doug Coleman a7f6982354 Rename vocab to lookup-vocab 2011-10-24 06:42:54 -05:00
Doug Coleman 3c99d38a7f Remove docs for removed word 2011-10-24 00:57:14 -05:00
Doug Coleman c66849384e Factor out ``no-roots no-prefixes'' into its own word. Add load-root, load-from-root, vocabs-in-root and implement load in terms of load-from-root.
Add error checking for append-vocab-dir and (child-vocabs) in case someone tries to pass them the wrong parameters.
Rename: vocab-dir+ to append-vocab-dir
Document load-from-root and load-root
2011-10-23 19:59:01 -05:00
John Benediktsson a13676f3b6 Remove stack effects from HELP: declarations. 2011-10-20 19:36:11 -07:00
John Benediktsson 20a1d63df4 hash-sets: separate <hash-set> and >hash-set to match other containers. Fixes #154. 2011-10-19 11:35:25 -07:00
John Benediktsson 8641187299 More cleanup of unused stuff. 2011-10-19 11:01:16 -07:00
John Benediktsson e00d06cd09 Cleanup some uses of global [ ] bind. 2011-10-19 11:01:16 -07:00