← All posts tagged coding

O01eg

vk.com "ОБОСНОВЫВАЕМ ЛИБЕРТАРИАНСТВО С ПОМОЩЬЮ ПИТОНА
На протяжении десятилетий, пока модель Тьебу оставалась на ближайшей периферии академического дискурса в public choice, её применяли для двух случаев.
Первый — сугубо пространственный экономический анализ. Двухмерный случай, где «центры», к которым присоединяются агенты – это локальные общественные блага (бассейны или публичные библиотеки), финансируемые из местных бюджетов.
Второй —анализ формирования партий в идеологическом пространстве политических взглядов. Метод главных компонент показал, что в большинстве стран и культур этих измерений два, поэтому в следующий раз, когда будете делать мемы о политических координатах, знайте, что этот ваш выбор научно обоснован.
В какой-то момент времени дискурсу понадобился сумасшедший либертарианец, который взглянул на модель Тьебу и сказал – «А что если соединить пространственные и идеологические размерности и сделать наши центры предоставления локальных общественных благ центрами предоставления ВСЕХ общественных благ, включая законотворчество и обеспечение правопорядка? Тогда у нас получится система, очень похожая на то, что мы называем контрактными юрисдикциями.»
Предположим, что у есть четыре измерения (два географических и два идеологических), нормирующихся к единичному отрезку. И есть две контрактные юрисдикции, обе базирующиеся в географических координатах (0,5; 0,5), только первая имеет координаты (0;0), а вторая – (1;1). Грубо говоря, первая – это авторитарный левый гулаг, а вторая – капиталистический рай, но конторы зарегистрированы через дорогу. И жители окрестностей смогут подписываться как к первой, так и ко второй, в зависимости от своих предпочтений и движимые мотивом минимизации общих издержек. Транспортные издержки, таким образом, переопределяются как преференциальные и суммируются из географических и идеологических издержек. Это выражается в желании потребителей ходить в общественный бассейн поближе к дому, но при этом потребитель готов пройти пару кварталов, только чтобы не плавать в одной луже с коммунистами.
В чем же смысл системы контрактных юрисдикций с точки зрения модели Тьебу? В чем ее потенциал с точки зрения увеличения потребительской полезности по сравнению с альтернативами? Все очень просто: в текущих реалиях, система «территориальных юрисдикций» присоединяет агентов к себе, по дефолту учитывая лишь два измерения – пространственные. Экстерриториальные контрактные юрисдикции позволят принимать во внимание не только «географические», но и «идеологические» преференцинальные издержки, приводя к более эффективному равновесию, с точки зрения минимизации издержек её агентов.
Для иллюстрации модели и для свидетельства тому, что авторы – не простые пустозвоны, я написал несколько программ на Питоне, которые по сути являются агентскими моделями контрактных юрисдикций в духе Тьебу. Для более чёткой формализации код написан для ряда систем изначальных допущений, и файлы в формате .ipynb выложены в открытый доступ с подробнейшими комментариями, чтобы каждый мог в своем Джупитере поиграться с переменными и полюбоваться своими собственными графиками территориального разбиения агентов на контрактные юрисдикции. Всего создано несколько моделей:..."

O01eg

deadlockempire.github.io
"Welcome to The Deadlock Empire, commander!
The skills you need are your intelligence, cunning, perseverance and the will to test yourself against the intricacies of multi-threaded programming in the divine language of C#. Each challenge below is a computer program of two or more threads. You take the role of the Scheduler — and a cunning one! Your objective is to exploit flaws in the programs to make them crash or otherwise malfunction.
For example, you might cause a deadlock to occur or you might schedule context switches in such a way that two threads enter the same critical section at the same time. Any action that disrupts the program this way counts as a victory for you.
You are the Scheduler — you only have one tool at your disposal: the ability to switch contexts at any time, as the total master of time and interruptions. Let's hope it is enough... it has to be, because the Parallel Wizard's armies are upon us and only you can lead the Sequentialist armies into victory!"

O01eg

О, clippy в стабильный компилятор завезли: blog.rust-lang.org
"cargo clippy

Speaking of warnings, you can now check out a preview of cargo clippy through Rustup. Clippy is a large number of additional warnings that you can run against your Rust code.

For example:

let mut lock_guard = mutex.lock();

std::mem::drop(&lock_guard)

operation_that_requires_mutex_to_be_unlocked();

This code is syntactically correct, but may have a deadlock! You see, we dropped a reference to lock_guard, not the guard itself. Dropping a reference is a no-op, and so this is almost certainly a bug.

We can get the preview of Clippy from Rustup:

$ rustup component add clippy-preview

and then run it:

$ cargo clippy
error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing.
--> src\main.rs:5:5
|
5 | std::mem::drop(&lock_guard);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: #[deny(drop_ref)] on by default
note: argument has type &std::result::Result<std::sync::MutexGuard<'_, i32>, std::sync::PoisonError<std::sync::MutexGuard<'_, i32>>>
--> src\main.rs:5:20
|
5 | std::mem::drop(&lock_guard);
| ^^^^^^^^^^^
= help: for further information visit rust-lang-nursery.github.io

As you can see from that help message, you can view all of the lints that clippy offers on the web.

Please note that this is a preview; clippy has not yet reached 1.0. As such, its lints may change. We’ll release a clippy component once it has stabilized; please give the preview a try and let us know how it goes."

O01eg

blog.rust-lang.org
"At long last, impl Trait is here! This feature has been highly desired for quite a while, and provides a feature known as “existential types.” It’s simpler than that sounds, however. The core of it is this idea:
...
Speaking of papercuts, since Rust uses the Result type for returning errors, and ? to make handling them easy, a common pain-point of new Rustaceans is to try and use ? in main:
...
Inclusive ranges with ..=
...
Another long-awaited feature is “slice patterns.” These let you match on slices similar to how you match on other data types."

O01eg

i.ytimg.com ruby-lang.org "Ruby 2.6 introduces an initial implementation of JIT (Just-in-time) compiler.
JIT compiler aims to improve performance of any Ruby program execution. Unlike ordinary JIT compilers for other languages, Ruby’s JIT compiler does JIT compilation in a unique way, which prints C code to a disk and spawns common C compiler process to generate native code. See also: MJIT organization by Vladimir Makarov."

O01eg

mercurial-scm.org
"Rust: implementation of `hg`

This commit provides a mostly-working implementation of the
`hg` script in Rust along with scaffolding to support Rust in
the repository.

If you are familiar with Rust, the contents of the added rust/
directory should be pretty straightforward. We create an "hgcli"
package that implements a binary application to run Mercurial.
The output of this package is an "hg" binary.

Our Rust `hg` (henceforth "rhg") essentially is a port of the existing
`hg` Python script. The main difference is the creation of the embedded
CPython interpreter is handled by the binary itself instead of relying
on the shebang. In that sense, rhg is more similar to the "exe wrapper"
we currently use on Windows. However, unlike the exe wrapper, rhg does
not call the `hg` Python script. Instead, it uses the CPython APIs to
import mercurial modules and call appropriate functions. The amount of
code here is surprisingly small.

It is my intent to replace the existing C-based exe wrapper with rhg.
Preferably in the next Mercurial release. This should be achievable —
at least for some Mercurial distributions. The future/timeline for
rhg on other platforms is less clear. We already ship a hg.exe on
Windows. So if we get the quirks with Rust worked out, shipping a
Rust-based hg.exe should hopefully not be too contentious."