- golangar.com.ar
- golangweekly
- Francesc Campoy (Google SF)
- JustForFunc (Youtube)
- gcppodcast.com
- Documentación antes que código
- Cross-compilation
- Garbage collection
- stdlib muy minimal
- Sin clases sin herencia ni interfaces se satisface implicitamente (smalltalk like?) -> leer mas sobre esto!!
- Concurrencia al estilo de CSP (Dijkstra)
- Goroutines (threads). Channels (comunicación inter-routines). Las rutinas manejan memoria (pueden leakear)
- Go tambien tiene mutexes y threads, aparte de los channels.]
- Go se hizo para comunicación entre servers. (paquete
net
)
- Accept es bloqueante (como en los sockets de C)
- Necesitamos threads (Goroutines)
- Sólo hay que agregar go al método y lo tenemos concurrente :O :O
- Similar a los tcp
- Se recibe un handler (funcion) para poder usar el modulo http.
- Se tiene un tipo A con métodos
- Se tiene otro tipo B con un tipo embebido
- El tipo B tiene declarados impícitamente los métodos del tipo A
- Se puede definir qué métodos exponer. (!!)
<-
Envio a canales.- No necesariamente son async
select
elige sobre operaciones en canales.- En caso de operaciones que coincidan en su "prioridad" de ejecucion, se ejecutan aleatoriamente (se puede definir que implementar)
- Se puede conectar tcp y websockets
- (@caco_patane)
Ideas:
- lib + cli + API + tests
- API Mocks
- Port de APIs
- Scraper/crawler
- Procesar archivos por lotes
-
Gustavo Rodríguez (ML)
-
El cambio de 1.7 a 1.8 trajo mejoras en los tiempos de pausa del Garbage Collector (10 microsegundos)
-
Hasta 1.4: Mark and sweep. Pausa el proceso, identifica lo accesible y libera lo demás. El problema: lento y fragmenta el heap
-
1.5: Throughput vs latencia - algoritmo tricolor (Dijkstra) sobre los objetos involucrados en el proceso.
- Problemas: las referencias cambian en el ciclo de vida del proceso y el seguimiento puede quedar inconsistente. Para esto, el GC actúa ante cada cambio de referencia para mantener el seguimiento en un estado válido.
-
1.6 Mejora en el algoritmo de GC, pero se nota en programas que manejan mucha memoria
-
1.7 Mejora en goroutines
-
1.8 Mejora descripta arriba
-
1.9 Parece que van a usar algoritmos generacionales para mejorar el GC (lo que usa OCaml para no chequear tooodo el heap de una)
Eliminate SWT stack re-scanning - Austin Clements, Rick Hudson Fisher - Sewell: Golang's Realtime GC gc-latency-experiment
Github: ckuroki
- 100% KV NoSQL
- 100% Go
- No depende de un servicio, sino que está embebida en el programa (onda SQLite)
- 1 db es un archivo (estándar
.db
) - B* tree
- n buckets (asociados a entidades?)
- Las keys no se repiten en los buckets
- Transaccional, impactando en múltiples buckets de manera atómica
- Permite una sola transacción de escritura a la vez y varias de lectura
- Se puede usar para apps mobile (!!!)