<feed xmlns='http://www.w3.org/2005/Atom'>
<title>r-alacritty.git/tests, branch rahm</title>
<subtitle>My custom-patched version of alacritty.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/'/>
<entry>
<title>Split alacritty into a separate crates</title>
<updated>2019-04-28T13:24:58+00:00</updated>
<author>
<name>Theodore Dubois</name>
<email>tblodt@icloud.com</email>
</author>
<published>2019-04-28T13:24:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=dbd8538762ef8968a493e1bf996e8693479ca783'/>
<id>dbd8538762ef8968a493e1bf996e8693479ca783</id>
<content type='text'>
The crate containing the entry point is called alacritty, and the crate
containing everything else is called alacritty_terminal.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The crate containing the entry point is called alacritty, and the crate
containing everything else is called alacritty_terminal.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add rustfmt style guide</title>
<updated>2019-03-30T16:48:36+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>chrisduerr@users.noreply.github.com</email>
</author>
<published>2019-03-30T16:48:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=cfd025b5289bc305470a96657868c982a2b13bc2'/>
<id>cfd025b5289bc305470a96657868c982a2b13bc2</id>
<content type='text'>

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>

</pre>
</div>
</content>
</entry>
<entry>
<title>Dynamically resize terminal for errors/warnings</title>
<updated>2019-02-07T22:36:45+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>chrisduerr@users.noreply.github.com</email>
</author>
<published>2019-02-07T22:36:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=35efb4619c4b7a77b3c30de763856bc4441e236e'/>
<id>35efb4619c4b7a77b3c30de763856bc4441e236e</id>
<content type='text'>
The warning and error messages now don't overwrite other terminal
content anymore but instead resize the terminal to make sure that text
can always be read.

Instead of just showing that there is a new error and pointing to the log,
errors will now be displayed fully in multiple lines of text, assuming that
there is enough space left in the terminal.

Explicit mouse click handling has also been added to the message bar,
which made it possible to add a simple `close` button in the form of
`[X]`.

Alacritty's log file location is now stored in the `$ALACRITTY_LOG`
environment variable which the shell inherits automatically.

Previously there were some issues with the log file only being deleted
when certain methods for closing Alacritty were used (like typing
`exit`). This has been reworked and now Ctrl+D, exit and signals should
all work properly.

Before the config is reloaded, all current messages are now dropped.
This should help with multiple terminals all getting clogged up at the
same time when the config is broken.

When one message is removed, all other duplicate messages are
automatically removed too.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The warning and error messages now don't overwrite other terminal
content anymore but instead resize the terminal to make sure that text
can always be read.

Instead of just showing that there is a new error and pointing to the log,
errors will now be displayed fully in multiple lines of text, assuming that
there is enough space left in the terminal.

Explicit mouse click handling has also been added to the message bar,
which made it possible to add a simple `close` button in the form of
`[X]`.

Alacritty's log file location is now stored in the `$ALACRITTY_LOG`
environment variable which the shell inherits automatically.

Previously there were some issues with the log file only being deleted
when certain methods for closing Alacritty were used (like typing
`exit`). This has been reworked and now Ctrl+D, exit and signals should
all work properly.

Before the config is reloaded, all current messages are now dropped.
This should help with multiple terminals all getting clogged up at the
same time when the config is broken.

When one message is removed, all other duplicate messages are
automatically removed too.</pre>
</div>
</content>
</entry>
<entry>
<title>Fixing tabs in copy-paste</title>
<updated>2018-12-15T21:33:33+00:00</updated>
<author>
<name>Steve Blundy</name>
<email>sblundy@users.noreply.github.com</email>
</author>
<published>2018-12-15T21:33:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=0c3e28617a95b4ca30ad9bdbb9114f1e4d41dce5'/>
<id>0c3e28617a95b4ca30ad9bdbb9114f1e4d41dce5</id>
<content type='text'>
This resolves issues with copy-pasting tabs by including them in the
pasted string.

Selection of tabs is still inconsistent with what might be expected
based on other terminal emulators, however the behavior hasn't
regressed.

