2009-08-19 16 views
11

Por "concurrencia" me refiero a procesos ligeros como los actores de Erlang y el GC simultáneo destinados a que dichos procesos funcionen sin problemas.¿INRIA va a agregar primitivas de simultaneidad a OCaml?

Sería genial si INRIA eliminara los inconvenientes de la implementación actual de OCaml para hacer que OCaml esté más preparado para el futuro multinúcleo.

P.S. F # no es lo que estoy buscando.

Respuesta

9

no

No puedo ser más concisa, sin reproducir su explicación. Habla por si mismo. Sí, esto es de 2002, pero no lo he oído influir sobre el tema, y ​​por el texto, no parece probable en absoluto que se retractara de estos objetivos.

Para los desarrollos actuales en la programación funcional simultánea, posiblemente las soluciones MPI (with ocaml bindings) podrían ser una solución a su problema. Obviamente, esto no es paralelismo de memoria compartida. También hay concurrent ML.

+1

No estoy preparado para profundizar en los archivos en este momento, pero estoy seguro de que ha habido subprocesos más recientes en los que se han expresado opiniones similares. INRIA se centra en admitir el lenguaje OCaml tal como está, sin avanzar con grandes características nuevas como LWP o un tiempo de ejecución concurrente. ¿No es eso en parte el objetivo de HLVM de Jon Harrop? –

+0

ocaml4multicore está disponible (con limitaciones), ver: http: //www.algo-prog.info/ocmc/web/ – nlucaroni

+1

Cabe destacar: lo que M. Leroy pronunció esa conferencia en la lista OCaml en 2002, fue el caso de que las máquinas SMP no eran tan comunes como lo son hoy en día. Sin embargo, queda por ver si la adición de paralelismo de memoria compartida al tiempo de ejecución OCaml es una victoria sobre el enfoque más tradicional de optimización para sistemas SMP: fork/exec y la comunicación entre procesos. Parece que INRIA aún tiene que anunciar que su mente colectiva ha cambiado. –

2

Hay J&oCaml, que es ...

Objective Caml más (&) la join calculus, es decir, OCaml extendido para la programación concurrente y distribuida.

+3

Pero incluso con JoCaml necesita llamar explícitamente a fork si quiere usar múltiples núcleos. – aneccodeal

0

El Thread module en la biblioteca estándar proporciona primitivas de concurrencia y ha sido aro y por bastante tiempo. También hay third party libraries que proporcionan API de concurrencia de nivel superior/diferente.

Pero parece que eres conflating concurrency and parallelism.

OCaml por supuesto no se interpone en el camino del paralelismo. Puede ejecutar OCaml en miles o millones de máquinas al mismo tiempo. Incluso hay MPI bindings para que resulte más fácil programar supercomputadores masivamente paralelos. Pero la implementación OCaml de referencia actual no paralelizará automáticamente los programas simultáneos, que creo que es lo que más le interesa.

Puede estar interesado en Multicore OCaml que proporciona una mejor compatibilidad con el paralelismo de memoria compartida, ya que las computadoras SMP se han convertido bastante frecuente en las últimas dos décadas y sería realmente bueno optimizarlos más fácilmente. Parecen estar haciendo un progreso lento pero constante y tratando de hacerlo bien.