<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/libnative/task.rs, branch 0.10</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=0.10</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=0.10'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2014-03-27T17:14:50+00:00</updated>
<entry>
<title>Fix fallout of removing default bounds</title>
<updated>2014-03-27T17:14:50+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2014-03-09T02:21:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=bb9172d7b512c36f34d34b024640f030d1fde2eb'/>
<id>urn:sha1:bb9172d7b512c36f34d34b024640f030d1fde2eb</id>
<content type='text'>
This is all purely fallout of getting the previous commit to compile.
</content>
</entry>
<entry>
<title>std: Move NativeMutex from &amp;mut self to &amp;self</title>
<updated>2014-03-23T16:45:19+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2014-03-22T07:45:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=dd64bd83b72a669a20d1b7d938f1ff76aceb0cef'/>
<id>urn:sha1:dd64bd83b72a669a20d1b7d938f1ff76aceb0cef</id>
<content type='text'>
The proper usage of shared types is now sharing through `&amp;self` rather than
`&amp;mut self` because the mutable version will provide stronger guarantees (no
aliasing on *any* thread).
</content>
</entry>
<entry>
<title>log: Introduce liblog, the old std::logging</title>
<updated>2014-03-16T05:26:36+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2014-03-09T06:11:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=cc6ec8df95fbd8163b7c2c6c34469fb96b704e66'/>
<id>urn:sha1:cc6ec8df95fbd8163b7c2c6c34469fb96b704e66</id>
<content type='text'>
This commit moves all logging out of the standard library into an external
crate. This crate is the new crate which is responsible for all logging macros
and logging implementation. A few reasons for this change are:

* The crate map has always been a bit of a code smell among rust programs. It
  has difficulty being loaded on almost all platforms, and it's used almost
  exclusively for logging and only logging. Removing the crate map is one of the
  end goals of this movement.

* The compiler has a fair bit of special support for logging. It has the
  __log_level() expression as well as generating a global word per module
  specifying the log level. This is unfairly favoring the built-in logging
  system, and is much better done purely in libraries instead of the compiler
  itself.

* Initialization of logging is much easier to do if there is no reliance on a
  magical crate map being available to set module log levels.

* If the logging library can be written outside of the standard library, there's
  no reason that it shouldn't be. It's likely that we're not going to build the
  highest quality logging library of all time, so third-party libraries should
  be able to provide just as high-quality logging systems as the default one
  provided in the rust distribution.

With a migration such as this, the change does not come for free. There are some
subtle changes in the behavior of liblog vs the previous logging macros:

* The core change of this migration is that there is no longer a physical
  log-level per module. This concept is still emulated (it is quite useful), but
  there is now only a global log level, not a local one. This global log level
  is a reflection of the maximum of all log levels specified. The previously
  generated logging code looked like:

    if specified_level &lt;= __module_log_level() {
        println!(...)
    }

  The newly generated code looks like:

    if specified_level &lt;= ::log::LOG_LEVEL {
        if ::log::module_enabled(module_path!()) {
            println!(...)
        }
    }

  Notably, the first layer of checking is still intended to be "super fast" in
  that it's just a load of a global word and a compare. The second layer of
  checking is executed to determine if the current module does indeed have
  logging turned on.

  This means that if any module has a debug log level turned on, all modules
  with debug log levels get a little bit slower (they all do more expensive
  dynamic checks to determine if they're turned on or not).

  Semantically, this migration brings no change in this respect, but
  runtime-wise, this will have a perf impact on some code.

* A `RUST_LOG=::help` directive will no longer print out a list of all modules
  that can be logged. This is because the crate map will no longer specify the
  log levels of all modules, so the list of modules is not known. Additionally,
  warnings can no longer be provided if a malformed logging directive was
  supplied.

The new "hello world" for logging looks like:

    #[phase(syntax, link)]
    extern crate log;

    fn main() {
        debug!("Hello, world!");
    }
</content>
</entry>
<entry>
<title>std: Rename Chan/Port types and constructor</title>
<updated>2014-03-13T20:23:29+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2014-03-09T21:58:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=78580651131c9daacd7e5e4669af819cdd719f09'/>
<id>urn:sha1:78580651131c9daacd7e5e4669af819cdd719f09</id>
<content type='text'>
* Chan&lt;T&gt; =&gt; Sender&lt;T&gt;
* Port&lt;T&gt; =&gt; Receiver&lt;T&gt;
* Chan::new() =&gt; channel()
* constructor returns (Sender, Receiver) instead of (Receiver, Sender)
* local variables named `port` renamed to `rx`
* local variables named `chan` renamed to `tx`

Closes #11765
</content>
</entry>
<entry>
<title>std: Move libnative task count bookkeeping to std</title>
<updated>2014-03-06T05:48:08+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2014-03-05T18:35:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=9668ab58f338b27d8f53357c7fd4ea3d3f06305e'/>
<id>urn:sha1:9668ab58f338b27d8f53357c7fd4ea3d3f06305e</id>
<content type='text'>
When using tasks in Rust, the expectation is that the runtime does not exit
before all tasks have exited. This is enforced in libgreen through the
`SchedPool` type, and it is enforced in libnative through a `bookkeeping` module
and a global count/mutex pair. Unfortunately, this means that a process which
originates with libgreen will not wait for spawned native tasks.

In order to fix this problem, the bookkeeping module was moved from libnative to
libstd so the runtime itself can wait for native tasks to exit. Green tasks do
not manage themselves through this bookkeeping module, but native tasks will
continue to manage themselves through this module.

Closes #12684
</content>
</entry>
<entry>
<title>Cleaned up `std::any`</title>
<updated>2014-03-04T20:10:23+00:00</updated>
<author>
<name>Marvin Löbel</name>
<email>loebel.marvin@gmail.com</email>
</author>
<published>2014-03-03T00:01:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3158047a459b6d60d0f8f6bf5c299db0910e029a'/>
<id>urn:sha1:3158047a459b6d60d0f8f6bf5c299db0910e029a</id>
<content type='text'>
- Added `TraitObject` representation to `std::raw`.
- Added doc to `std::raw`.
- Removed `Any::as_void_ptr()` and `Any::as_mut_void_ptr()`
  methods as they are uneccessary now after the removal of
  headers on owned boxes. This reduces the number of virtual calls needed.
- Made the `..Ext` implementations work directly with the repr of
  a trait object.
- Removed `Any`-related traits from the prelude.

- Added bench for `Any`
</content>
</entry>
<entry>
<title>green,native,rustuv: Replace many pointer `transmute`'s with `as` or referencing.</title>
<updated>2014-02-23T14:15:39+00:00</updated>
<author>
<name>Huon Wilson</name>
<email>dbau.pp+github@gmail.com</email>
</author>
<published>2014-02-21T11:40:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8b246fda78858e55295ab72bde7ced9af4cbdaf6'/>
<id>urn:sha1:8b246fda78858e55295ab72bde7ced9af4cbdaf6</id>
<content type='text'>
These can all be written in a more controlled manner than with the
transmute hammer, leading to (hopefully) safer code.
</content>
</entry>
<entry>
<title>std: Move unstable::stack to rt::stack</title>
<updated>2014-02-23T09:47:08+00:00</updated>
<author>
<name>Brian Anderson</name>
<email>banderson@mozilla.com</email>
</author>
<published>2014-02-17T05:37:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=db111846b58253c723750be280a478ed7d27d879'/>
<id>urn:sha1:db111846b58253c723750be280a478ed7d27d879</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Clean up std::task docs, make TaskBuilder a real builder</title>
<updated>2014-02-16T23:34:02+00:00</updated>
<author>
<name>Kevin Ballard</name>
<email>kevin@sb.org</email>
</author>
<published>2014-02-13T06:02:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=b94daee395c2ed513ea141021e30dcff8e2590c4'/>
<id>urn:sha1:b94daee395c2ed513ea141021e30dcff8e2590c4</id>
<content type='text'>
Delete all the documentation from std::task that references linked
failure.

Tweak TaskBuilder to be more builder-like. .name() is now .named() and
.add_wrapper() is now .with_wrapper(). Remove .watched() and
.unwatched() as they didn't actually do anything.
</content>
</entry>
<entry>
<title>Convert some unnecessary StaticNativeMutexes to NativeMutexes.</title>
<updated>2014-02-15T23:13:56+00:00</updated>
<author>
<name>Huon Wilson</name>
<email>dbau.pp+github@gmail.com</email>
</author>
<published>2014-02-15T04:01:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4668cdf3c4788e4a67f1b7dea0eb2d661ac05a49'/>
<id>urn:sha1:4668cdf3c4788e4a67f1b7dea0eb2d661ac05a49</id>
<content type='text'>
</content>
</entry>
</feed>