This fixes https://github.com/jwilm/alacritty/issues/219.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This resolves issues with copy-pasting tabs by including them in the
pasted string.

Selection of tabs is still inconsistent with what might be expected
based on other terminal emulators, however the behavior hasn't
regressed.

This fixes https://github.com/jwilm/alacritty/issues/219.</pre>
</div>
</content>
</entry>
<entry>
<title>Upgrade to Rust 2018</title>
<updated>2018-12-10T17:53:56+00:00</updated>
<author>
<name>Joe Wilm</name>
<email>jwilm@users.noreply.github.com</email>
</author>
<published>2018-12-10T17:53:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=217ad9ec285b4923de1790b0976c8c793039c994'/>
<id>217ad9ec285b4923de1790b0976c8c793039c994</id>
<content type='text'>
This resolves a lot of NLL issues, however full NLL will be necessary to
handle a couple of remaining issues.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This resolves a lot of NLL issues, however full NLL will be necessary to
handle a couple of remaining issues.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix rendering of zero-width characters</title>
<updated>2018-12-09T15:28:22+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>chrisduerr@users.noreply.github.com</email>
</author>
<published>2018-12-09T15:28:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=1cebcd660bf0b6dc514341fe6bc7a392b1572849'/>
<id>1cebcd660bf0b6dc514341fe6bc7a392b1572849</id>
<content type='text'>
Instead of rendering zero-width characters as full characters, they are
now properly rendered without advancing the cursor.

Because of performance limitations, this implementation only supports up
to 5 zero-width characters per cell. However, as a result of this
limitation there should not be any performance impact.

This fixes #1317, fixes #696 and closes #1318.

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of rendering zero-width characters as full characters, they are
now properly rendered without advancing the cursor.

Because of performance limitations, this implementation only supports up
to 5 zero-width characters per cell. However, as a result of this
limitation there should not be any performance impact.

This fixes #1317, fixes #696 and closes #1318.

</pre>
</div>
</content>
</entry>
<entry>
<title>Fix recording of ref tests</title>
<updated>2018-12-08T01:50:01+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>chrisduerr@users.noreply.github.com</email>
</author>
<published>2018-12-08T01:50:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=6b61e967390b2fa4a24f962c4771cdd82e0e9de3'/>
<id>6b61e967390b2fa4a24f962c4771cdd82e0e9de3</id>
<content type='text'>
Due to the lazy initialization of lines in the Alacritty history, the
recording of ref tests was broken. Because a WM would often resize the
ref test window after it was spawned, some additional lines were
initialized in the stored ref test.

To make sure lazy initialization does not play any role in the recording
and replaying of reftests, before recording and replaying the tests, the
complete grid is initialized and then truncated. This should make sure
that only the relevant lines are kept.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Due to the lazy initialization of lines in the Alacritty history, the
recording of ref tests was broken. Because a WM would often resize the
ref test window after it was spawned, some additional lines were
initialized in the stored ref test.

To make sure lazy initialization does not play any role in the recording
and replaying of reftests, before recording and replaying the tests, the
complete grid is initialized and then truncated. This should make sure
that only the relevant lines are kept.</pre>
</div>
</content>
</entry>
<entry>
<title>Fix failing test with `bench` feature</title>
<updated>2018-09-29T20:48:24+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>chrisduerr@users.noreply.github.com</email>
</author>
<published>2018-09-29T20:48:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=e01317d88593af7874da13c2043aa53336fb2d73'/>
<id>e01317d88593af7874da13c2043aa53336fb2d73</id>
<content type='text'>
Using the `bench` feature, `cargo test` was failing since one of the
benchmarks was running into a debug assertion for attempting to access a
line with an index beyond the grid length.

Since this issue was caused by the `len` property not being serialized
and deserialized, the `#[serde(skip)]` attribute has been changed to
`#[serde(default)]`. The ref-test has been edited to include the correct
grid length for proper deserialization.

This fixes #1604.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using the `bench` feature, `cargo test` was failing since one of the
benchmarks was running into a debug assertion for attempting to access a
line with an index beyond the grid length.

