Αναπτύσσοντας developer tools στην Αpple Αργύριος Κυρτζίδης Προπτυχιακός φοιτητής ΗΜΜΥ
Apple Inc.
Apple Inc. Από τις μεγαλύτερες τεχνολογικές εταιρίες
Apple Inc. Από τις μεγαλύτερες τεχνολογικές εταιρίες Hardware
Apple Inc. Από τις μεγαλύτερες τεχνολογικές εταιρίες Hardware imac, Macbook
Apple Inc. Από τις μεγαλύτερες τεχνολογικές εταιρίες Hardware imac, Macbook ipod, ipod touch
Apple Inc. Από τις μεγαλύτερες τεχνολογικές εταιρίες Hardware imac, Macbook ipod, ipod touch iphone
Apple Inc. Από τις μεγαλύτερες τεχνολογικές εταιρίες Hardware imac, Macbook ipod, ipod touch iphone ipad
Apple Inc. Από τις μεγαλύτερες τεχνολογικές εταιρίες Hardware imac, Macbook ipod, ipod touch iphone ipad 1,000,000 σε 28 μέρες
Apple Inc.
Apple Inc. Aνοιχτό Λογισµικό
Apple Inc. Aνοιχτό Λογισµικό Darwin kernel (Mac OS X)
Apple Inc. Aνοιχτό Λογισµικό Darwin kernel (Mac OS X) MacRuby
Apple Inc. Aνοιχτό Λογισµικό Darwin kernel (Mac OS X) MacRuby Webkit
Apple Inc. Aνοιχτό Λογισµικό Darwin kernel (Mac OS X) MacRuby Webkit Safari, Chrome
Apple Inc. Aνοιχτό Λογισµικό Darwin kernel (Mac OS X) MacRuby Webkit Safari, Chrome iphone, Android, Blackberry
Apple Inc. Aνοιχτό Λογισµικό Darwin kernel (Mac OS X) MacRuby Webkit Safari, Chrome iphone, Android, Blackberry LLVM
Low Level Virtual Machine (LLVM)
Low Level Virtual Machine (LLVM)
Low Level Virtual Machine (LLVM) Compiler framework
Low Level Virtual Machine (LLVM) Compiler framework Optimization προγραµµάτων compile-time link-time run-time
Low Level Virtual Machine (LLVM)
Low Level Virtual Machine (LLVM) University of Illinois at Urbana-Champaign
Low Level Virtual Machine (LLVM) University of Illinois at Urbana-Champaign Open source (http://llvm.org)
Low Level Virtual Machine (LLVM) University of Illinois at Urbana-Champaign Open source (http://llvm.org) BSD-style άδεια χρήσης
Low Level Virtual Machine (LLVM) University of Illinois at Urbana-Champaign Open source (http://llvm.org) BSD-style άδεια χρήσης Χρήση από εταιρίες
Low Level Virtual Machine (LLVM) University of Illinois at Urbana-Champaign Open source (http://llvm.org) BSD-style άδεια χρήσης Χρήση από εταιρίες Αpple, από 2005
Low Level Virtual Machine (LLVM) University of Illinois at Urbana-Champaign Open source (http://llvm.org) BSD-style άδεια χρήσης Χρήση από εταιρίες Αpple, από 2005 Adobe, Nvidia, Cray Inc.,...
Low Level Virtual Machine (LLVM)
Low Level Virtual Machine (LLVM) C/C++ Java Fortran Haskell
Low Level Virtual Machine (LLVM) C/C++ Java Fortran Haskell LLVM IR Optimizations
Low Level Virtual Machine (LLVM) C/C++ Java Fortran Haskell LLVM IR Optimizations Κώδικας µηχανής JIT Interpreter X86 ARM
LLVM IR
LLVM IR Σχεδιασµένο για optimizations
LLVM IR Σχεδιασµένο για optimizations Virtual machine χαµηλού επιπέδου
LLVM IR Σχεδιασµένο για optimizations Virtual machine χαµηλού επιπέδου Άπειροι registers
LLVM IR Σχεδιασµένο για optimizations Virtual machine χαµηλού επιπέδου Άπειροι registers SSA (Static Single Assignment)
LLVM IR
LLVM IR int fn(int x, int y) { return x+y; }
LLVM IR int fn(int x, int y) { return x+y; } define i32 @fn(i32 %x, i32 %y) nounwind { entry: %retval = alloca i32, align 4 ; <i32*> [#uses=2] %x.addr = alloca i32, align 4 ; <i32*> [#uses=2] %y.addr = alloca i32, align 4 ; <i32*> [#uses=2] store i32 %x, i32* %x.addr store i32 %y, i32* %y.addr %tmp = load i32* %x.addr ; <i32> [#uses=1] %tmp1 = load i32* %y.addr ; <i32> [#uses=1] %add = add nsw i32 %tmp, %tmp1 ; <i32> [#uses=1] store i32 %add, i32* %retval %0 = load i32* %retval ; <i32> [#uses=1] ret i32 %0 }
LLVM IR int fn(int x, int y) { return x+y; } define i32 @fn(i32 %x, i32 %y) nounwind readnone { entry: %add = add nsw i32 %y, %x ; <i32> [#uses=1] ret i32 %add }
Clang
Clang C/C++, Objective C/C++, front-end για LLVM
Clang C/C++, Objective C/C++, front-end για LLVM Ξεκίνησε από την Αpple
Clang C/C++, Objective C/C++, front-end για LLVM Ξεκίνησε από την Αpple Open source (http://clang.llvm.org)
Clang C/C++, Objective C/C++, front-end για LLVM Ξεκίνησε από την Αpple Open source (http://clang.llvm.org) Aρχιτεκτονική βασισµένη σε βιβλιοθήκες (libraries)
Στόχοι Clang
Στόχοι Clang C Language Family
Στόχοι Clang C Language Family Parser + AST βιβλιοθήκες
Στόχοι Clang C Language Family Parser + AST βιβλιοθήκες Κώδικα µηχανής µέσω LLVM
Στόχοι Clang C Language Family Parser + AST βιβλιοθήκες Κώδικα µηχανής µέσω LLVM Yποδοµή για source-code εργαλεία (tools)
Στόχοι Clang C Language Family Parser + AST βιβλιοθήκες Κώδικα µηχανής µέσω LLVM Yποδοµή για source-code εργαλεία (tools) Ενσωµάτωση σε IDE (Integrated Development Environment)
Στόχοι Clang C Language Family Parser + AST βιβλιοθήκες Κώδικα µηχανής µέσω LLVM Yποδοµή για source-code εργαλεία (tools) Ενσωµάτωση σε IDE (Integrated Development Environment) Εργαλεία
Στόχοι Clang C Language Family Parser + AST βιβλιοθήκες Κώδικα µηχανής µέσω LLVM Yποδοµή για source-code εργαλεία (tools) Ενσωµάτωση σε IDE (Integrated Development Environment) Εργαλεία GCC συµβατός compiler
Στόχοι Clang C Language Family Parser + AST βιβλιοθήκες Κώδικα µηχανής µέσω LLVM Yποδοµή για source-code εργαλεία (tools) Ενσωµάτωση σε IDE (Integrated Development Environment) Εργαλεία GCC συµβατός compiler Static analyzer
Εφαρμογές Clang
OpenCL
OpenCL Γλώσσα και framework για γενική προγραµµατιστική χρήση GPUs και CPUs
OpenCL Γλώσσα και framework για γενική προγραµµατιστική χρήση GPUs και CPUs Χρήση Clang & LLVM για JIT compilation C κώδικα
OpenCL Γλώσσα και framework για γενική προγραµµατιστική χρήση GPUs και CPUs Χρήση Clang & LLVM για JIT compilation C κώδικα
Clang Static Analyzer
Clang Static Analyzer Eργαλείο για να βρίσκει bugs µετά από ανάλυση του source code
Clang Static Analyzer Eργαλείο για να βρίσκει bugs µετά από ανάλυση του source code Bugs που δεν φαίνονται στα compiler warnings
Clang Static Analyzer Eργαλείο για να βρίσκει bugs µετά από ανάλυση του source code Bugs που δεν φαίνονται στα compiler warnings Memory leaks, logic errors, API violations,...
Clang Static Analyzer
Διαδροµή προς Αpple
Google Summer of Code
Google Summer of Code
Google Summer of Code Καλοκαιρινή εργασία επί πληρωµή
Google Summer of Code Καλοκαιρινή εργασία επί πληρωµή Εργασία από το Internet
Google Summer of Code Καλοκαιρινή εργασία επί πληρωµή Εργασία από το Internet 1000 φοιτητές
Google Summer of Code Καλοκαιρινή εργασία επί πληρωµή Εργασία από το Internet 1000 φοιτητές Προ/µετά-πτυχιακοί
Google Summer of Code Καλοκαιρινή εργασία επί πληρωµή Εργασία από το Internet 1000 φοιτητές Προ/µετά-πτυχιακοί Διδακτορικοί
Google Summer of Code Καλοκαιρινή εργασία επί πληρωµή Εργασία από το Internet 1000 φοιτητές Προ/µετά-πτυχιακοί Διδακτορικοί 150 open source projects
Apple Internship
Clang Indexing Library
Clang Indexing Library Τί είναι Indexing ;
Clang Indexing Library
Clang Indexing Library
Clang Indexing Library
Clang Indexing Library
Clang Indexing Library
Clang Indexing Library
Clang Indexing Library
Clang Libraries Basic Lex Parse Analysis Rewrite Codegen AST Sema
Clang Libraries Basic Lex Parse AST Analysis Rewrite Codegen Index Sema
libindex: Πως δουλεύει
libindex: Πως δουλεύει t.c
libindex: Πως δουλεύει t.c Clang
libindex: Πως δουλεύει t.c Clang AST
libindex: Πως δουλεύει t.c Clang AST Μνήµη
libindex: Πως δουλεύει t.c Clang AST AST αρχείο Μνήµη
libindex: Πως δουλεύει t.c Abstract Syntax Tree Function declaration Foo Variable declaration x Function definition calc Function definition bar Return statement BinaryOperator = Reference expression (variable x ) Reference expression (variable x ) Call expression Reference expression (function foo )
libindex: Πως δουλεύει t.c Abstract Syntax Tree Function declaration Foo Variable declaration x Function definition calc Function definition bar Return statement BinaryOperator = Reference expression (variable x ) Reference expression (variable x ) Call expression Reference expression (function foo )
libindex: Πως δουλεύει t.c Abstract Syntax Tree Function declaration Foo Variable declaration x Function definition calc Function definition bar Return statement file: t.c line: 5 column:8 Reference expression (variable x ) BinaryOperator = Call expression Reference expression (variable x ) Reference expression (function foo )
libindex: Πως δουλεύει t.c Abstract Syntax Tree Function declaration Foo Variable declaration x Function definition calc Function definition bar Return statement file: t.c line: 5 column:8 Reference expression (variable x ) BinaryOperator = Call expression Reference expression (variable x ) Reference expression (function foo )
libindex: Crossing source files
libindex: Crossing source files t1.c t2.c t3.m
libindex: Crossing source files t1.c t2.c t3.m Clang Clang Clang
libindex: Crossing source files t1.c t2.c t3.m Clang Clang Clang t1 AST t2 AST t3 AST
libindex: Crossing source files t1.c t2.c t3.m Clang Clang Clang t1 AST t2 AST t3 AST Indexer
libindex: Crossing source files t1.c t2.c t3.m Clang Clang Clang t1 AST t2 AST t3 AST Indexer Function foo
libindex: Crossing source files t1.c t2.c t3.m Clang Clang Clang t1 AST t2 AST t3 AST Indexer Function foo
libindex: Crossing source files t1.c t2.c t3.m Clang Clang Clang t1 AST t2 AST t3 AST Indexer Function foo
libindex: Crossing source files t1.c t2.c t3.m Clang Clang Clang t1 AST t2 AST t3 AST Indexer
libindex: Crossing source files t1.c t2.c t3.m Clang Clang Clang t1 AST t2 AST t3 AST Indexer
libindex: Crossing source files t1.c t2.c t3.m Clang Clang Clang t1 AST t2 AST t3 AST Indexer
libindex: Crossing source files t1.c t2.c t3.m Clang Clang Clang t1 AST t2 AST t3 AST Indexer
libindex: Crossing source files t1.c t2.c t3.m Clang Clang Clang t1 AST t2 AST t3 AST Indexer
libindex: Χαρακτηριστικά
libindex: Χαρακτηριστικά Κατανόηση σηµείου σε κώδικα
libindex: Χαρακτηριστικά Κατανόηση σηµείου σε κώδικα Βρίσκει Declarations Definitions References
libindex: Χαρακτηριστικά Κατανόηση σηµείου σε κώδικα Βρίσκει Declarations Definitions References Across project files
Εµπειρία σαν Apple Intern
Apple Intern
Apple Intern Άνετο & φιλικό περιβάλλον εργασίας
Apple Intern Άνετο & φιλικό περιβάλλον εργασίας Παρουσιάσεις από executives
Apple Intern Άνετο & φιλικό περιβάλλον εργασίας Παρουσιάσεις από executives Project
Apple Intern Άνετο & φιλικό περιβάλλον εργασίας Παρουσιάσεις από executives Project Παρουσίαση project στο manager του division
Apple Intern Άνετο & φιλικό περιβάλλον εργασίας Παρουσιάσεις από executives Project Παρουσίαση project στο manager του division Παρουσίαση στο VP of software engineering (Bertrand Serlet)
Απορίες ;