Lenguajes de programación: ¿Cuáles son las diferencias entre Rust y Swift?

Mi opinión es esta:

Ambos están destinados a ser lenguajes de sistemas de próxima generación, para brindar un nuevo nivel de expresividad y seguridad a los sistemas y la programación de aplicaciones.

Filosofía

  • Rust está destinado a ser un C ++ más seguro. El óxido está destinado a ser seguro por encima de todo.
  • Swift está destinado a ser un Python / Ruby de alto rendimiento. Swift está destinado a ser una experiencia de codificación familiar y centrada en el programador.

Concurrencia

  • Rust utiliza una API de hilo bastante convencional
  • Swift utiliza colas de ejecución de código “Grand Central Dispatch”, bloques de código y grupos de subprocesos para optimizar el rendimiento y realizar la sincronización.

Gestión de la memoria

  • La propiedad y los préstamos son el concepto fundamental para la memoria compartida y la concurrencia en Rust.
  • Swift utiliza ARC en tiempo de compilación, que es como un compilador estático colocado en la gestión de memoria manual.
  • Ambos idiomas tienen medios de memoria no administrada y punteros de uso directo (pero inseguro)

Compatibilidad con código C

  • Swift es compatible con ABI con C. Por lo tanto, el código se puede mezclar con la base de código C u objC existente. Esto es exclusivo de Swift.

REPL, codificación en vivo y JIT

  • Swift tiene un campo de codificación en vivo, REPL y puede JIT en desarrollo antes de ser compilado nativo.

De lo que he leído; Una diferencia notable que mencionaría entre los dos es:

En Rust, las asignaciones y las asignaciones de recursos se gestionan mediante el paradigma único de Rust, de Propiedad y Préstamo, aprovechando los alcances, en el buen sentido. Mientras están en Swift, son administrados por la técnica de administración de memoria de Conteo automático de referencia (ARC).

Las pérdidas de memoria no son posibles en Rust (a menos que esté arrancando cosas dentro de un bloque inseguro ),

pero en el caso de Swift, una situación llamada Retener ciclos en ARC puede causar pérdidas de memoria. Un ciclo de retención ocurre cuando dos objetos tienen fuertes referencias entre sí que evitan que se liberen y el conteo de referencias de ARC falla aquí. Lea aquí sobre cómo administrar la memoria en Swift.