Since this issue was caused by the `len` property not being serialized
and deserialized, the `#[serde(skip)]` attribute has been changed to
`#[serde(default)]`. The ref-test has been edited to include the correct
grid length for proper deserialization.

This fixes #1604.</pre>
</div>
</content>
</entry>
<entry>
<title>Dynamically initialize grid storage</title>
<updated>2018-09-24T18:40:09+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>chrisduerr@users.noreply.github.com</email>
</author>
<published>2018-09-24T18:40:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=3d7e88e8a975f40996aaa71d951842db6f2fccbb'/>
<id>3d7e88e8a975f40996aaa71d951842db6f2fccbb</id>
<content type='text'>
Previously Alacritty has initialized all lines in the buffer as soon as
it is started. This had the effect that terminals which aren't making
use of the scrollback buffer yet, would still consume large amounts of
memory, potentially even freezing the system at startup.

To resolve this problem, the grid is now dynamically resized in chunks
of `1000` rows. The initial size is just the visible area itself, then
every time lines are written to the terminal emulator, the grid storage
is grown when required.

With the worst-case scenario of having 100_000 lines scrollback
configured, this change improves startup performance at the cost of
scrolling performance.

On my machine the startup changes from ~0.3 to ~0.2 seconds.

The scrolling performance with large throughput is not affected, however
it is slowed down when the number of lines scrolled are close to the
100_000 configured as scrollback. The most taxing benchmark I've found
for this was running `yes | dd count=500 &gt; 500.txt` (note the relatively
small file size). This will cause a slowdown on the first run from 0.05s
to 0.15s. While this is significant, it lines up with the time saved at
startup.

This fixes #1236.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously Alacritty has initialized all lines in the buffer as soon as
it is started. This had the effect that terminals which aren't making
use of the scrollback buffer yet, would still consume large amounts of
memory, potentially even freezing the system at startup.

To resolve this problem, the grid is now dynamically resized in chunks
of `1000` rows. The initial size is just the visible area itself, then
every time lines are written to the terminal emulator, the grid storage
is grown when required.

With the worst-case scenario of having 100_000 lines scrollback
configured, this change improves startup performance at the cost of
scrolling performance.

On my machine the startup changes from ~0.3 to ~0.2 seconds.

The scrolling performance with large throughput is not affected, however
it is slowed down when the number of lines scrolled are close to the
100_000 configured as scrollback. The most taxing benchmark I've found
for this was running `yes | dd count=500 &gt; 500.txt` (note the relatively
small file size). This will cause a slowdown on the first run from 0.05s
to 0.15s. While this is significant, it lines up with the time saved at
startup.

This fixes #1236.
</pre>
</div>
</content>
</entry>
<entry>
<title>Optimize Row::reset</title>
<updated>2018-06-02T16:56:50+00:00</updated>
<author>
<name>Joe Wilm</name>
<email>joe@jwilm.com</email>
</author>
<published>2018-05-19T18:18:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=c61a912f6221a320ec4787cd883527b0e7f26a8e'/>
<id>c61a912f6221a320ec4787cd883527b0e7f26a8e</id>
<content type='text'>
Now, only cells that have been used are cleared. This is achieved by
using a "occupied" memo on the Row itself. The value, `occ`, is updated
wherever the Row is accessed mutably, and it's cleared to zero in
Row::reset.

The tests for grid scroll_up and scroll_down were updated to include a
test on the value `occ` and slightly refactored, but are otherwise
equivalent to the previous implementation of those tests.

Because of the change to the `Row` struct, the ref tests were updated so
Deserialization keeps working as expected.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now, only cells that have been used are cleared. This is achieved by
using a "occupied" memo on the Row itself. The value, `occ`, is updated
wherever the Row is accessed mutably, and it's cleared to zero in
Row::reset.

The tests for grid scroll_up and scroll_down were updated to include a
test on the value `occ` and slightly refactored, but are otherwise
equivalent to the previous implementation of those tests.

Because of the change to the `Row` struct, the ref tests were updated so
Deserialization keeps working as expected.
</pre>
</div>
</content>
</entry>
</feed>
