Эти страницы объясняют разницу в языке программирования D.
Примеси в этом контексте - это код, сгенерированный на лету, а затем вставленный в этот момент кода во время компиляции. Очень удобно для простых DSL.
Характеристики - это внешние значения времени компиляции (а не код, сгенерированный из внешнего источника). Разница небольшая. Миксины добавляют логику, трейты добавляют данные, такие как информация о типе времени компиляции.
Не очень много знаю о Ruby, но надеюсь, что это немного поможет.