
[Musica]
ciao a tutti quelli che potresti aver sentito
durante gli ultimi giorni che Firefox
ottenuto un nuovo rilascio con questo bello
logo Firefox quantum ed è in grande
barche alimentati da ruggine e mi piacerebbe
non parlare di Firefox ma di più
ruggine quindi chi sono io sono coreana sto lavorando
per una piccola azienda chiamata s Kara tu
puoi trovarmi su twitter come iraq e tu
in pratica puoi semplicemente metterlo nel tuo
il profilo di bash lo ha generato e tu sarai me
per un giorno sono arrestato in elasticsearch
allenatore e organizzatore di eventi sono stato un
programma rubino dal 2003 e una pausa
il programma è dal 2013 la regola di alcuni
le lingue erano sei tu sei buono io sono il
Amministratore delegato di tale società, io sono generalmente un
persona di comunità Faccio il pallone arrugginito
e incontri di ricerca e ho organizzato il
Convegni Euro camp e J rubyconf
che sono un po ‘ speciali perché il
organizzatore di questa stessa conferenza Diana
prima erano coinvolti in questi due
e sono stato molto felice di lavorare con lei
e molto felice di parlare finalmente a questo
uno poi ho anche organizzato l’ europeo
ruggine conferenza rug fest e una coppia
di altri organizzatori sono anche qui e
Faccio parte della comunità globale della ruggine
squadra in modo che il resto del progetto abbia una comunità
squadra di cui faccio parte come hobby
generalmente sparano frecce a roba mia
durante il controllo di qualità, quindi il titolo di questo discorso
è perché la ruggine ha successo non voglio
introdurre come la lingua in pieno io
in realtà parlerebbe di ciò che è il
contesto e perché è attualmente
qualcosa di cui parlano molte persone
riguardo al problema qui c’è quasi
nessuna metrica netta comparabile per
programmazione dei linguaggi in giro come pari
se raccogliamo qualche tipo di numeri
la comunità di riposo non sappiamo se
questo è buono o cattivo perché quasi nessuno
altrimenti non c’è lavoro strutturato
su come le comunità di linguaggi di programmazione
anche il lavoro lo prende come un po ‘
cosa ma ciò significa che devo definire
che successo c’è e per me sono questi
almeno cinque cose direi a
il linguaggio di programmazione ha successo a
almeno per noi che spostiamo lo stato di
tecnologia in avanti è utilizzato in
ambienti di produzione considerevoli
attrae il contributo se è un
linguaggio di programmazione open source che
nasconde in particolare una crescita considerevole
per una lingua di partenza che è un
metrica importante e attrae
feedback positivo perché è quello che
vuoi avere non faremo cose
meglio non vogliamo forzare cose
le persone bene che significa che devo spiegare
che ruggine è chi qui non ha mai toccato
ruggine va bene, ho intenzione di fare un corto
introduzione è per questo che è qui così
ruggine è una nuova programmazione di sistemi
linguaggio che alimenta ed è stato sviluppato
insieme a servo che è un nuovo
motore di ricerca sperimentale di Mozilla
Attualmente sta muovendo in Firefox è
sviluppato da Mozilla e dalla comunità
e il primo mondo di rilascio stabile potrebbe
15 2015 2 anni come stalla
linguaggio di programmazione prima di quello che era
un progetto di ricerca che sta fornendo un
alternativa a C e C ++ ma anche a
altri linguaggi di alto livello a
lingue di livello superiore e le tre
le cose su cui concentrarsi sono sicure
concomitante e veloce ed è generalmente
percepito che la sicurezza in particolare qualsiasi
il tipo di sicurezza della memoria sarà sicuro
che il tuo programma non piega SEC e
tutto questo tipo di cose
arriva automaticamente a un costo di runtime
di solito attraverso una spazzatura
collezionista o qualche tipo di gestione
sistema lì la cosa con ruggine è quella
se vediamo rapido concorrente sicuro, abbiamo detto
prendiamo tre di loro non possiamo fare un passo
off questo le caratteristiche principali del
il linguaggio è se ti piacerebbe solo
avere come piccoli avrebbe avuto una statica
sistema di tipo di sito con tipo locale
inferenza in modo da non dover digitare tutto
digitare tutte le variabili rilevate dal compilatore
esso stesso ha una nozione esplicita
di mutabilità quindi qualcosa è immutabile
o no e devi definirlo che ha
qualcosa che chiamiamo costo zero
le astrazioni sono per niente piccole
asterisco su di esso noi astraggono cose così
non introduciamo alcun costo attraverso
l’astrazione che a volte è gente
pensa come solo perché stanno usando
l’astrazione e improvvisamente no
costa nulla per farlo
semplicemente non vogliamo che la lingua sia messa
qualsiasi costo aggiuntivo per l’utilizzo di un
astrazione ha tempo di esecuzione indipendente
sicurezza concorrente verrò a quello
tratta gli errori come valori non ci sono
eccezioni non abbiamo nulla che abbiamo
qualcosa verso cui ci muoviamo
chiamandolo memoria automatica statica
gestione che non gestisci manualmente
memoria ma succede anche alla compilazione
tempo e puoi controllarlo se vuoi
e non ha assolutamente spazzatura
collezione costruita nel linguaggio
non ha un sistema runtime, quindi cosa fa?
sembra solo un piccolo frammento di ruggine
codice è un linguaggio di parentesi graffe come
C C ++ Java è necessario disporre di un main
funzione come C ha e oltre a ciò
sembra un po ‘ un mix tra
C e se hai mai usato ml ml ha un
Sintassi della materia ispirata a ml
ha legami alle variabili introdotte
di lasciare e un’altra cosa che fa un
E commerciale se si desidera passare le cose da
qualcosa che è simile a un riferimento
Vengo a quello in un secondo così siamo noi
non stanno inventando troppa sintassi nuova
qui siamo molto ispirati su ciò che è
là fuori così un paio di concetti base
della lingua il primo concetto di base
che devi capire se parli
sulla mutabilità tutto il tempo quindi la ruggine è
un linguaggio sul controllo, quindi non lo fa
diciamo dentro la ruggine
tutto è immutabile o all’interno di ruggine
tutto è mutabile ciò che dici sei tu
Devo definirlo così dato questo pezzo di
codice ruggine Ho due strutture dati uno
è nell’altro e uno ha un campo
ha un intero dentro vedi se il puntatore
funziona sì, questo è quello interiore
ha un numero intero e questo è solo un esterno
uno che ha l’interno in me
Costruito con un certo valore e cerco di
inserire per assegnare questo valore a qualcosa
altrimenti questo non verrà compilato perché da
di default tutto è immutabile lo sarà
in realtà dimmi che non posso assegnare a
un campo immutabile indicava Val perché
DS è immutabile tutto ciò che è dentro
è immutabile che in realtà devo dire
la ruggine è discutibile
questo è mutabile, posso davvero mutarlo
questo è inteso e questo è ciò che vedi
quello in diversi tipi di combinazioni
tutto il tempo questo concetto è ovunque
è semplice all’inizio ma è così
ripercussioni per gli altri e l’altro
concetto di base e questo è qualcosa che
lo farai se inizi a imparare la lingua
probabilmente dovrò abituarmici per uno
o due settimane o qualcosa del genere
ha un concetto base di chi possiede i dati e
chi si fa dare in prestito lo chiamiamo noi
chiama che prendere in prestito questo è qualcosa
questo è nuovo di solito non lo hai
programmato in ambienti che hanno
questo come un dato esplicito di nozione
la proprietà però è una cosa che molto
di persone parlano attivamente di quando loro
pensa ai sistemi specialmente in C come
quello che possiede i dati è necessario
rilasciare è colui che non si deve
assicurati che non lo delegano
la ruggine ha questa nozione esplicita
le regole intorno a ciò sono ogni parte di
i dati sono di proprietà esclusiva , sono solo uno
proprietario questa proprietà può essere passata
perdendolo nel processo e quando lo possiedi
i dati raggiungono la fine dello scopo è
distrutto semplicemente parlando abbiamo un
contatore di riferimento che può contare solo
a uno e una volta che il riferimento scende
i dati vanno come deve essere
disallocato e questo può essere fatto
staticamente così in un esempio ho un
file e ho una funzione che richiede a
file e scrive ad esso e noi in realtà
passare la proprietà ogni volta che non lo fai
qualcosa di speciale in ruggine tu in realtà
passare la proprietà che apriamo
e lo passiamo su una delle cose
questo è fondamentale qui non posso mai chiamare
quella funzione di nuovo chi è quel file
perché ho trasmesso la proprietà e
questo ha una semantica molto utile perché
tutto ciò che richiede la proprietà potrebbe
in realtà chiudi il file che farebbe
eventuali chiamate successive a scrivere al
file illegale che il linguaggio fa
la ruggine è molto buona a rendere illegale
Stato non rappresentabile, non riesco proprio a scrivere
quel programma in quel modo quello che posso fare
anche se posso raggiungere l’ altra base
concetto che ho detto um posso dire di poterlo fare
prendere in prestito l’ accesso mantenendo la proprietà
darlo a un altro pezzo del sistema
e riprendendolo e prendendo in prestito accade
di nuovo in un modo mutevole e immutabile
c’è una relazione molto intuitiva
c’è qualcosa che prendo in prestito immutabilmente io
può alimentarlo molte persone come o come
molte parti come voglio perché quello
assicura che nessun’altra parte nell’in
il progetto lo muta così sempre
rimane lo stesso ma puoi solo prendere in prestito
è mutabile una volta ed è esclusivo così
non puoi avere un prestito immutabile a
nello stesso tempo in cui ti mutui in prestito
può avere l’uno o l’altro e
indebitati immutabili puoi averne tanti
come tu vuoi è davvero così condiviso
nuovo stato mutabile e questo sarebbe a
tutta l’ altra conversazione è un problema anche in
applicazioni a thread singolo che noi
assicurati di non averlo
come appariva il codice quando lo volevo
in realtà prendere in prestito ho detto in questo modo
e commerciale è un indicatore per I
prendere in prestito qualcosa di mutevole II e poi io
posso dire che posso scrivere su quel file per legare
è perché prendo in prestito solo l’ho capito
indietro Ho letto che la proprietà rimane in
principale e cade alla fine questo intero
la cosa è piuttosto semplice
um ci vuole del tempo per abituarsi su
come effettivamente programmare in questo
ambiente in cui queste nozioni sono loro
esplicito dà anche un paio di altri
cose questo è un esempio molto minimale
che è
Ho una collezione di interi e io
prendere in prestito uno degli elementi e il
la collezione è mutevole e mentre io ancora
avere uno degli elementi del
collezione dico che voglio modificare il
raccolta scrivendo ad esso e questo è
qualcosa che la ruggine effettivamente lo rileva
ti dirò dal modo in cui hai ottenuto un
mutuatario immutabile attivo non è possibile
attualmente modificare la raccolta fino al
quel prestito diventa inattivo e questo è
un problema molto comune soprattutto in C ++
applicazioni quando hai dei puntatori a
vettori che in seguito cambierai di dimensioni
e loro diventano reali che ho individuato e il
il punto è per il vettore originale non lo sono
più valido in realtà in grado di invalidare
la validità di tutti i controlli di resto
riferimenti al momento della compilazione anche al
punto in cui abbiamo una nozione di alcuni
pezzo di dati contiene un interno
riferimento al legame tra quelli è
questa è una sintassi chiamata vita intera
dice che i dati possono vivere solo fino a quando il
i dati interni sono ancora attivi e se lo faccio
qualcosa di simile e dico di avere un
funzione che restituisce i dati che contiene a
riferimento a una variabile locale una volta I
ritorna da quella funzione allo stack
frame andrà questo slot di numeri andrà
e il puntatore sarebbe in realtà
non valido e il compilatore me lo dirà
che mi dice che il numero non vive
abbastanza a lungo dura solo fino alla fine
questa è la linea numero nove se io usassi
un vero editore potrei semplicemente andare in fila
numero nove che è questo
quindi tutte le firme della ruggine no
solo il tipo di dati del segnale ma anche
proprietà di mutabilità e
interconnessioni tra input e
i tipi di output sono abbastanza numerosi
leggere un sacco da una funzione ruggine
firma e la cosa bella è questa
sembra piuttosto semplice in piccoli programmi
e non mi piace davvero comunicarlo
utilità
il problema è che non posso mettere Firefox
sulla diapositiva mi dispiace molto per quello
ricorda solo che queste proprietà valgono
passi anche a programmi molto grandi
qualcosa in una libreria che è 100
mille linee di linee grandi e tu lo fai
immutabilmente puoi essere sicuro che nessuno
mai si tocca la ruggine ha astrazioni su
in cima a quello che mi sento un po ‘
standard sono fondamentalmente come Java
generici o modelli C ++ ovunque tu
vengono da loro sono da qualche parte nel
in mezzo non li presenterò in dettaglio
perché è fondamentalmente la mia meccanica
il disegno si adatta all’indice ma ha in cima
che una caratteristica nascosta che un sacco di
le persone tendono a ignorare all’inizio e noi
chiamalo concorrenza senza paura
in realtà digitiamo il controllo simultaneo
modelli diamo un’occhiata a questo noi
avere un contatore il contatore ha un interno
Integer generiamo tre minacce e passiamo
nel contatore usando un prestito mutevole
quello che accadrà qui è che noi
in realtà rileviamo che possiamo solo prendere
questo contatore e mettilo su uno di questi
discussioni una volta che avremmo inviato su di noi
in realtà hanno questa nozione di passaggio
proprietà di un thread ma perché lo siamo
avviare più thread del compilatore
si lamenterà e dimmi che non lo sei
permesso di fare questo non ti è permesso
basta semplicemente spostare il valore in uno
minaccia perché non saprei cosa faccio
alla prossima iterazione, quindi cosa facciamo?
quando abbiamo bisogno di condividere qualcosa tra
più thread solitamente raggiungiamo per a
contatore di riferimento che ci dà un po ‘
nozione di gestione multipla di questo contatore
quindi cerchiamo di raggiungere RC RC in ruggine
è un contatore di riferimento che è solo
significato per singoli thread ma potrei
basta usarlo e vedere se funziona il
la cosa interessante è che la ruggine ha un
nozione di cose che possono essere
inviato tra i thread o meno e il
contatore di riferimento non è per il motivo
che non protegge il suo contatore usando
atomico
le relazioni sono più economiche ma non è così
che sicuro potresti aver mancato i conteggi
sul contatore di riferimento più volontà
scoprire che cosa mi vuole nel
la fine è oh c’è un errore lì
Devo davvero avvolgerlo in mutex lì
dovrebbe essere un mutex in cima e un AR vedere
un contatore di riferimento atomico che ho costruito a
insetto nelle mie diapositive, così mi dirà la ruggine
che ho bisogno di assicurarmi che io
sincronizzare sul bancone e che io
Presto pronuncio anche sul riferimento
Contatore che uso per quel contatore M a
compilare il tempo in questo esempio potrebbe essere un
bug di concorrenza in una garbage collection
lingua un difetto se sei in C e
C ++ perché ti manca gatto M questa analisi
e questa cosa carina è puramente statica e
è indipendente dalla concorrenza
primitivi che usi ciò di cui abbiamo parlato
riguardo stiamo parlando di invio
dati tra thread e sincronizzazione dei dati
tra i thread per tra concorrenza
primitivi
è discendente e la parte di sincronizzazione
quella ruggine sa se stai lavorando
su un reattore di eventi puoi usare esattamente
la stessa semantica e si salverà
tu da quel sistema di tipo ruggine permette no
le corse di dati sono tutte e questo è molto
cosa scherzosa e questa è una cosa
è molto usato in produzione grazie
ma ancora aiutiamo la programmazione
linguaggio quindi diamo un controllo di basso livello
e sicurezza allo stesso tempo la cosa è
cunicoli ridotti a puntatori a
runtime sono un livello puramente compilativo
semantica che garantisce che ogni punto sia
un valido non accadono affatto durante
i valori di runtime che mi hai visto usano il
la sintassi della struct è fondamentalmente strutturata
struct like in C usiamo la nostra struct
layout possiamo anche chiedere al compilatore di
stenderlo come C sulla piattaforma di destinazione
muro e abbiamo un sub non sicuro opzionale
linguaggio per i casi in cui non possiamo
garantire la sicurezza di questi casi
ad esempio, interagire con l’hardware
dispositivi
tutti questi tipi di cose, ciò che abbiamo appena
non è possibile stabilire queste regole
automaticamente così il nostro assistente tecnico ha
coniato questa bella frase codice sicuro significa
puoi prendere rischi migliori in modo sostanziale
hai scritto la maggior parte del tuo programma in
ruggine sicura ma nei punti in cui è necessario
come il controllo completo dei dettagli che puoi fare
ma si opta per la parte non sicura di
la lingua invece di dire che sono
prendendo un linguaggio non sicuro e ci sto provando
per renderlo sicuro e assicurarlo
la gente lo usa nella maggior parte dei posti, quindi facciamolo
tornare alla domanda iniziale è
ruggine riuscita così muove il
lo stato della tecnologia in avanti lo fa
avvolge le tecniche di sicurezza in precedenza solo
utilizzato nelle impostazioni di ricerca in produzione
pronto in un pacchetto pronto per la produzione tutto
queste idee sono nuove sono fondamentalmente
dalla fine degli anni ’90 abbiamo appena preso un
molti di loro li mischiano insieme
otto anni di ruggine era in produzione per
quasi otto anni prima dell’uno zero a
molti concetti sono andati in giro abbiamo avuto
un collezionista di tappeti ad un certo punto noi
non ne ho più uno
tutto questo tipo di cose è andato a
cambiamenti estremi ad un certo punto ma questo
è fondamentalmente la teoria della ricerca applicata in
un pacchetto che in realtà vorremmo
uso in produzione porta memoria
sicurezza per gli ambienti in cui era
in precedenza solo non è possibile perché
l’unica lingua lo supporta
dove lingue non sicure o il runtime
necessario perché era troppo vasto
l’altra cosa che ho detto è che è usata in
ambienti di produzione considerevoli
ovviamente Firefox è abbastanza grande
ambiente di produzione ma questo è
Il linguaggio di casa di Mozilla così ovviamente
stanno usando in Firefox c’è anche
molti altri utenti e questo è
qualcosa che ci piace molto Dropbox
ha costruito sistemi di back-end considerevoli in
esso
quindi praticamente Dropbox è ora alimentato da
ruggine sia sul client che sul server
lato e un sacco di posti e soprattutto
nei luoghi in cui qualsiasi controllo
il nuovo chef del prodotto di distribuzione chef
l’habitat è completamente scritto in ruggine
e un progetto considerevole oltre che canonico
sta usando tutto attraverso il
infrastruttura ma principalmente internamente
è usato in diversi giochi per non giocare ma
come i gruppi più piccoli, quindi per esempio il
lo sviluppatore di start you Valley è
attualmente in uso, quindi non è solo la sua
giochi indie ma non come piccoli indie
giochi indie professionali ci sono a
teatro in realtà usandolo in Germania per
le produzioni operistiche generiche hanno scritto il codice
ma quello è il mio più che è il mio preferito
ma noi siamo usati nelle produzioni operistiche noi
effettivamente utilizzato da più di cento
società e le elenciamo tutte se
c’è qualcuno nella stanza che non è il
quella lista ma sta usando la ruggine
produzione per favore fateci sapere perché noi
mi piace soprattutto conoscerti
non sarebbe e vorrei sapere che cosa
lo stai usando perché ce n’è un paio
molto interessante e soprattutto grande
i nomi su di esso allora attraggono
contributo e penso che sia molto
cosa interessante perché il Mozilla
linguaggio di casa penso che non sarebbe un
prospettiva molto presa in giro perché sarebbe
significa che dipendiamo completamente da Mozilla
continuando così o no la cosa bella è
più di quattro quinti di tutti
contributi al linguaggio ruggine il
il compilatore e le librerie di base vengono
dall’esterno di Missoula ne abbiamo di più
di 2000 contributori nel corso della vita
del progetto e molto del
l’evoluzione della lingua è in realtà
anche le persone di Mozilla non sono guidate
negli spazi in cui, ad esempio, lavoriamo
sulle funzionalità per cui non si utilizza
Firefox è principalmente guidato dalla comunità ma
siamo stati bravi a prenderlo davvero dentro
e evolvendo la lingua anche per gli altri
persone quindi questa è la lista dei contributori
potete avere noi abbiamo questo grazie ma
Ross padrone di casa org dominio dove è possibile
guarda chi ha contribuito a quello che siamo questo
è il riassunto dell’anno da github
siamo l’ottavo progetto più rivisto
come facciamo ma la maggior parte della revisione del codice su
github incompleto
siamo uno dei più discusso
repository anche più di OGS e
subito dopo c’è il browser
che abbiamo costruito nella ruggine quindi ne abbiamo due
i dieci e se lo riassumiamo in realtà
come più grande di OpenShift, sono abbastanza
stupito da quei numeri perché io
Non si sarebbe aspettato di loro mi aspettavo
essere così bravo
sì e abbiamo una crescita considerevole sì
abbiamo raddoppiato in T open Redmont
gli indici dall’anno scorso leggono gli yeoman
il monaco sono fondamentalmente quante persone ci sono
cercandoci su Google
questo è un numero interessante è altamente
impreciso su come giudicare effettivamente come
il grande impegna la comunità è ma esso
anche mappe per avere il doppio del numero
di persone che rispondono effettivamente al nostro
sondaggio che pubblichiamo ogni anno e
sì, al momento abbiamo cinque conferenze
l’anno prossimo sarà di più
e abbiamo oltre 100 meetup intorno al
mondo che è un numero considerevole per a
comunità corriamo due anni e noi
avere nuovi arrivati da tutte le direzioni e
questa è la parte più interessante di questo
non abbiamo solo programmatori di sistemi
andando alla ruggine abbiamo anche Ruby e
I programmatori Python stanno per arrugginire che abbiamo
programma di linguaggio funzionale viene a
ruggine tutto con viste molto diverse
come la lingua vorrebbero il
linguaggio per essere e questa è una buona cosa
è possibile moderare che un altro
metrica interessante è il numero di librerie
sono pubblicati ovviamente un nuovo
lingua avevamo zero come librerie
pubblicato sul nostro indice nel 2014 quando noi
aperto, abbiamo appena passato il mese scorso
l’ indice del pacchetto Haskell così ora siamo
avere più librerie di Haskell e it
ci sono voluti due anni invece di 10 anni
totalmente adoro Haskell è proprio come
sono nella stessa misura in cui siamo così
questo è una specie di qualcosa che dobbiamo
confrontare se aggiungerei NPM in sostanza
tutte queste tre linee sarebbero piatte
l’altro qui è Alex qui che io
trovare una cosa molto interessante perché
hanno questo punto visibile dove
aumentano drammaticamente nella loro
crescita di solito queste linee sono piatte I.
non so perché i numeri dei manager dei pacchetti
sono molto piatto Mi piacerebbe davvero
sapere perché e ci attraggono positivi
feedback siamo la lingua più amata
su Stack Overflow nel 2017 2016 e solo
circa l’1% degli intervistati ha dichiarato
hanno problemi a mettersi in contatto con
il resto della comunità o o comunicare
con noi che vedo se possiamo ridurre
quello ma e otteniamo come questo è venuto
il nostro subreddit ieri quando ero
Preparando questo discorso ho appena detto di piacere
qualcuno disperde un regalo che ci benedica
stazioni ok penso che sia un po ‘troppo ma
grazie ma perché non è come noi
casualmente ha avuto successo
secondo me perché c’è molto
le cose dietro quella prima di tutto quando io
si unì alla comunità di riposo quattro anni fa
uno degli eredi abbiamo avuto uno di aria
dietro tutto questo è ciò che vogliamo
da usare come stiamo lavorando su a
linguaggio che vogliamo essere usato questo è
non è un linguaggio di ricerca, è fantastico
lingue di ricerca ad esempio idris
è proprio un linguaggio di ricerca
fantastico per quello che siamo un linguaggio
vogliamo vedere usato in produzione
il software per quella ragione lo era anche
sempre sviluppato a passo con un enorme
applicazione c’era sempre diversi
accanto ad esso un bene multiplo considerevole
centomila righe codice base di
costruendo un nuovo motore di navigazione che
aiuta molto quando sviluppi una lingua
perché puoi davvero capire se
cambiamo questo che impatto ha
su una base di codice grande e reale e non su a
lo snippet di dieci righe slide ci assicuriamo
che la lingua è accessibile è
facile da ottenere una configurazione dell’ambiente che abbiamo
strumenti che ti danno solo un compilatore
di diverse mode che ti dà se
vuoi tagliare gli strumenti di compilazione e
tutto questo tipo di cose
costruiamo in costruito e dipendenza
gestione come parte della catena di strumenti
che spediamo in modo da avere qualcosa di simile
bundler ma per la ruggine che ha
strumenti di sviluppo in cima a questo noi
avere un server linguistico che implementa
il protocollo del server delle lingue in cui ti trovi
può ottenere errori su un socket di rete a
mostrali nel tuo editor e in tutto
questo tipo di cose fa tutto il
Analisi per voi e non avete bisogno di
analizzalo così come gli altri Inter
per i modelli di codifica e tutti questi tipi
di cose che ci mettono un sacco di orgoglio nel nostro
di messaggi di errore successivo colloquio è gonna
sii un olmo che dice che siamo un po ‘peggio
di olmo e questo piace molto al re
di quello, ma non è insolito che piace
nuove versioni di ruggine avranno più e
migliori messaggi di errore e c’è a
un paio di persone che sono davvero orgogliose
che abbiamo grandi blocchi per il libro
e uno standard quasi completamente documentato
API
la cosa con grande Doc è che sono
molto meglio di ciò che è per lo più là fuori
per molti nuovi linguaggi di programmazione
abbiamo effettivamente qualcuno impiegato il
ci scrive ovviamente c’è sempre
come l’uno o l’ altro se tu
voglio se tu se ne noti uno mentre
lo stai leggendo facci sapere noi
in realtà ha un canale youtube che
raccoglie tutti i discorsi e le conferenze così una volta
questo è su YouTube lo sarà anche
lì ha anche alcuni docenti
Tedesco su un’università tedesca e
raccoglie tutti i pensieri su tutte le conferenze
su tutti gli argomenti per essere facilmente
ricercabile e abbiamo mantenuto forum
e RAC e altre piattaforme di chat per ottenere
in contatto che ho usato molto Russ è un
linguaggio molto pragmatico e penso che
aiuta in adozione tutte le funzionalità sono
guidato dalle esigenze del software reale così
ci assicuriamo che ogni versione in realtà
sblocca qualcosa di utile per alcuni dei nostri
questo potrebbe non essere per te, ma è così
potrebbe essere per gli altri e le persone vedono dove
è utile la lingua è per lo più
evoluto con feedback degli utenti quindi non lo è
come alcune persone in Mozilla appena ricevuto
in una stanza e trovare un a con a
cambiare e noi consapevolmente sceglieremo
familiarmente li costruisce nel caso
che ce ne sono alcuni disponibili così
cosa del genere
i mutuatari sono in qualche modo collegati
riferimenti quindi usiamo un M percento per
così le persone a cui sono abituati
i riferimenti in realtà possono solo essere trasportati sulle spalle
sulla sintassi e prendiamo buone idee
da altri come i nostri messaggi di errore
sicuramente elementi da esso quindi guardiamo
in giro per altre lingue per vedere cosa
loro vedono come costruiscono il
infrastruttura la lingua gioca bene
con gli altri ma e questo aiuta
adozione possiamo compilare il codice per solo
normali file oggetto o semplicemente normali
librerie statiche o dinamiche che tu
puoi scrivere un file di intestazione per e poi
basta usarlo nel codice C o nell’altro modo
in giro o puoi usare il csfi del tuo
lingua preferita che non è necessario
scrivi strumenti di ruggine su di te
può rendere le cose un po ‘migliori
ma se usi il CF fi del tuo
lingua che ti può piacere anche subito
usa le librerie Russell sono vincolanti
generatori disponibili per C e C ++ che
sono veramente buoni perché sono molto pesanti
usato in Firefox e detto anche se loro
solo bisogno di loro e c’è di alto livello
binding per alcune altre lingue Ruby
JavaScript Python sai che è fantastico
partner per quelle lingue perché il
la cosa bella di solito è quando si abbassa
vedere dai pison o qualcosa che dai
la sicurezza della memoria quando si scende a
ruggine non si arrende alla sicurezza della memoria
il che significa che non hai colpa di SEC
Applicazione Django semplice come quella e
non vuole essere il primario
linguaggio a tutti i costi a cui siamo abituati
tutti i nostri utenti che lo utilizzano da qualche parte
l’ infrastruttura non c’è quasi
persone in giro che so che lo sono
programmatori puramente ruggine la maggior parte del tempo
sono come il 50% in meno di programmatori e noi
sono totalmente costruiti per l’adozione graduale
questo ci ha aiutato molto
proprio come un progetto da dare un’occhiata
stylo è la cosa che alimenta Firefox
quanto più la velocità aumenta
Firefox quantico per il marketing esterno
scopi a volte anche leggere come
CSS quantico la libreria è ancora chiamata
stylo è preso dal server
progetto tenerlo premuto su Firefox e poi
è tutto lo stile ma lo stile
il motore fa
applica gli stili che hai in esso
passa un file CSS e quindi applica il
stili che ho trovato in un albero Dom
la cosa interessante di questo è no
il browser lo fa attualmente in parallelo
sebbene sia teoricamente noto
questo è un compito altamente parallelizzabile
Mozilla ci ha provato due volte e ha fallito
e in effetti ci sono riusciti con questo e uno
delle cose è che hanno incontrato molto
bug multi-threading che avrebbero
avevo bisogno di costruire un sacco di macchinari
in cima a tutto questo in pratica è tutto
tutta la magia è qui dietro lo stylo
il monitoraggio della concorrenza che res
garantisce di non correre
in gare di dati accidentali e così via
permesso di fare tutto questo riscrivere in
circa un anno e poi alla fine il
possibilità di usare solo C FFI o simili
accedere direttamente alle strutture di memoria come a
concetto di base della lingua ruggine ha un
modello di memoria simile a C consentito per
visitare l’integrazione molto facile anche perché
la ruggine non ha tempo di funzionamento, quindi lo faresti
Non pensare a come integrare
il resto runtime in Firefox o
qualcosa del genere quindi c’è un
un paio di motivi oltre il semplice codice noi
avere un severo impegno per la stabilità
la ruggine viene rilasciata ogni sei settimane come
Firefox una delle ragioni dietro a ciò
vogliamo che le modifiche siano piccole così
di solito non abbiamo cambiamenti di rottura
ma a volte dobbiamo sistemare come parte
alcuni come buchi nel sistema di tipi che sono
raro, ma succede e poi vogliamo
assicurati che le persone non debbano spostarsi
il mondo solo per passare a quello successivo
versione significa anche che dovresti
di solito come leggere i cambiamenti in
giro mezz’ora o qualcosa del genere
quella
ed essere è più facile seguire la ruggine
retrocompatibile con enormi macchinari
per assicurarci di scaricare letteralmente tutto
codice di ruggine pubblico e costruirlo quando noi
prova a scoprire se costruiremo un
la coscienza al contrario camila debug siamo
attualmente alla versione 121 il prossimo è
arrivando in circa cinque settimane anche noi
non consentire l’uso di alcun tipo di instabile
nelle funzioni di sviluppo della nostra scuderia
compilatore quindi se hai una spinta stabile
compilatore tutto come ogni interfaccia
espone è stabile
tutto il resto è disponibile solo in
nightly build in modo che non sai che
stai effettivamente usando cose instabili e
non vogliamo rilasciare nulla di ciò che è
non è pronto per un ampio uso sulla nostra scuderia
canale se è instabile è stabile
può usarlo è pienamente supportato noi
sulle spalle su un paio di cose a
fornire la maturità che la nostra cogenerazione è
fornito a LLVM così portiamo il mouse su
la maturità di LLVM e tutto il su tutto il
obiettivi che supporta non abbiamo runtime
quindi non abbiamo bug di runtime ci fosse a
tempo in cui Russ aveva ancora un runtime e
è stato davvero terribile e abbiamo un
approccio molto conservativo da adottare
cose in una libreria standard, così siamo
non come una batteria inclusa la lingua
abbiamo batterie facilmente scaricabili
linguaggio è un cross compilatore Russ C
è di default un cross compilatore e il
tutto lo strumento è consapevole di questo
questo quasi nessuna compilazione di stampa di setup
l’unica cosa di cui hai bisogno è la
indifferenza per andare ad esempio di cui hai bisogno
il bersaglio Lipsy e tutti questi
cose per il target e supportiamo
casi di utilizzo incorporati e IOT che abbiamo persino
un’intera corteccia un intero sistema operativo
scritto per i dispositivi IOT corteccia-m scritti
in ruggine
si chiama succhiare noi e sì, non lo è stato
così per quelli che avevano visto il discorso
prima abbiamo anche un intero governo
struttura costruita e che ci aiuta molto
per esempio tutte le modifiche passano attraverso un
aprire il processo RFC quindi se anche se qualcuno
su Mozilla vuole cambiare qualcosa
lingua scrivono un grande documento e
le persone possono quindi commentare di solito
funziona abbastanza bene e discussioni
sono piccoli ma può anche accadere che a
la funzionalità è controversa
per esempio, abbiamo avuto una funzione di riforma
è stato abbattuto tre volte quest’anno
ed è molto meglio ora devo farlo
dì ma questa è una parte del processo
e il fatto è che Mozilla riguarda il
solo
compagnia che so che ha un grande
esperienza con discussione aperta e
processi che dimostrano che ciò non significa
come dappertutto a Missoula che funziona
come perfettamente ma almeno Missoula ha
il concetto di avere una collaborazione aperta
su un progetto che producono tracciamo molto
di cose per esempio il tempo medio a
unire una richiesta pull per una modifica a qualsiasi
tipo delle nostre cose è di sei giorni che
significa se hai una correzione a
alla documentazione è probabilmente
unite quando il manutentore si sveglia se
è una cosa più grande che può essere totalmente
che ci vogliono da 30 a 40 giorni ma
non lasciamo rimanere in giro per un anno
o qualcosa o lo negheremo allora
o dire che dobbiamo rimandare o noi
in realtà spostare andare avanti per assicurarsi
che è unito, supportiamo anche noi
utenti commerciali quindi facciamo regolarmente
interviste con gli utenti della produzione da ascoltare
sui loro problemi che di solito non sono in
l’aperto perché di solito non vogliono
per parlarne nel tuo va bene
potete sempre contattarci con il simile
problemi di produzione perché ci piacerebbe
lo so perché è molto difficile da ottenere
questa informazione la maggior parte del tempo noi
avere consulenza per lo sviluppo e la formazione
disponibile attraverso una società statunitense e la mia
più ne viene fuori lentamente
L’allenamento Russ è in realtà considerevole
affari che entrambe queste società
attualmente hanno ed ecco un altro hack
um se gestisci un open source più grande
progetto non so perché molte persone
non farlo questo lo mettiamo ovunque che se
hai qualche domanda sul progetto
puoi chiedere al team della comunità noi solo
inoltrarti alla persona giusta e una volta
hai fatto come due o tre anni
persone che effettivamente useranno questo
ci sono così tante persone che entrano in contatto
con noi che tale indirizzo e-mail che abbiamo
attualmente devo vedere che possiamo seguire
su tutte queste e-mail ma c’è così
molte informazioni in questo e in particolare
ci sono così tante persone che sono come me
completamente perso non so come mi piace
approccio a questo problema e probabilmente
qualcuno che è nella comunità più a lungo
lo sa e questo è come un tre
compito minuto per me quello che potrebbe essere un tre
compito ora per i membri della comunità e io
sarebbe del tutto l’amore che
hanno passato il loro tempo altrimenti
quindi chiudere la ruggine porta al sicuro
programmare verso gli obiettivi dov’era
prima è irrealizzabile, mentre porta anche
cose di nuovo al tavolo per competere con
altri linguaggi sicuri come il tutto
monitoraggio della concorrenza e in pratica il
tutto troppo difficile per riassumere
in alto non si può scrivere la fiducia con il
resto si, grazie, stavo solo guardando
per il mio microfono abbiamo un sacco di domande
che io passare attraverso prima di tutto è
c’è così buono o qual è il miglior IDE per
utilizzare per la ruggine, quindi le persone vogliono ottenere
pratico sì, posso anche sapere se
qualcuno se ne va prendere uno di questi
cartoline ha il più importante
collegamenti di cui hai bisogno per iniziare
ruggine e puoi toccare il
comunità I des quindi stiamo producendo il
language server ruggine e siamo anche noi
producendo l’integrazione in un Visual
Codice di studio che è un editor non del tutto
un’identificazione e un jetbrain in realtà vengono spediti in ruggine
IDE che è la loro produzione è
davvero molto bene quindi se vuoi
avere se si desidera avere un adeguato
IDE sarebbe quello che vorrei
consiglio di sapere che ce ne sono alcuni
persone che lavorano su Visual Studio
integrazione che è anche uno dei
ragioni per le quali stiamo effettivamente implementando
il protocollo del server di lingua ruggine
perché questo è ciò che la maggior parte degli ID sono
effettivamente usato questo per JetBrains no
quindi per riassumere un codice di Visual Studio
ID di jetpens sono quelli che puoi
totalmente utilizzato nella nostra produzione pronto essere
alla ricerca di visual per visual
studio proprio allora c’era il no
questa è una citazione su un’altra programmazione
lingua non lo dirò ma cosa
sulle prestazioni della compilazione della ruggine
che è sto sempre in attesa di questo
domanda quindi uno dei motivi della ruggine
ha un nome per non essere
il linguaggio più veloce per compilare questo è
anche non il più lento ma per esempio
diversi compilatori per come 20 a 25
minuti uno dei motivi per cui è così
il caso non è in realtà abbastanza nel
controllo di Rossi per esempio uno dei
le cose sono noi generiamo il codice e noi
spingerlo a LLVM e lrvm e perdere a
molte informazioni in quel processo per
esempio la ruggine come una lingua lo impedisce
qualsiasi punto è troppo simile a qualsiasi mutabile
il punto è troppo odioso e questo è
qualcosa che i compilatori cercano di capire
fuori dall’analisi statica e lo siamo
buttare via quell’informazione una volta
lo stiamo spingendo a LLVM e LVM
inizia a capirlo di nuovo, c’è un
l’interfaccia per quello in LLVM è
attualmente rotto, quindi stiamo lavorando
correggendo così puoi farlo puoi spingerlo
le informazioni in LLVM mancheranno quindi
compilare quindi queste sono come le cose
su cui stiamo lavorando anche questo è sul nostro
lato sarebbe ottenere la generazione di troppo
codice quindi questo è qualcosa che le persone
può davvero funzionare sulla cosa che siamo
costantemente lavorando per migliorare quelli
di solito è il tempo in cui guadagni in giro
Dal 20 al 30 percento più di mezzo anno in
Compilare le prestazioni quindi questa è la gamma
di ottimizzazione che il compilatore chris
attualmente è utilizzabile velocemente è a
dillo e anche quando sei
usando c ++ se esagerate con
generici e il compilatore deve rotolare
tutte le specializzazioni per tutti i
farmaci generici che è appena andando a costare
al momento della compilazione quindi c’è persino
tecniche di programmazione che vanno in giro
questo problema un po ‘se stai lavorando
su larga scala un’altra domanda che è
molto spesso chiesto informazioni sulle lingue
che il nostro sistema parla come chiedere
scritto da solo il resto è scritto a riposo
è scritto in riposo abbiamo un sacco di
che anche che il compilatore resto non lo fa
sapere in cosa consiste la definizione di una nuova riga
il resto del compilatore è letteralmente se tu
vedi / n in questo nel parser se vedi
barra e poi è la barra
letterale il motivo per cui questo funziona è
perché compiliamo ruggine con ruggine
sa cos’è una nuova riga
quindi possiamo iniettare nel prossimo compilatore
il prossimo compilatore generato quale è il nuovo
la luce era un cenno ai due
riflessioni sulla fiducia fiduciosa, sì, noi
sono auto-ospitati e ci divertiamo con esso
va bene
per quanto riguarda le prestazioni rispetto a C ++
o Java ciao intendo che dipende sempre da
cosa stai facendo
quindi in generale, come le prestazioni sono attive
par con C ++ è con tutte le note a piè di pagina
che hai anche C ++ come prima cosa
tutto ciò che potrebbe essere la fiducia non aggiorna
non fa un’ottimizzazione a
Il compilatore C ++ lo farebbe al momento
la cosa in cui siamo più lenti ma come la modella
saggia le lingue sono abbastanza vicine e
stanno atterrando nello stesso modo nella stessa
range potrebbe essere un paio di
millisecondi più un paio di
millisecondi dopo via il confronto
con Java trovo molto difficile da fare perché
ci sono un paio di algoritmi
mi piace davvero molto la raccolta dei rifiuti
il problema non è sostanzialmente come
Java è più veloce o il Java simile che
modello di programmazione supportiamo meglio
quindi Java è incredibilmente veloce
quindi probabilmente lo stesso intervallo di solito un po ‘
un po ‘più veloce a seconda dell’algoritmo
è un argomento molto complesso ce ne sono alcuni
post di blog là fuori su quest’altro
bene una domanda da aspettarsi è il
confronto per andare o D ma è più è
non per la performance è più
su quali sono le cose che la ruggine offre
che quelli non D sono interessanti
vai vai di solito abbiamo lo stesso di a
gioco da tavolo l’ altro come programmazione
lingua il motivo la ragione per cui questi
e questo non si accumula per il motivo
perché queste lingue vengono spesso confrontate
è perché sono stati pubblicati come il
progetto di ricerca ruggine e linguaggio
andare da Google sono stati pubblicati intorno al
stesso tempo fondamentalmente due mesi tra
e aggiungere a ciò la ruggine che era
pubblicato allora aveva effettivamente come un
sintassi e canale di piccolo canale
semantica nella lingua e
tempi di esecuzione
e penso che l’influenza abbia arrugginito molto
perché ciò significava che nessuno doveva andare
da Mozilla nessuno ha bisogno di ciò che puoi
vai a usare vai da Google, quindi significava
quella ruggine è andata radicalmente diversa
direzione e in realtà ha detto che siamo
buttando tutte le nostre cose runtime siamo
buttando fuori il netturbino che siamo
passare a questo modello completamente statico
dove possiamo andare su dispositivi embedded
ovunque viene utilizzato AC e tutti questi
tipo di cose il confronto da fare è a
un po ‘2d è un po’ diverso
addy ha un garbage collector opzionale
e a seconda che tu ne abbia bisogno
o no la lingua è un po ‘
diverso, quindi ha un pò questo abbiamo optato
in un sistema runtime o non D è vecchio
che significa che sia ha la maturità anche
non ha ancora preso piede come a
la persona della comunità come D è molto
cosa interessante di cui discutere ma io
non posso dire di dirlo troppo bene
allora forse questo è interessante che
parte di un sistema legacy sarebbe il
meglio orientare per la sostituzione e la ruggine
moduli tutto ciò che usa pesante
concorrenza ed è completamente rotto
per questo se hai se hai un
pezzo del sistema in cui non si dispone di
qualsiasi controllo a causa di questi
proprietà che forse riscrive in ruggine
sei fondamentalmente un’analisi statica che tu
altrimenti pagherebbe centomila
euro per o più
ok ora domanda più provocatoria cosa
sono i punti deboli della lingua
i tempi di compilazione in un primo momento è un
linguaggio completamente statico quindi se lo sei
provando a piacere dico sempre come se tu
parlare di riflessione la ruggine è un vampiro
il linguaggio non riflette affatto così se
vuoi fare qualsiasi tipo di molto dinamico
la programmazione sono come hai visto sono
un programmatore arrugginito prima se lo si desidera
fare qualsiasi tipo di pesante
programmazione dinamica Russ non è solo per
tu non è un linguaggio orientato agli oggetti
non c’è un messaggio simile da inviare tra
gli oggetti o tutte queste semantiche no
esiste così se tu se ti trovi bene
con questi tipi di ambienti client
quindi probabilmente la ruggine non fa per te e
è sicuramente una debolezza del linguaggio
sì anche attualmente dipende dal
campo sei nella maturità delle biblioteche
ma questo dipende molto da
il campo sei e come tutto
che ha a che fare con l’ analisi di HTML di tutto
questo tipo di cose puoi usare il
librerie che il server fornisce sono
come in alto ce ne sono un paio di molto buoni
librerie per scrivere giochi e motori
e tutto questo tipo di cose come
basi si può usare questo altro
i campi erano buoni, non siamo ancora così lontani
arriva con l’età che cosa si assume
I / O non bloccanti va bene oh è un abbiamo
un intero quadro quadro attorno a questo
si chiama tocayo
e un’implementazione del futuro, quindi se
sei a tuo agio con il futuro
interfaccia abbiamo un abbiamo una libreria
che lo fornisce come interfaccia e
allora abbiamo Tokyo che è una biblioteca
che gestisce i futures su un reattore di eventi
c’è anche un’implementazione che funziona
i futures sul gtk è il reattore dell’evento gtk
attualmente impegnativo pesantemente alla ruggine e
ci sono implementazioni di corsa
eseguendoli su un pool di thread che
non sarebbe la ciliegina, ma si, se lo sei
interessato a Tokyo è la cosa
vuoi usare e poi qualcosa forse
bene io non capisco la domanda
ma forse voi due è sconcertante possibile
filo LLVM perché LLVM so che noi
avere strumenti che prima usano l’ americano
blob sfocato e rossiccio labiale non so
quale DLL per non so riguardo al LLVM
fuzzer hmm ok questo è probabilmente quello
sì, così ci siamo divertiti è abbastanza
sacco di gente che in realtà lo praticano
molto in modo da poter trovare tutorial per questo
e fai in modo che ci siano anche integrazioni
i nostri strumenti di compilazione come plugin vanno bene
qualsiasi domanda nella stanza qui noi
ho ancora Oh No
beh, in realtà siamo alla fine ma se
ci sarebbe una domanda urgente
potrebbe saperlo bene
bene grazie
e dimentichiamo questi
[Applausi]
ciao a tutti quelli che potresti aver sentito
durante gli ultimi giorni che Firefox
ottenuto un nuovo rilascio con questo bello
logo Firefox quantum ed è in grande
barche alimentati da ruggine e mi piacerebbe
non parlare di Firefox ma di più
ruggine quindi chi sono io sono coreana sto lavorando
per una piccola azienda chiamata s Kara tu
puoi trovarmi su twitter come iraq e tu
in pratica puoi semplicemente metterlo nel tuo
il profilo di bash lo ha generato e tu sarai me
per un giorno sono arrestato in elasticsearch
allenatore e organizzatore di eventi sono stato un
programma rubino dal 2003 e una pausa
il programma è dal 2013 la regola di alcuni
le lingue erano sei tu sei buono io sono il
Amministratore delegato di tale società, io sono generalmente un
persona di comunità Faccio il pallone arrugginito
e incontri di ricerca e ho organizzato il
Convegni Euro camp e J rubyconf
che sono un po ‘ speciali perché il
organizzatore di questa stessa conferenza Diana
prima erano coinvolti in questi due
e sono stato molto felice di lavorare con lei
e molto felice di parlare finalmente a questo
uno poi ho anche organizzato l’ europeo
ruggine conferenza rug fest e una coppia
di altri organizzatori sono anche qui e
Faccio parte della comunità globale della ruggine
squadra in modo che il resto del progetto abbia una comunità
squadra di cui faccio parte come hobby
generalmente sparano frecce a roba mia
durante il controllo di qualità, quindi il titolo di questo discorso
è perché la ruggine ha successo non voglio
introdurre come la lingua in pieno io
in realtà parlerebbe di ciò che è il
contesto e perché è attualmente
qualcosa di cui parlano molte persone
riguardo al problema qui c’è quasi
nessuna metrica netta comparabile per
programmazione dei linguaggi in giro come pari
se raccogliamo qualche tipo di numeri
la comunità di riposo non sappiamo se
questo è buono o cattivo perché quasi nessuno
altrimenti non c’è lavoro strutturato
su come le comunità di linguaggi di programmazione
anche il lavoro lo prende come un po ‘
cosa ma ciò significa che devo definire
che successo c’è e per me sono questi
almeno cinque cose direi a
il linguaggio di programmazione ha successo a
almeno per noi che spostiamo lo stato di
tecnologia in avanti è utilizzato in
ambienti di produzione considerevoli
attrae il contributo se è un
linguaggio di programmazione open source che
nasconde in particolare una crescita considerevole
per una lingua di partenza che è un
metrica importante e attrae
feedback positivo perché è quello che
vuoi avere non faremo cose
meglio non vogliamo forzare cose
le persone bene che significa che devo spiegare
che ruggine è chi qui non ha mai toccato
ruggine va bene, ho intenzione di fare un corto
introduzione è per questo che è qui così
ruggine è una nuova programmazione di sistemi
linguaggio che alimenta ed è stato sviluppato
insieme a servo che è un nuovo
motore di ricerca sperimentale di Mozilla
Attualmente sta muovendo in Firefox è
sviluppato da Mozilla e dalla comunità
e il primo mondo di rilascio stabile potrebbe
15 2015 2 anni come stalla
linguaggio di programmazione prima di quello che era
un progetto di ricerca che sta fornendo un
alternativa a C e C ++ ma anche a
altri linguaggi di alto livello a
lingue di livello superiore e le tre
le cose su cui concentrarsi sono sicure
concomitante e veloce ed è generalmente
percepito che la sicurezza in particolare qualsiasi
il tipo di sicurezza della memoria sarà sicuro
che il tuo programma non piega SEC e
tutto questo tipo di cose
arriva automaticamente a un costo di runtime
di solito attraverso una spazzatura
collezionista o qualche tipo di gestione
sistema lì la cosa con ruggine è quella
se vediamo rapido concorrente sicuro, abbiamo detto
prendiamo tre di loro non possiamo fare un passo
off questo le caratteristiche principali del
il linguaggio è se ti piacerebbe solo
avere come piccoli avrebbe avuto una statica
sistema di tipo di sito con tipo locale
inferenza in modo da non dover digitare tutto
digitare tutte le variabili rilevate dal compilatore
esso stesso ha una nozione esplicita
di mutabilità quindi qualcosa è immutabile
o no e devi definirlo che ha
qualcosa che chiamiamo costo zero
le astrazioni sono per niente piccole
asterisco su di esso noi astraggono cose così
non introduciamo alcun costo attraverso
l’astrazione che a volte è gente
pensa come solo perché stanno usando
l’astrazione e improvvisamente no
costa nulla per farlo
semplicemente non vogliamo che la lingua sia messa
qualsiasi costo aggiuntivo per l’utilizzo di un
astrazione ha tempo di esecuzione indipendente
sicurezza concorrente verrò a quello
tratta gli errori come valori non ci sono
eccezioni non abbiamo nulla che abbiamo
qualcosa verso cui ci muoviamo
chiamandolo memoria automatica statica
gestione che non gestisci manualmente
memoria ma succede anche alla compilazione
tempo e puoi controllarlo se vuoi
e non ha assolutamente spazzatura
collezione costruita nel linguaggio
non ha un sistema runtime, quindi cosa fa?
sembra solo un piccolo frammento di ruggine
codice è un linguaggio di parentesi graffe come
C C ++ Java è necessario disporre di un main
funzione come C ha e oltre a ciò
sembra un po ‘ un mix tra
C e se hai mai usato ml ml ha un
Sintassi della materia ispirata a ml
ha legami alle variabili introdotte
di lasciare e un’altra cosa che fa un
E commerciale se si desidera passare le cose da
qualcosa che è simile a un riferimento
Vengo a quello in un secondo così siamo noi
non stanno inventando troppa sintassi nuova
qui siamo molto ispirati su ciò che è
là fuori così un paio di concetti base
della lingua il primo concetto di base
che devi capire se parli
sulla mutabilità tutto il tempo quindi la ruggine è
un linguaggio sul controllo, quindi non lo fa
diciamo dentro la ruggine
tutto è immutabile o all’interno di ruggine
tutto è mutabile ciò che dici sei tu
Devo definirlo così dato questo pezzo di
codice ruggine Ho due strutture dati uno
è nell’altro e uno ha un campo
ha un intero dentro vedi se il puntatore
funziona sì, questo è quello interiore
ha un numero intero e questo è solo un esterno
uno che ha l’interno in me
Costruito con un certo valore e cerco di
inserire per assegnare questo valore a qualcosa
altrimenti questo non verrà compilato perché da
di default tutto è immutabile lo sarà
in realtà dimmi che non posso assegnare a
un campo immutabile indicava Val perché
DS è immutabile tutto ciò che è dentro
è immutabile che in realtà devo dire
la ruggine è discutibile
questo è mutabile, posso davvero mutarlo
questo è inteso e questo è ciò che vedi
quello in diversi tipi di combinazioni
tutto il tempo questo concetto è ovunque
è semplice all’inizio ma è così
ripercussioni per gli altri e l’altro
concetto di base e questo è qualcosa che
lo farai se inizi a imparare la lingua
probabilmente dovrò abituarmici per uno
o due settimane o qualcosa del genere
ha un concetto base di chi possiede i dati e
chi si fa dare in prestito lo chiamiamo noi
chiama che prendere in prestito questo è qualcosa
questo è nuovo di solito non lo hai
programmato in ambienti che hanno
questo come un dato esplicito di nozione
la proprietà però è una cosa che molto
di persone parlano attivamente di quando loro
pensa ai sistemi specialmente in C come
quello che possiede i dati è necessario
rilasciare è colui che non si deve
assicurati che non lo delegano
la ruggine ha questa nozione esplicita
le regole intorno a ciò sono ogni parte di
i dati sono di proprietà esclusiva , sono solo uno
proprietario questa proprietà può essere passata
perdendolo nel processo e quando lo possiedi
i dati raggiungono la fine dello scopo è
distrutto semplicemente parlando abbiamo un
contatore di riferimento che può contare solo
a uno e una volta che il riferimento scende
i dati vanno come deve essere
disallocato e questo può essere fatto
staticamente così in un esempio ho un
file e ho una funzione che richiede a
file e scrive ad esso e noi in realtà
passare la proprietà ogni volta che non lo fai
qualcosa di speciale in ruggine tu in realtà
passare la proprietà che apriamo
e lo passiamo su una delle cose
questo è fondamentale qui non posso mai chiamare
quella funzione di nuovo chi è quel file
perché ho trasmesso la proprietà e
questo ha una semantica molto utile perché
tutto ciò che richiede la proprietà potrebbe
in realtà chiudi il file che farebbe
eventuali chiamate successive a scrivere al
file illegale che il linguaggio fa
la ruggine è molto buona a rendere illegale
Stato non rappresentabile, non riesco proprio a scrivere
quel programma in quel modo quello che posso fare
anche se posso raggiungere l’ altra base
concetto che ho detto um posso dire di poterlo fare
prendere in prestito l’ accesso mantenendo la proprietà
darlo a un altro pezzo del sistema
e riprendendolo e prendendo in prestito accade
di nuovo in un modo mutevole e immutabile
c’è una relazione molto intuitiva
c’è qualcosa che prendo in prestito immutabilmente io
può alimentarlo molte persone come o come
molte parti come voglio perché quello
assicura che nessun’altra parte nell’in
il progetto lo muta così sempre
rimane lo stesso ma puoi solo prendere in prestito
è mutabile una volta ed è esclusivo così
non puoi avere un prestito immutabile a
nello stesso tempo in cui ti mutui in prestito
può avere l’uno o l’altro e
indebitati immutabili puoi averne tanti
come tu vuoi è davvero così condiviso
nuovo stato mutabile e questo sarebbe a
tutta l’ altra conversazione è un problema anche in
applicazioni a thread singolo che noi
assicurati di non averlo
come appariva il codice quando lo volevo
in realtà prendere in prestito ho detto in questo modo
e commerciale è un indicatore per I
prendere in prestito qualcosa di mutevole II e poi io
posso dire che posso scrivere su quel file per legare
è perché prendo in prestito solo l’ho capito
indietro Ho letto che la proprietà rimane in
principale e cade alla fine questo intero
la cosa è piuttosto semplice
um ci vuole del tempo per abituarsi su
come effettivamente programmare in questo
ambiente in cui queste nozioni sono loro
esplicito dà anche un paio di altri
cose questo è un esempio molto minimale
che è
Ho una collezione di interi e io
prendere in prestito uno degli elementi e il
la collezione è mutevole e mentre io ancora
avere uno degli elementi del
collezione dico che voglio modificare il
raccolta scrivendo ad esso e questo è
qualcosa che la ruggine effettivamente lo rileva
ti dirò dal modo in cui hai ottenuto un
mutuatario immutabile attivo non è possibile
attualmente modificare la raccolta fino al
quel prestito diventa inattivo e questo è
un problema molto comune soprattutto in C ++
applicazioni quando hai dei puntatori a
vettori che in seguito cambierai di dimensioni
e loro diventano reali che ho individuato e il
il punto è per il vettore originale non lo sono
più valido in realtà in grado di invalidare
la validità di tutti i controlli di resto
riferimenti al momento della compilazione anche al
punto in cui abbiamo una nozione di alcuni
pezzo di dati contiene un interno
riferimento al legame tra quelli è
questa è una sintassi chiamata vita intera
dice che i dati possono vivere solo fino a quando il
i dati interni sono ancora attivi e se lo faccio
qualcosa di simile e dico di avere un
funzione che restituisce i dati che contiene a
riferimento a una variabile locale una volta I
ritorna da quella funzione allo stack
frame andrà questo slot di numeri andrà
e il puntatore sarebbe in realtà
non valido e il compilatore me lo dirà
che mi dice che il numero non vive
abbastanza a lungo dura solo fino alla fine
questa è la linea numero nove se io usassi
un vero editore potrei semplicemente andare in fila
numero nove che è questo
quindi tutte le firme della ruggine no
solo il tipo di dati del segnale ma anche
proprietà di mutabilità e
interconnessioni tra input e
i tipi di output sono abbastanza numerosi
leggere un sacco da una funzione ruggine
firma e la cosa bella è questa
sembra piuttosto semplice in piccoli programmi
e non mi piace davvero comunicarlo
utilità
il problema è che non posso mettere Firefox
sulla diapositiva mi dispiace molto per quello
ricorda solo che queste proprietà valgono
passi anche a programmi molto grandi
qualcosa in una libreria che è 100
mille linee di linee grandi e tu lo fai
immutabilmente puoi essere sicuro che nessuno
mai si tocca la ruggine ha astrazioni su
in cima a quello che mi sento un po ‘
standard sono fondamentalmente come Java
generici o modelli C ++ ovunque tu
vengono da loro sono da qualche parte nel
in mezzo non li presenterò in dettaglio
perché è fondamentalmente la mia meccanica
il disegno si adatta all’indice ma ha in cima
che una caratteristica nascosta che un sacco di
le persone tendono a ignorare all’inizio e noi
chiamalo concorrenza senza paura
in realtà digitiamo il controllo simultaneo
modelli diamo un’occhiata a questo noi
avere un contatore il contatore ha un interno
Integer generiamo tre minacce e passiamo
nel contatore usando un prestito mutevole
quello che accadrà qui è che noi
in realtà rileviamo che possiamo solo prendere
questo contatore e mettilo su uno di questi
discussioni una volta che avremmo inviato su di noi
in realtà hanno questa nozione di passaggio
proprietà di un thread ma perché lo siamo
avviare più thread del compilatore
si lamenterà e dimmi che non lo sei
permesso di fare questo non ti è permesso
basta semplicemente spostare il valore in uno
minaccia perché non saprei cosa faccio
alla prossima iterazione, quindi cosa facciamo?
quando abbiamo bisogno di condividere qualcosa tra
più thread solitamente raggiungiamo per a
contatore di riferimento che ci dà un po ‘
nozione di gestione multipla di questo contatore
quindi cerchiamo di raggiungere RC RC in ruggine
è un contatore di riferimento che è solo
significato per singoli thread ma potrei
basta usarlo e vedere se funziona il
la cosa interessante è che la ruggine ha un
nozione di cose che possono essere
inviato tra i thread o meno e il
contatore di riferimento non è per il motivo
che non protegge il suo contatore usando
atomico
le relazioni sono più economiche ma non è così
che sicuro potresti aver mancato i conteggi
sul contatore di riferimento più volontà
scoprire che cosa mi vuole nel
la fine è oh c’è un errore lì
Devo davvero avvolgerlo in mutex lì
dovrebbe essere un mutex in cima e un AR vedere
un contatore di riferimento atomico che ho costruito a
insetto nelle mie diapositive, così mi dirà la ruggine
che ho bisogno di assicurarmi che io
sincronizzare sul bancone e che io
Presto pronuncio anche sul riferimento
Contatore che uso per quel contatore M a
compilare il tempo in questo esempio potrebbe essere un
bug di concorrenza in una garbage collection
lingua un difetto se sei in C e
C ++ perché ti manca gatto M questa analisi
e questa cosa carina è puramente statica e
è indipendente dalla concorrenza
primitivi che usi ciò di cui abbiamo parlato
riguardo stiamo parlando di invio
dati tra thread e sincronizzazione dei dati
tra i thread per tra concorrenza
primitivi
è discendente e la parte di sincronizzazione
quella ruggine sa se stai lavorando
su un reattore di eventi puoi usare esattamente
la stessa semantica e si salverà
tu da quel sistema di tipo ruggine permette no
le corse di dati sono tutte e questo è molto
cosa scherzosa e questa è una cosa
è molto usato in produzione grazie
ma ancora aiutiamo la programmazione
linguaggio quindi diamo un controllo di basso livello
e sicurezza allo stesso tempo la cosa è
cunicoli ridotti a puntatori a
runtime sono un livello puramente compilativo
semantica che garantisce che ogni punto sia
un valido non accadono affatto durante
i valori di runtime che mi hai visto usano il
la sintassi della struct è fondamentalmente strutturata
struct like in C usiamo la nostra struct
layout possiamo anche chiedere al compilatore di
stenderlo come C sulla piattaforma di destinazione
muro e abbiamo un sub non sicuro opzionale
linguaggio per i casi in cui non possiamo
garantire la sicurezza di questi casi
ad esempio, interagire con l’hardware
dispositivi
tutti questi tipi di cose, ciò che abbiamo appena
non è possibile stabilire queste regole
automaticamente così il nostro assistente tecnico ha
coniato questa bella frase codice sicuro significa
puoi prendere rischi migliori in modo sostanziale
hai scritto la maggior parte del tuo programma in
ruggine sicura ma nei punti in cui è necessario
come il controllo completo dei dettagli che puoi fare
ma si opta per la parte non sicura di
la lingua invece di dire che sono
prendendo un linguaggio non sicuro e ci sto provando
per renderlo sicuro e assicurarlo
la gente lo usa nella maggior parte dei posti, quindi facciamolo
tornare alla domanda iniziale è
ruggine riuscita così muove il
lo stato della tecnologia in avanti lo fa
avvolge le tecniche di sicurezza in precedenza solo
utilizzato nelle impostazioni di ricerca in produzione
pronto in un pacchetto pronto per la produzione tutto
queste idee sono nuove sono fondamentalmente
dalla fine degli anni ’90 abbiamo appena preso un
molti di loro li mischiano insieme
otto anni di ruggine era in produzione per
quasi otto anni prima dell’uno zero a
molti concetti sono andati in giro abbiamo avuto
un collezionista di tappeti ad un certo punto noi
non ne ho più uno
tutto questo tipo di cose è andato a
cambiamenti estremi ad un certo punto ma questo
è fondamentalmente la teoria della ricerca applicata in
un pacchetto che in realtà vorremmo
uso in produzione porta memoria
sicurezza per gli ambienti in cui era
in precedenza solo non è possibile perché
l’unica lingua lo supporta
dove lingue non sicure o il runtime
necessario perché era troppo vasto
l’altra cosa che ho detto è che è usata in
ambienti di produzione considerevoli
ovviamente Firefox è abbastanza grande
ambiente di produzione ma questo è
Il linguaggio di casa di Mozilla così ovviamente
stanno usando in Firefox c’è anche
molti altri utenti e questo è
qualcosa che ci piace molto Dropbox
ha costruito sistemi di back-end considerevoli in
esso
quindi praticamente Dropbox è ora alimentato da
ruggine sia sul client che sul server
lato e un sacco di posti e soprattutto
nei luoghi in cui qualsiasi controllo
il nuovo chef del prodotto di distribuzione chef
l’habitat è completamente scritto in ruggine
e un progetto considerevole oltre che canonico
sta usando tutto attraverso il
infrastruttura ma principalmente internamente
è usato in diversi giochi per non giocare ma
come i gruppi più piccoli, quindi per esempio il
lo sviluppatore di start you Valley è
attualmente in uso, quindi non è solo la sua
giochi indie ma non come piccoli indie
giochi indie professionali ci sono a
teatro in realtà usandolo in Germania per
le produzioni operistiche generiche hanno scritto il codice
ma quello è il mio più che è il mio preferito
ma noi siamo usati nelle produzioni operistiche noi
effettivamente utilizzato da più di cento
società e le elenciamo tutte se
c’è qualcuno nella stanza che non è il
quella lista ma sta usando la ruggine
produzione per favore fateci sapere perché noi
mi piace soprattutto conoscerti
non sarebbe e vorrei sapere che cosa
lo stai usando perché ce n’è un paio
molto interessante e soprattutto grande
i nomi su di esso allora attraggono
contributo e penso che sia molto
cosa interessante perché il Mozilla
linguaggio di casa penso che non sarebbe un
prospettiva molto presa in giro perché sarebbe
significa che dipendiamo completamente da Mozilla
continuando così o no la cosa bella è
più di quattro quinti di tutti
contributi al linguaggio ruggine il
il compilatore e le librerie di base vengono
dall’esterno di Missoula ne abbiamo di più
di 2000 contributori nel corso della vita
del progetto e molto del
l’evoluzione della lingua è in realtà
anche le persone di Mozilla non sono guidate
negli spazi in cui, ad esempio, lavoriamo
sulle funzionalità per cui non si utilizza
Firefox è principalmente guidato dalla comunità ma
siamo stati bravi a prenderlo davvero dentro
e evolvendo la lingua anche per gli altri
persone quindi questa è la lista dei contributori
potete avere noi abbiamo questo grazie ma
Ross padrone di casa org dominio dove è possibile
guarda chi ha contribuito a quello che siamo questo
è il riassunto dell’anno da github
siamo l’ottavo progetto più rivisto
come facciamo ma la maggior parte della revisione del codice su
github incompleto
siamo uno dei più discusso
repository anche più di OGS e
subito dopo c’è il browser
che abbiamo costruito nella ruggine quindi ne abbiamo due
i dieci e se lo riassumiamo in realtà
come più grande di OpenShift, sono abbastanza
stupito da quei numeri perché io
Non si sarebbe aspettato di loro mi aspettavo
essere così bravo
sì e abbiamo una crescita considerevole sì
abbiamo raddoppiato in T open Redmont
gli indici dall’anno scorso leggono gli yeoman
il monaco sono fondamentalmente quante persone ci sono
cercandoci su Google
questo è un numero interessante è altamente
impreciso su come giudicare effettivamente come
il grande impegna la comunità è ma esso
anche mappe per avere il doppio del numero
di persone che rispondono effettivamente al nostro
sondaggio che pubblichiamo ogni anno e
sì, al momento abbiamo cinque conferenze
l’anno prossimo sarà di più
e abbiamo oltre 100 meetup intorno al
mondo che è un numero considerevole per a
comunità corriamo due anni e noi
avere nuovi arrivati da tutte le direzioni e
questa è la parte più interessante di questo
non abbiamo solo programmatori di sistemi
andando alla ruggine abbiamo anche Ruby e
I programmatori Python stanno per arrugginire che abbiamo
programma di linguaggio funzionale viene a
ruggine tutto con viste molto diverse
come la lingua vorrebbero il
linguaggio per essere e questa è una buona cosa
è possibile moderare che un altro
metrica interessante è il numero di librerie
sono pubblicati ovviamente un nuovo
lingua avevamo zero come librerie
pubblicato sul nostro indice nel 2014 quando noi
aperto, abbiamo appena passato il mese scorso
l’ indice del pacchetto Haskell così ora siamo
avere più librerie di Haskell e it
ci sono voluti due anni invece di 10 anni
totalmente adoro Haskell è proprio come
sono nella stessa misura in cui siamo così
questo è una specie di qualcosa che dobbiamo
confrontare se aggiungerei NPM in sostanza
tutte queste tre linee sarebbero piatte
l’altro qui è Alex qui che io
trovare una cosa molto interessante perché
hanno questo punto visibile dove
aumentano drammaticamente nella loro
crescita di solito queste linee sono piatte I.
non so perché i numeri dei manager dei pacchetti
sono molto piatto Mi piacerebbe davvero
sapere perché e ci attraggono positivi
feedback siamo la lingua più amata
su Stack Overflow nel 2017 2016 e solo
circa l’1% degli intervistati ha dichiarato
hanno problemi a mettersi in contatto con
il resto della comunità o o comunicare
con noi che vedo se possiamo ridurre
quello ma e otteniamo come questo è venuto
il nostro subreddit ieri quando ero
Preparando questo discorso ho appena detto di piacere
qualcuno disperde un regalo che ci benedica
stazioni ok penso che sia un po ‘troppo ma
grazie ma perché non è come noi
casualmente ha avuto successo
secondo me perché c’è molto
le cose dietro quella prima di tutto quando io
si unì alla comunità di riposo quattro anni fa
uno degli eredi abbiamo avuto uno di aria
dietro tutto questo è ciò che vogliamo
da usare come stiamo lavorando su a
linguaggio che vogliamo essere usato questo è
non è un linguaggio di ricerca, è fantastico
lingue di ricerca ad esempio idris
è proprio un linguaggio di ricerca
fantastico per quello che siamo un linguaggio
vogliamo vedere usato in produzione
il software per quella ragione lo era anche
sempre sviluppato a passo con un enorme
applicazione c’era sempre diversi
accanto ad esso un bene multiplo considerevole
centomila righe codice base di
costruendo un nuovo motore di navigazione che
aiuta molto quando sviluppi una lingua
perché puoi davvero capire se
cambiamo questo che impatto ha
su una base di codice grande e reale e non su a
lo snippet di dieci righe slide ci assicuriamo
che la lingua è accessibile è
facile da ottenere una configurazione dell’ambiente che abbiamo
strumenti che ti danno solo un compilatore
di diverse mode che ti dà se
vuoi tagliare gli strumenti di compilazione e
tutto questo tipo di cose
costruiamo in costruito e dipendenza
gestione come parte della catena di strumenti
che spediamo in modo da avere qualcosa di simile
bundler ma per la ruggine che ha
strumenti di sviluppo in cima a questo noi
avere un server linguistico che implementa
il protocollo del server delle lingue in cui ti trovi
può ottenere errori su un socket di rete a
mostrali nel tuo editor e in tutto
questo tipo di cose fa tutto il
Analisi per voi e non avete bisogno di
analizzalo così come gli altri Inter
per i modelli di codifica e tutti questi tipi
di cose che ci mettono un sacco di orgoglio nel nostro
di messaggi di errore successivo colloquio è gonna
sii un olmo che dice che siamo un po ‘peggio
di olmo e questo piace molto al re
di quello, ma non è insolito che piace
nuove versioni di ruggine avranno più e
migliori messaggi di errore e c’è a
un paio di persone che sono davvero orgogliose
che abbiamo grandi blocchi per il libro
e uno standard quasi completamente documentato
API
la cosa con grande Doc è che sono
molto meglio di ciò che è per lo più là fuori
per molti nuovi linguaggi di programmazione
abbiamo effettivamente qualcuno impiegato il
ci scrive ovviamente c’è sempre
come l’uno o l’ altro se tu
voglio se tu se ne noti uno mentre
lo stai leggendo facci sapere noi
in realtà ha un canale youtube che
raccoglie tutti i discorsi e le conferenze così una volta
questo è su YouTube lo sarà anche
lì ha anche alcuni docenti
Tedesco su un’università tedesca e
raccoglie tutti i pensieri su tutte le conferenze
su tutti gli argomenti per essere facilmente
ricercabile e abbiamo mantenuto forum
e RAC e altre piattaforme di chat per ottenere
in contatto che ho usato molto Russ è un
linguaggio molto pragmatico e penso che
aiuta in adozione tutte le funzionalità sono
guidato dalle esigenze del software reale così
ci assicuriamo che ogni versione in realtà
sblocca qualcosa di utile per alcuni dei nostri
questo potrebbe non essere per te, ma è così
potrebbe essere per gli altri e le persone vedono dove
è utile la lingua è per lo più
evoluto con feedback degli utenti quindi non lo è
come alcune persone in Mozilla appena ricevuto
in una stanza e trovare un a con a
cambiare e noi consapevolmente sceglieremo
familiarmente li costruisce nel caso
che ce ne sono alcuni disponibili così
cosa del genere
i mutuatari sono in qualche modo collegati
riferimenti quindi usiamo un M percento per
così le persone a cui sono abituati
i riferimenti in realtà possono solo essere trasportati sulle spalle
sulla sintassi e prendiamo buone idee
da altri come i nostri messaggi di errore
sicuramente elementi da esso quindi guardiamo
in giro per altre lingue per vedere cosa
loro vedono come costruiscono il
infrastruttura la lingua gioca bene
con gli altri ma e questo aiuta
adozione possiamo compilare il codice per solo
normali file oggetto o semplicemente normali
librerie statiche o dinamiche che tu
puoi scrivere un file di intestazione per e poi
basta usarlo nel codice C o nell’altro modo
in giro o puoi usare il csfi del tuo
lingua preferita che non è necessario
scrivi strumenti di ruggine su di te
può rendere le cose un po ‘migliori
ma se usi il CF fi del tuo
lingua che ti può piacere anche subito
usa le librerie Russell sono vincolanti
generatori disponibili per C e C ++ che
sono veramente buoni perché sono molto pesanti
usato in Firefox e detto anche se loro
solo bisogno di loro e c’è di alto livello
binding per alcune altre lingue Ruby
JavaScript Python sai che è fantastico
partner per quelle lingue perché il
la cosa bella di solito è quando si abbassa
vedere dai pison o qualcosa che dai
la sicurezza della memoria quando si scende a
ruggine non si arrende alla sicurezza della memoria
il che significa che non hai colpa di SEC
Applicazione Django semplice come quella e
non vuole essere il primario
linguaggio a tutti i costi a cui siamo abituati
tutti i nostri utenti che lo utilizzano da qualche parte
l’ infrastruttura non c’è quasi
persone in giro che so che lo sono
programmatori puramente ruggine la maggior parte del tempo
sono come il 50% in meno di programmatori e noi
sono totalmente costruiti per l’adozione graduale
questo ci ha aiutato molto
proprio come un progetto da dare un’occhiata
stylo è la cosa che alimenta Firefox
quanto più la velocità aumenta
Firefox quantico per il marketing esterno
scopi a volte anche leggere come
CSS quantico la libreria è ancora chiamata
stylo è preso dal server
progetto tenerlo premuto su Firefox e poi
è tutto lo stile ma lo stile
il motore fa
applica gli stili che hai in esso
passa un file CSS e quindi applica il
stili che ho trovato in un albero Dom
la cosa interessante di questo è no
il browser lo fa attualmente in parallelo
sebbene sia teoricamente noto
questo è un compito altamente parallelizzabile
Mozilla ci ha provato due volte e ha fallito
e in effetti ci sono riusciti con questo e uno
delle cose è che hanno incontrato molto
bug multi-threading che avrebbero
avevo bisogno di costruire un sacco di macchinari
in cima a tutto questo in pratica è tutto
tutta la magia è qui dietro lo stylo
il monitoraggio della concorrenza che res
garantisce di non correre
in gare di dati accidentali e così via
permesso di fare tutto questo riscrivere in
circa un anno e poi alla fine il
possibilità di usare solo C FFI o simili
accedere direttamente alle strutture di memoria come a
concetto di base della lingua ruggine ha un
modello di memoria simile a C consentito per
visitare l’integrazione molto facile anche perché
la ruggine non ha tempo di funzionamento, quindi lo faresti
Non pensare a come integrare
il resto runtime in Firefox o
qualcosa del genere quindi c’è un
un paio di motivi oltre il semplice codice noi
avere un severo impegno per la stabilità
la ruggine viene rilasciata ogni sei settimane come
Firefox una delle ragioni dietro a ciò
vogliamo che le modifiche siano piccole così
di solito non abbiamo cambiamenti di rottura
ma a volte dobbiamo sistemare come parte
alcuni come buchi nel sistema di tipi che sono
raro, ma succede e poi vogliamo
assicurati che le persone non debbano spostarsi
il mondo solo per passare a quello successivo
versione significa anche che dovresti
di solito come leggere i cambiamenti in
giro mezz’ora o qualcosa del genere
quella
ed essere è più facile seguire la ruggine
retrocompatibile con enormi macchinari
per assicurarci di scaricare letteralmente tutto
codice di ruggine pubblico e costruirlo quando noi
prova a scoprire se costruiremo un
la coscienza al contrario camila debug siamo
attualmente alla versione 121 il prossimo è
arrivando in circa cinque settimane anche noi
non consentire l’uso di alcun tipo di instabile
nelle funzioni di sviluppo della nostra scuderia
compilatore quindi se hai una spinta stabile
compilatore tutto come ogni interfaccia
espone è stabile
tutto il resto è disponibile solo in
nightly build in modo che non sai che
stai effettivamente usando cose instabili e
non vogliamo rilasciare nulla di ciò che è
non è pronto per un ampio uso sulla nostra scuderia
canale se è instabile è stabile
può usarlo è pienamente supportato noi
sulle spalle su un paio di cose a
fornire la maturità che la nostra cogenerazione è
fornito a LLVM così portiamo il mouse su
la maturità di LLVM e tutto il su tutto il
obiettivi che supporta non abbiamo runtime
quindi non abbiamo bug di runtime ci fosse a
tempo in cui Russ aveva ancora un runtime e
è stato davvero terribile e abbiamo un
approccio molto conservativo da adottare
cose in una libreria standard, così siamo
non come una batteria inclusa la lingua
abbiamo batterie facilmente scaricabili
linguaggio è un cross compilatore Russ C
è di default un cross compilatore e il
tutto lo strumento è consapevole di questo
questo quasi nessuna compilazione di stampa di setup
l’unica cosa di cui hai bisogno è la
indifferenza per andare ad esempio di cui hai bisogno
il bersaglio Lipsy e tutti questi
cose per il target e supportiamo
casi di utilizzo incorporati e IOT che abbiamo persino
un’intera corteccia un intero sistema operativo
scritto per i dispositivi IOT corteccia-m scritti
in ruggine
si chiama succhiare noi e sì, non lo è stato
così per quelli che avevano visto il discorso
prima abbiamo anche un intero governo
struttura costruita e che ci aiuta molto
per esempio tutte le modifiche passano attraverso un
aprire il processo RFC quindi se anche se qualcuno
su Mozilla vuole cambiare qualcosa
lingua scrivono un grande documento e
le persone possono quindi commentare di solito
funziona abbastanza bene e discussioni
sono piccoli ma può anche accadere che a
la funzionalità è controversa
per esempio, abbiamo avuto una funzione di riforma
è stato abbattuto tre volte quest’anno
ed è molto meglio ora devo farlo
dì ma questa è una parte del processo
e il fatto è che Mozilla riguarda il
solo
compagnia che so che ha un grande
esperienza con discussione aperta e
processi che dimostrano che ciò non significa
come dappertutto a Missoula che funziona
come perfettamente ma almeno Missoula ha
il concetto di avere una collaborazione aperta
su un progetto che producono tracciamo molto
di cose per esempio il tempo medio a
unire una richiesta pull per una modifica a qualsiasi
tipo delle nostre cose è di sei giorni che
significa se hai una correzione a
alla documentazione è probabilmente
unite quando il manutentore si sveglia se
è una cosa più grande che può essere totalmente
che ci vogliono da 30 a 40 giorni ma
non lasciamo rimanere in giro per un anno
o qualcosa o lo negheremo allora
o dire che dobbiamo rimandare o noi
in realtà spostare andare avanti per assicurarsi
che è unito, supportiamo anche noi
utenti commerciali quindi facciamo regolarmente
interviste con gli utenti della produzione da ascoltare
sui loro problemi che di solito non sono in
l’aperto perché di solito non vogliono
per parlarne nel tuo va bene
potete sempre contattarci con il simile
problemi di produzione perché ci piacerebbe
lo so perché è molto difficile da ottenere
questa informazione la maggior parte del tempo noi
avere consulenza per lo sviluppo e la formazione
disponibile attraverso una società statunitense e la mia
più ne viene fuori lentamente
L’allenamento Russ è in realtà considerevole
affari che entrambe queste società
attualmente hanno ed ecco un altro hack
um se gestisci un open source più grande
progetto non so perché molte persone
non farlo questo lo mettiamo ovunque che se
hai qualche domanda sul progetto
puoi chiedere al team della comunità noi solo
inoltrarti alla persona giusta e una volta
hai fatto come due o tre anni
persone che effettivamente useranno questo
ci sono così tante persone che entrano in contatto
con noi che tale indirizzo e-mail che abbiamo
attualmente devo vedere che possiamo seguire
su tutte queste e-mail ma c’è così
molte informazioni in questo e in particolare
ci sono così tante persone che sono come me
completamente perso non so come mi piace
approccio a questo problema e probabilmente
qualcuno che è nella comunità più a lungo
lo sa e questo è come un tre
compito minuto per me quello che potrebbe essere un tre
compito ora per i membri della comunità e io
sarebbe del tutto l’amore che
hanno passato il loro tempo altrimenti
quindi chiudere la ruggine porta al sicuro
programmare verso gli obiettivi dov’era
prima è irrealizzabile, mentre porta anche
cose di nuovo al tavolo per competere con
altri linguaggi sicuri come il tutto
monitoraggio della concorrenza e in pratica il
tutto troppo difficile per riassumere
in alto non si può scrivere la fiducia con il
resto si, grazie, stavo solo guardando
per il mio microfono abbiamo un sacco di domande
che io passare attraverso prima di tutto è
c’è così buono o qual è il miglior IDE per
utilizzare per la ruggine, quindi le persone vogliono ottenere
pratico sì, posso anche sapere se
qualcuno se ne va prendere uno di questi
cartoline ha il più importante
collegamenti di cui hai bisogno per iniziare
ruggine e puoi toccare il
comunità I des quindi stiamo producendo il
language server ruggine e siamo anche noi
producendo l’integrazione in un Visual
Codice di studio che è un editor non del tutto
un’identificazione e un jetbrain in realtà vengono spediti in ruggine
IDE che è la loro produzione è
davvero molto bene quindi se vuoi
avere se si desidera avere un adeguato
IDE sarebbe quello che vorrei
consiglio di sapere che ce ne sono alcuni
persone che lavorano su Visual Studio
integrazione che è anche uno dei
ragioni per le quali stiamo effettivamente implementando
il protocollo del server di lingua ruggine
perché questo è ciò che la maggior parte degli ID sono
effettivamente usato questo per JetBrains no
quindi per riassumere un codice di Visual Studio
ID di jetpens sono quelli che puoi
totalmente utilizzato nella nostra produzione pronto essere
alla ricerca di visual per visual
studio proprio allora c’era il no
questa è una citazione su un’altra programmazione
lingua non lo dirò ma cosa
sulle prestazioni della compilazione della ruggine
che è sto sempre in attesa di questo
domanda quindi uno dei motivi della ruggine
ha un nome per non essere
il linguaggio più veloce per compilare questo è
anche non il più lento ma per esempio
diversi compilatori per come 20 a 25
minuti uno dei motivi per cui è così
il caso non è in realtà abbastanza nel
controllo di Rossi per esempio uno dei
le cose sono noi generiamo il codice e noi
spingerlo a LLVM e lrvm e perdere a
molte informazioni in quel processo per
esempio la ruggine come una lingua lo impedisce
qualsiasi punto è troppo simile a qualsiasi mutabile
il punto è troppo odioso e questo è
qualcosa che i compilatori cercano di capire
fuori dall’analisi statica e lo siamo
buttare via quell’informazione una volta
lo stiamo spingendo a LLVM e LVM
inizia a capirlo di nuovo, c’è un
l’interfaccia per quello in LLVM è
attualmente rotto, quindi stiamo lavorando
correggendo così puoi farlo puoi spingerlo
le informazioni in LLVM mancheranno quindi
compilare quindi queste sono come le cose
su cui stiamo lavorando anche questo è sul nostro
lato sarebbe ottenere la generazione di troppo
codice quindi questo è qualcosa che le persone
può davvero funzionare sulla cosa che siamo
costantemente lavorando per migliorare quelli
di solito è il tempo in cui guadagni in giro
Dal 20 al 30 percento più di mezzo anno in
Compilare le prestazioni quindi questa è la gamma
di ottimizzazione che il compilatore chris
attualmente è utilizzabile velocemente è a
dillo e anche quando sei
usando c ++ se esagerate con
generici e il compilatore deve rotolare
tutte le specializzazioni per tutti i
farmaci generici che è appena andando a costare
al momento della compilazione quindi c’è persino
tecniche di programmazione che vanno in giro
questo problema un po ‘se stai lavorando
su larga scala un’altra domanda che è
molto spesso chiesto informazioni sulle lingue
che il nostro sistema parla come chiedere
scritto da solo il resto è scritto a riposo
è scritto in riposo abbiamo un sacco di
che anche che il compilatore resto non lo fa
sapere in cosa consiste la definizione di una nuova riga
il resto del compilatore è letteralmente se tu
vedi / n in questo nel parser se vedi
barra e poi è la barra
letterale il motivo per cui questo funziona è
perché compiliamo ruggine con ruggine
sa cos’è una nuova riga
quindi possiamo iniettare nel prossimo compilatore
il prossimo compilatore generato quale è il nuovo
la luce era un cenno ai due
riflessioni sulla fiducia fiduciosa, sì, noi
sono auto-ospitati e ci divertiamo con esso
va bene
per quanto riguarda le prestazioni rispetto a C ++
o Java ciao intendo che dipende sempre da
cosa stai facendo
quindi in generale, come le prestazioni sono attive
par con C ++ è con tutte le note a piè di pagina
che hai anche C ++ come prima cosa
tutto ciò che potrebbe essere la fiducia non aggiorna
non fa un’ottimizzazione a
Il compilatore C ++ lo farebbe al momento
la cosa in cui siamo più lenti ma come la modella
saggia le lingue sono abbastanza vicine e
stanno atterrando nello stesso modo nella stessa
range potrebbe essere un paio di
millisecondi più un paio di
millisecondi dopo via il confronto
con Java trovo molto difficile da fare perché
ci sono un paio di algoritmi
mi piace davvero molto la raccolta dei rifiuti
il problema non è sostanzialmente come
Java è più veloce o il Java simile che
modello di programmazione supportiamo meglio
quindi Java è incredibilmente veloce
quindi probabilmente lo stesso intervallo di solito un po ‘
un po ‘più veloce a seconda dell’algoritmo
è un argomento molto complesso ce ne sono alcuni
post di blog là fuori su quest’altro
bene una domanda da aspettarsi è il
confronto per andare o D ma è più è
non per la performance è più
su quali sono le cose che la ruggine offre
che quelli non D sono interessanti
vai vai di solito abbiamo lo stesso di a
gioco da tavolo l’ altro come programmazione
lingua il motivo la ragione per cui questi
e questo non si accumula per il motivo
perché queste lingue vengono spesso confrontate
è perché sono stati pubblicati come il
progetto di ricerca ruggine e linguaggio
andare da Google sono stati pubblicati intorno al
stesso tempo fondamentalmente due mesi tra
e aggiungere a ciò la ruggine che era
pubblicato allora aveva effettivamente come un
sintassi e canale di piccolo canale
semantica nella lingua e
tempi di esecuzione
e penso che l’influenza abbia arrugginito molto
perché ciò significava che nessuno doveva andare
da Mozilla nessuno ha bisogno di ciò che puoi
vai a usare vai da Google, quindi significava
quella ruggine è andata radicalmente diversa
direzione e in realtà ha detto che siamo
buttando tutte le nostre cose runtime siamo
buttando fuori il netturbino che siamo
passare a questo modello completamente statico
dove possiamo andare su dispositivi embedded
ovunque viene utilizzato AC e tutti questi
tipo di cose il confronto da fare è a
un po ‘2d è un po’ diverso
addy ha un garbage collector opzionale
e a seconda che tu ne abbia bisogno
o no la lingua è un po ‘
diverso, quindi ha un pò questo abbiamo optato
in un sistema runtime o non D è vecchio
che significa che sia ha la maturità anche
non ha ancora preso piede come a
la persona della comunità come D è molto
cosa interessante di cui discutere ma io
non posso dire di dirlo troppo bene
allora forse questo è interessante che
parte di un sistema legacy sarebbe il
meglio orientare per la sostituzione e la ruggine
moduli tutto ciò che usa pesante
concorrenza ed è completamente rotto
per questo se hai se hai un
pezzo del sistema in cui non si dispone di
qualsiasi controllo a causa di questi
proprietà che forse riscrive in ruggine
sei fondamentalmente un’analisi statica che tu
altrimenti pagherebbe centomila
euro per o più
ok ora domanda più provocatoria cosa
sono i punti deboli della lingua
i tempi di compilazione in un primo momento è un
linguaggio completamente statico quindi se lo sei
provando a piacere dico sempre come se tu
parlare di riflessione la ruggine è un vampiro
il linguaggio non riflette affatto così se
vuoi fare qualsiasi tipo di molto dinamico
la programmazione sono come hai visto sono
un programmatore arrugginito prima se lo si desidera
fare qualsiasi tipo di pesante
programmazione dinamica Russ non è solo per
tu non è un linguaggio orientato agli oggetti
non c’è un messaggio simile da inviare tra
gli oggetti o tutte queste semantiche no
esiste così se tu se ti trovi bene
con questi tipi di ambienti client
quindi probabilmente la ruggine non fa per te e
è sicuramente una debolezza del linguaggio
sì anche attualmente dipende dal
campo sei nella maturità delle biblioteche
ma questo dipende molto da
il campo sei e come tutto
che ha a che fare con l’ analisi di HTML di tutto
questo tipo di cose puoi usare il
librerie che il server fornisce sono
come in alto ce ne sono un paio di molto buoni
librerie per scrivere giochi e motori
e tutto questo tipo di cose come
basi si può usare questo altro
i campi erano buoni, non siamo ancora così lontani
arriva con l’età che cosa si assume
I / O non bloccanti va bene oh è un abbiamo
un intero quadro quadro attorno a questo
si chiama tocayo
e un’implementazione del futuro, quindi se
sei a tuo agio con il futuro
interfaccia abbiamo un abbiamo una libreria
che lo fornisce come interfaccia e
allora abbiamo Tokyo che è una biblioteca
che gestisce i futures su un reattore di eventi
c’è anche un’implementazione che funziona
i futures sul gtk è il reattore dell’evento gtk
attualmente impegnativo pesantemente alla ruggine e
ci sono implementazioni di corsa
eseguendoli su un pool di thread che
non sarebbe la ciliegina, ma si, se lo sei
interessato a Tokyo è la cosa
vuoi usare e poi qualcosa forse
bene io non capisco la domanda
ma forse voi due è sconcertante possibile
filo LLVM perché LLVM so che noi
avere strumenti che prima usano l’ americano
blob sfocato e rossiccio labiale non so
quale DLL per non so riguardo al LLVM
fuzzer hmm ok questo è probabilmente quello
sì, così ci siamo divertiti è abbastanza
sacco di gente che in realtà lo praticano
molto in modo da poter trovare tutorial per questo
e fai in modo che ci siano anche integrazioni
i nostri strumenti di compilazione come plugin vanno bene
qualsiasi domanda nella stanza qui noi
ho ancora Oh No
beh, in realtà siamo alla fine ma se
ci sarebbe una domanda urgente
potrebbe saperlo bene
bene grazie
e dimentichiamo questi
[Applausi]
Please follow and like us: