summary refs log tree commit diff
path: root/src/rt/rust_builtin.cpp
AgeCommit message (Collapse)AuthorLines
2011-08-01Objectified library chans and ports.Eric Holk-1/+0
2011-08-01Started working on a library-based comm system. Creating and deleting ports ↵Eric Holk-0/+47
work.
2011-07-29Add sched_threads rt function to get the number of scheduler threadsBrian Anderson-0/+5
2011-07-28Do all runtime calls to getenv at initializationBrian Anderson-2/+2
getenv is not threadsafe and (maybe as a result) it's randomly crashing with CFLAGS=-g and RUST_THREADS=32. Calls from rust code are still on their own.
2011-07-28Adding a function to stdlib to set the min stack size, for programsEric Holk-0/+7
that absolutely will not succeed with a large default stack. This should be removed once we have stack grown working. Also updated word-count to succeed under the new test framework.
2011-07-27More thorough check for interior-ness in str_from_ivecMarijn Haverbeke-2/+3
Closes #750
2011-07-22More work on word-count.Eric Holk-0/+5
Updated the MapReduce protocol so that it's correct more often. It's still not perfect, but the bugs repro less often now. Also found a race condition in channel sending. The problem is that send and receive both need to refer to the _unread field in circular_buffer. For now I just grabbed the port lock to send. We can probably get around this by using atomics instead.
2011-07-21Lots of work on memory tracking and channels.Eric Holk-19/+18
We're trying to get closer to doing correct move semantics for channel operations. This involves a lot of cleanup (such as removing the unused sched parameter from rust_vec constructor) and making circular_buffer kernel_owned. Added tagging for memory allocations. This means we give a string tag to everything we allocate. If we leak something and TRACK_ALLOCATIONS is enabled, then it's much easier now to tell exactly what is leaking.
2011-07-20Add a huge hack to allow the test runner to continue if a single task leaksBrian Anderson-0/+7
This is just until unwinding works. Adds a flag to the runtime to turn the memory leak checks on task destruction into warnings instead of fatal errors. I am so sorry. Issue #428
2011-07-19Fix calculation of sizeof boxed ivec of str in rt. Closes #712Brian Anderson-1/+5
2011-07-17Revert "Add setenv to standard library"Brian Anderson-14/+0
This reverts commit 6fb168b3dbd733f6fccebd01c2e5416f800a5566.
2011-07-17Add setenv to standard libraryBrian Anderson-0/+14
2011-07-15Remove task_unsupervise from rt builtin functionsBrian Anderson-5/+0
This was an exact duplicate of the unsupervise function
2011-07-15Modify task::join to indicate how the task terminatedBrian Anderson-1/+6
This involves sticking yet another field into the task structure
2011-07-14Add an unsupervise builtin and function to std::taskBrian Anderson-0/+5
Calling task::unsupervise de-parents the current task, with the result that failures do not propogate up the task tree.
2011-07-13Prohibit trailing whitespace under 'tidy' script. Clean up all caught cases.Graydon Hoare-1/+1
2011-07-13Trim a few more fail(1)s, not sure how they slipped past.Graydon Hoare-3/+3
2011-07-13Remove obsolete nargs counts from runtime.Graydon Hoare-17/+17
2011-07-13Attempt to correct buggy win32 timer code (causing tinderbox failures).Graydon Hoare-1/+1
2011-07-12stdlib: Move fs over to interior vectors by introducing a ↵Patrick Walton-1/+39
rust_list_files_ivec builtin
2011-07-08stdlib: Implement str::unsafe_from_bytes_ivec()Patrick Walton-0/+20
2011-07-07Fixed two races.Eric Holk-0/+5
The first is that the memory_region destructor would complain there is still an outstanding allocation. This is because circular_buffer from rust_chan wasn't refing its task, so the task was being destructed too soon. The second was where the program could deadlock while joining a task. The target task would die in the time between checking whether the task should block and then actually blocking. The fix is to use the target task's lock.
2011-07-07Removing the synchronized memory region from tasks.Eric Holk-5/+6
2011-07-07Removing most of the locks in rust_upcall.cpp and elsewhere.Eric Holk-5/+0
2011-07-06Allocate rust_ivec buffers out of the kernel poolRob Arnold-0/+60
The duplication of upcalls is due to the fact that the runtime is shared between stage0/rustc and stage1/rustc. Once snapshots are updated, they should be de-duplicated.
2011-07-05rt: Add missing CDECL to routines in rust_builtinPatrick Walton-6/+6
2011-06-30Added a nanosecond timer to time.rs, support for some floating point casts, ↵Eric Holk-0/+6
and a commandline-driven mode for pfib.rs
2011-06-29Adding support for pinning tasks to the currently running thread. Closes #598.Eric Holk-0/+9
2011-06-29Re-enable tidy (it was broken) and fix various non-tidy things.Graydon Hoare-1/+2
2011-06-28Renamed what's left of rust_dom to rust_schedulerEric Holk-10/+10
2011-06-28Removed dom_owned, splitting things between task_owned and kernel_owned. Had ↵Eric Holk-3/+3
to re-xfail a few tests brson recently un-xfailed.
2011-06-28Moved thread management to rust_kernel.Eric Holk-3/+3
2011-06-27Conservatively serialize nearly all upcalls. Successfuly ran make check with ↵Eric Holk-0/+5
RUST_THREADS=8, so we're probably fairly safe now. In the future we can relax the synchronization to get better performance.
2011-06-19rt: Fix size miscalculation in ivec_reservePatrick Walton-1/+1
2011-06-17rustc: Fix a bunch of memory management bugs relating to generic interior ↵Patrick Walton-1/+1
vectors. Uncomment all tests in lib-ivec.
2011-06-17stdlib: added getcwd and a convenience function to make relative paths ↵Eric Holk-0/+30
absolute. This will be helpful for #441.
2011-06-16stdlib: Fix reserve on zero-length interior vectors; uncomment ↵Patrick Walton-2/+13
test_unsafe_ptrs()
2011-06-16rustc: Implement conversions from interior vector data to unsafe pointers ↵Patrick Walton-0/+37
and vice-versa
2011-06-16stdlib: Introduce an ivec module into the standard library; add a minimal ↵Patrick Walton-0/+10
test case
2011-06-16rt: Add an ivec length intrinsic and an ivec reserve function, both untested ↵Patrick Walton-0/+31
as of yet
2011-06-15Re-enabled join.Eric Holk-1/+6
2011-06-13This is the mega-ucontext commit. It replaces the task switching mechanism ↵Eric Holk-0/+10
with a new one inspired by ucontext. It works under Linux, OS X and Windows, and is Valgrind clean on Linux and OS X (provided the runtime is built with gcc). This commit also moves yield and join to the standard library, as requested in #42. Join is currently a no-op though.
2011-06-10Encode meta tags in the crate and start sketching enhanced logic for ↵Graydon Hoare-5/+11
resolving crate "use" directives. Now with extra "works on OSX" kludging.
2011-05-11Introduce str_slice runtime functionBrian Anderson-0/+18
This reduces the time to execute the new lib-str tests from 1:40ish to a few seconds and will eventually allow the full lib-sha1 test to run in a reasonable amount of time. XFAIL lib-str in stage0 - it will run very slowly until the next snapshot.
2011-04-29stdlib: Add a Time module to the standard libraryPatrick Walton-0/+29
2011-04-27stdlib/rt: Add an unsafe function to cast immutable vectors to mutable onesPatrick Walton-0/+9
2011-04-27Fix _str.bytes to trivial version.Graydon Hoare-0/+26
2011-04-21stdlib: Add a pointer equality function to the standard library and a test casePatrick Walton-0/+5
2011-04-19Overhaul logging system in runtimeMarijn Haverbeke-63/+52
See https://github.com/graydon/rust/wiki/Logging-vision The runtime logging categories are now treated in the same way as modules in compiled code. Each domain now has a log_lvl that can be used to restrict the logging from that domain (will be used to allow logging to be restricted to a single domain). Features dropped (can be brought back to life if there is interest): - Logger indentation - Multiple categories per log statement - I possibly broke some of the color code -- it confuses me
2011-04-07Move to macro-based logging checks in the C++ codeMarijn Haverbeke-27/+27
No functions should be called for log statements that turn out to be inactive.