Declarative Name Binding and Scope Rules
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Scoping Changes with Method Namespaces
Scoping Changes with Method Namespaces Alexandre Bergel ADAM Project, INRIA Futurs Lille, France [email protected] Abstract. Size and complexity of software has reached a point where modular constructs provided by traditional object-oriented programming languages are not expressive enough. A typical situation is how to modify a legacy code without breaking its existing clients. We propose method namespaces as a visibility mechanism for behavioral refine- ments of classes (method addition and redefinition). New methods may be added and existing methods may be redefined in a method namespace. This results in a new version of a class accessible only within the defining method namespace. This mechanism, complementary to inheritance in object-orientation and tradi- tional packages, allows unanticipated changes while minimizing the impact on former code. Method Namespaces have been implemented in the Squeak Smalltalk system and has been successfully used to provide a translated version of a library without ad- versely impacting its original clients. We also provide benchmarks that demon- strate its application in a practical setting. 1 Introduction Managing evolution and changes is a critical part of the life cycle of all software sys- tems [BMZ+05, NDGL06]. In software, changes are modeled as a set of incremental code refinements such as class redefinition, method addition, and method redefinition. Class-based object-oriented programming languages (OOP) models code refinements with subclasses that contain behavioral differences. It appears that subclassing is well adapted when evolution is anticipated. For example, most design patterns and frame- works rely on class inheritance to express future anticipated adaptation and evolution. However, subclassing does not as easily help in expressing unanticipated software evo- lution [FF98a, BDN05b]. -
Investigating Powershell Attacks
Investigating PowerShell Attacks Black Hat USA 2014 August 7, 2014 PRESENTED BY: Ryan Kazanciyan, Matt Hastings © Mandiant, A FireEye Company. All rights reserved. Background Case Study WinRM, Victim VPN SMB, NetBIOS Attacker Victim workstations, Client servers § Fortune 100 organization § Command-and-control via § Compromised for > 3 years § Scheduled tasks § Active Directory § Local execution of § Authenticated access to PowerShell scripts corporate VPN § PowerShell Remoting © Mandiant, A FireEye Company. All rights reserved. 2 Why PowerShell? It can do almost anything… Execute commands Download files from the internet Reflectively load / inject code Interface with Win32 API Enumerate files Interact with the registry Interact with services Examine processes Retrieve event logs Access .NET framework © Mandiant, A FireEye Company. All rights reserved. 3 PowerShell Attack Tools § PowerSploit § Posh-SecMod § Reconnaissance § Veil-PowerView § Code execution § Metasploit § DLL injection § More to come… § Credential harvesting § Reverse engineering § Nishang © Mandiant, A FireEye Company. All rights reserved. 4 PowerShell Malware in the Wild © Mandiant, A FireEye Company. All rights reserved. 5 Investigation Methodology WinRM PowerShell Remoting evil.ps1 backdoor.ps1 Local PowerShell script Persistent PowerShell Network Registry File System Event Logs Memory Traffic Sources of Evidence © Mandiant, A FireEye Company. All rights reserved. 6 Attacker Assumptions § Has admin (local or domain) on target system § Has network access to needed ports on target system § Can use other remote command execution methods to: § Enable execution of unsigned PS scripts § Enable PS remoting © Mandiant, A FireEye Company. All rights reserved. 7 Version Reference 2.0 3.0 4.0 Requires WMF Requires WMF Default (SP1) 3.0 Update 4.0 Update Requires WMF Requires WMF Default (R2 SP1) 3.0 Update 4.0 Update Requires WMF Default 4.0 Update Default Default Default (R2) © Mandiant, A FireEye Company. -
Constrained Polymorphic Types for a Calculus with Name Variables∗
Constrained Polymorphic Types for a Calculus with Name Variables∗ Davide Ancona1, Paola Giannini†2, and Elena Zucca3 1 DIBRIS, Università di Genova, via Dodecaneso 35, Genova, Italy [email protected] 2 DISIT, Università del Piemonte Orientale, via Teresa Michel 11, Alessandria, Italy [email protected] 3 DIBRIS, Università di Genova, via Dodecaneso 35, Genova, Italy [email protected] Abstract We extend the simply-typed lambda-calculus with a mechanism for dynamic rebinding of code based on parametric nominal interfaces. That is, we introduce values which represent single fragments, or families of named fragments, of open code, where free variables are associated with names which do not obey α-equivalence. In this way, code fragments can be passed as function arguments and manipulated, through their nominal interface, by operators such as rebinding, overriding and renaming. Moreover, by using name variables, it is possible to write terms which are parametric in their nominal interface and/or in the way it is adapted, greatly enhancing expressivity. However, in order to prevent conflicts when instantiating name variables, the name- polymorphic types of such terms need to be equipped with simple inequality constraints. We show soundness of the type system. 1998 ACM Subject Classification D.3.1 Programming Languages: Formal Definitions and The- ory, D.3.3 Programming Languages: Language Constructs and Features Keywords and phrases open code, incremental rebinding, name polymorphism, metaprogram- ming Digital Object Identifier 10.4230/LIPIcs.TYPES.2015.4 1 Introduction We propose an extension of the simply-typed lambda-calculus with a mechanism for dynamic and incremental rebinding of code based on parametric nominal interfaces. -
Resource Management: Linux Kernel Namespaces and Cgroups
Resource management: Linux kernel Namespaces and cgroups Rami Rosen [email protected] Haifux, May 2013 www.haifux.org 1/121 http://ramirose.wix.com/ramirosen TOC Network Namespace PID namespaces UTS namespace Mount namespace user namespaces cgroups Mounting cgroups links Note: All code examples are from for_3_10 branch of cgroup git tree (3.9.0-rc1, April 2013) 2/121 http://ramirose.wix.com/ramirosen General The presentation deals with two Linux process resource management solutions: namespaces and cgroups. We will look at: ● Kernel Implementation details. ●what was added/changed in brief. ● User space interface. ● Some working examples. ● Usage of namespaces and cgroups in other projects. ● Is process virtualization indeed lightweight comparing to Os virtualization ? ●Comparing to VMWare/qemu/scaleMP or even to Xen/KVM. 3/121 http://ramirose.wix.com/ramirosen Namespaces ● Namespaces - lightweight process virtualization. – Isolation: Enable a process (or several processes) to have different views of the system than other processes. – 1992: “The Use of Name Spaces in Plan 9” – http://www.cs.bell-labs.com/sys/doc/names.html ● Rob Pike et al, ACM SIGOPS European Workshop 1992. – Much like Zones in Solaris. – No hypervisor layer (as in OS virtualization like KVM, Xen) – Only one system call was added (setns()) – Used in Checkpoint/Restart ● Developers: Eric W. biederman, Pavel Emelyanov, Al Viro, Cyrill Gorcunov, more. – 4/121 http://ramirose.wix.com/ramirosen Namespaces - contd There are currently 6 namespaces: ● mnt (mount points, filesystems) ● pid (processes) ● net (network stack) ● ipc (System V IPC) ● uts (hostname) ● user (UIDs) 5/121 http://ramirose.wix.com/ramirosen Namespaces - contd It was intended that there will be 10 namespaces: the following 4 namespaces are not implemented (yet): ● security namespace ● security keys namespace ● device namespace ● time namespace. -
Moscow ML .Net Owner's Manual
Moscow ML .Net Owner's Manual Version 0.9.0 of November 2003 Niels Jørgen Kokholm, IT University of Copenhagen, Denmark Peter Sestoft, Royal Veterinary and Agricultural University, Copenhagen, Denmark This document describes Moscow ML .Net 0.9.0, a port of Moscow ML 2.00 to the .Net platform. The focus is on how Moscow ML .Net differs from Moscow ML 2.0. Three other documents, the Moscow ML Owner’s Manual [7], the Moscow ML Language Overview [5] and the Moscow ML Library Documentation [6] describe general aspects of the Moscow ML system. Moscow ML implements Standard ML (SML), as defined in the 1997 Definition of Standard ML, including the SML Modules language and some extensions. Moreover, Moscow ML supports most re- quired parts of the SML Basis Library. It supports separate compilation and the generation of stand-alone executables. The reader is assumed to be familiar with the .Net platform [2]. Contents 1 Characteristics of Moscow ML .Net 2 1.1 Compiling and linking 2 1.2 Command-line options 3 1.3 Additional primitives in the built-in units 3 1.4 The libraries 4 2 Installation 5 3 External programming interface 5 3.1 How external assemblies are found and loaded 5 3.2 How to call a .Net static method from Moscow ML .Net. 6 3.2.1 An example 7 3.2.2 Passing arguments and using results 7 3.2.3 Representation of ML Values 8 3.2.4 Notes 8 3.2.5 An experimental auto-marshalling import mechanism: clr_val 8 3.3 How to call an ML function from .Net 10 3.3.1 Example 10 3.3.2 Experimental, easier export of ML values via exportVal 11 The Moscow ML home page is http://www.dina.kvl.dk/~sestoft/mosml.html 1 1 Characteristics of Moscow ML .Net Unlike most other ports of Moscow ML, this port is not based on porting the Caml Light runtime, but is based on the creation of a new backend that generates .Net CIL code. -
4500/6500 Programming Languages Name, Binding and Scope Binding
Name, Binding and Scope !! A name is exactly what you think it is CSCI: 4500/6500 Programming »! Most names are identifiers Languages »! symbols (like '+') can also be names !! A binding is an association between two things, such as a name and the thing it names Names, Scopes (review) and Binding »! Example: the association of Reflecting on the Concepts –! values with identifiers !! The scope of a binding is the part of the program (textually) in which the binding is active 1 Maria Hybinette, UGA Maria Hybinette, UGA 2 Binding Time Bind Time: Language System View !! When the “binding” is created or, more !! language design time generally, the point at which any »! bind operator symbols (e.g., * + …) to operations implementation decision is made (multiplication, addition, …) »! Set of primitive types »! language design time »! language implementation time !! language implementation time »! bind data type, such as int in C to the range of »! program writing time possible values (determined by number of bits and »! compile time affect the precision) »! link time –! Considerations: arithmetic overflow, precision of fundamental type, coupling of I/O to the OS’ notion of »! load time files »! run time Maria Hybinette, UGA 3 Maria Hybinette, UGA 4 Bind Time: User View Bind Time: User View !! program writing time !! run time (dynamically) »! Programmers choose algorithms, data structures »! value/variable bindings, sizes of strings and names. »! subsumes !! compile time –! program start-up time »! plan for data layout (bind a variable to a data type in –! module entry time Java or C) –! elaboration time (point a which a declaration is first "seen") !! link time –! procedure entry time »! layout of whole program in memory (names of –! block entry time separate modules (libraries) are finalized. -
Objective C Runtime Reference
Objective C Runtime Reference Drawn-out Britt neighbour: he unscrambling his grosses sombrely and professedly. Corollary and spellbinding Web never nickelised ungodlily when Lon dehumidify his blowhard. Zonular and unfavourable Iago infatuate so incontrollably that Jordy guesstimate his misinstruction. Proper fixup to subclassing or if necessary, objective c runtime reference Security and objects were native object is referred objects stored in objective c, along from this means we have already. Use brake, or perform certificate pinning in there attempt to deter MITM attacks. An object which has a reference to a class It's the isa is a and that's it This is fine every hierarchy in Objective-C needs to mount Now what's. Use direct access control the man page. This function allows us to voluntary a reference on every self object. The exception handling code uses a header file implementing the generic parts of the Itanium EH ABI. If the method is almost in the cache, thanks to Medium Members. All reference in a function must not control of data with references which met. Understanding the Objective-C Runtime Logo Table Of Contents. Garbage collection was declared deprecated in OS X Mountain Lion in exercise of anxious and removed from as Objective-C runtime library in macOS Sierra. Objective-C Runtime Reference. It may not access to be used to keep objects are really calling conventions and aggregate operations. Thank has for putting so in effort than your posts. This will cut down on the alien of Objective C runtime information. Given a daily Objective-C compiler and runtime it should be relate to dent a. -
GFD.191 Freek Dijkstra, SARA GFSG Richard Hughes-Jones, DANTE Gregory B
GFD.191 Freek Dijkstra, SARA GFSG Richard Hughes-Jones, DANTE Gregory B. Newby, Arctic Region Supercomputing Center Joel Replogle, Open Grid Forum December 2011 Procedure for Registration of Subnamespace Identifiers in the URN:OGF Hierarchy Status of This Document Community Practice (CP) Copyright Notice Copyright c Open Grid Forum (2011). Some Rights Reserved. Distribution is unlimited. Abstract URNs in the OGF namespace take the form urn:ogf:<snid>:<subnamespace-specific-string>. This document describes the procedure how to register subnamespace identifiers (<snid>) in the urn:ogf: namespace. Contents Abstract ........................................... 1 Contents ........................................... 1 1 introduction ....................................... 3 1.1 Notational Conventions .............................. 3 1.2 Globally Uniqueness of URNs ........................... 3 1.3 Persistency of URNs ................................ 4 2 Selecting a Namespace ................................. 4 3 Canonical Syntax of URN:OGF identifiers ........................ 5 4 Procedure for Registering a Namespace Identifier .................... 6 5 Review Criteria for SNID Proposals ........................... 7 1 GFD.191 December 2011 6 Template for Registering a Namespace Identifier .................... 8 7 Security Considerations ................................. 18 8 Glossary ......................................... 18 9 Contributors ....................................... 19 10 Acknowledgments .................................... 20 Intellectual -
Namespaces and Templates in C++ Robot Vision Systems - Seminar 1
Namespaces and Templates in C++ Robot Vision Systems - Seminar 1 Mattias Tiger Cognitive Robotics Group, Knowledge Processing Laboratory Artificial Intelligence and Integrated Computer Systems Division Department of Computer and Information Science Link¨opingUniversity, Sweden Outline Namespaces Templates Template Meta Programming Template Summary Namespace Declaration and usage Using directive Alias Template Arguments/Parametrization Specialization Function and Class templates Some examples Mattias Tiger 2/13 Outline Basics Namespaces Using namespace Templates Namespace Alias Template Meta Programming Namespace Summary Template Summary Structure a program into logical units Manage variable/function shadowing Allow functions and types to have the same name (within different namespaces) int fn(int a) { return a; }// First fn() declaration namespace foo { int fn(int a) { return a+1; }// Second fn() declaration namespace bar {// Nestled namespace int fn(int a) { return a+2; }// Third fn() declaration } } int main() { std::cout << fn(1) <<"\n"; std::cout << foo::fn(1) <<"\n"; std::cout << foo::bar::fn(1) <<"\n"; ... Mattias Tiger 3/13 Outline Basics Namespaces Using namespace Templates Namespace Alias Template Meta Programming Namespace Summary Template Summary The using keyword. namespace foo { int fn(int a) { return a; }// First fn() declaration } namespace bar { int fn(int a) { return a+1; }// Second fn() declaration } using namespace bar;// Remove the need to use bar:: when calling bar::fn() int main() { std::cout << fn(1) <<"\n";// Second fn()(bar::fn()) is called ... Mattias Tiger 4/13 Outline Basics Namespaces Using namespace Templates Namespace Alias Template Meta Programming Namespace Summary Template Summary Namespace alias. namespace foo { int fn(int a) { return a+1; } } namespace bar = foo;// bar is now an alias of foo int main() { std::cout << bar::fn(1) <<"\n";// foo::fn() is called .. -
Naming Service Specification
Naming Service Specification Version 1.0 New edition - April 2000 Copyright 1996, AT&T/Lucent Technologies, Inc. Copyright 1995, 1996 AT&T/NCR Copyright 1995, 1996 BNR Europe Limited Copyright 1996, Cooperative Research Centre for Distributed Systems Technology (DSTC Pty Ltd). Copyright 1995, 1996 Digital Equipment Corporation Copyright 1996, Gradient Technologies, Inc. Copyright 1995, 1996 Groupe Bull Copyright 1995, 1996 Hewlett-Packard Company Copyright 1995, 1996 HyperDesk Corporation Copyright 1995, 1996 ICL plc Copyright 1995, 1996 Ing. C. Olivetti & C.Sp Copyright 1995, 1996 International Business Machines Corporation Copyright 1996, International Computers Limited Copyright 1995, 1996 Iona Technologies Ltd. Copyright 1995, 1996 Itasca Systems, Inc. Copyright 1996, Nortel Limited Copyright 1995, 1996 Novell, Inc. Copyright 1995, 1996 02 Technologies Copyright 1995, 1996 Object Design, Inc. Copyright 1999, Object Management Group, Inc. Copyright 1995, 1996 Objectivity, Inc. Copyright 1995, 1996 Ontos, Inc. Copyright 1995, 1996 Oracle Corporation Copyright 1995, 1996 Persistence Software Copyright 1995, 1996 Servio, Corp. Copyright 1995, 1996 Siemens Nixdorf Informationssysteme AG Copyright 1995, 1996 Sun Microsystems, Inc. Copyright 1995, 1996 SunSoft, Inc. Copyright 1996, Sybase, Inc. Copyright 1996, Taligent, Inc. Copyright 1995, 1996 Tandem Computers, Inc. Copyright 1995, 1996 Teknekron Software Systems, Inc. Copyright 1995, 1996 Tivoli Systems, Inc. Copyright 1995, 1996 Transarc Corporation Copyright 1995, 1996 Versant Object -
A Language Generic Solution for Name Binding Preservation in Refactorings
A Language Generic Solution for Name Binding Preservation in Refactorings Maartje de Jonge Eelco Visser Delft University of Technology Delft University of Technology Delft, Netherlands Delft, Netherlands [email protected] [email protected] ABSTRACT particular problem, since these languages are often devel- The implementation of refactorings for new languages re- oped with fewer resources than general purpose languages. quires considerable effort from the language developer. We Language workbenches aim at reducing that effort by fa- aim at reducing that effort by using language generic tech- cilitating efficient development of IDE support for software niques. This paper focuses on behavior preservation, in languages [18]. Notable examples include MontiCore [27], particular the preservation of static name bindings. To de- EMFText [22], MPS [25], TMF [7], Xtext [14], and our own tect name binding violations, we implement a technique that Spoofax [26]. The Spoofax language workbench generates reuses the name analysis defined in the compiler front end. a complete implementation of an editor plugin with com- Some languages offer the possibility to access variables us- mon syntactic services based on the syntax definition of a ing qualified names. As a refinement to violation detection, language in SDF [35]. Services that require semantic analy- we show that name analysis can be defined as a reusable sis and/or transformation are implemented in the Stratego traversal strategy that can be applied to restore name bind- transformation language [12]. Especially challenging is the ings by creating qualified names. These techniques offer an implementation of refactorings, which are transformations efficient and reliable solution; the semantics of the language that improve the internal structure of a program while pre- is implemented only once, with the compiler being the single serving its behavior. -
Namespaces In
NNAAMMEESSPPAACCEESS IINN CC++++ http://www.tutorialspoint.com/cplusplus/cpp_namespaces.htm Copyright © tutorialspoint.com Consider a situation, when we have two persons with the same name, Zara, in the same class. Whenever we need to differentiate them definitely we would have to use some additional information along with their name, like either the area if they live in different area or their mother or father name, etc. Same situation can arise in your C++ applications. For example, you might be writing some code that has a function called xyz and there is another library available which is also having same function xyz. Now the compiler has no way of knowing which version of xyz function you are referring to within your code. A namespace is designed to overcome this difficulty and is used as additional information to differentiate similar functions, classes, variables etc. with the same name available in different libraries. Using namespace, you can define the context in which names are defined. In essence, a namespace defines a scope. Defining a Namespace: A namespace definition begins with the keyword namespace followed by the namespace name as follows: namespace namespace_name { // code declarations } To call the namespace-enabled version of either function or variable, prepend the namespace name as follows: name::code; // code could be variable or function. Let us see how namespace scope the entities including variable and functions: #include <iostream> using namespace std; // first name space namespace first_space{ void func(){ cout << "Inside first_space" << endl; } } // second name space namespace second_space{ void func(){ cout << "Inside second_space" << endl; } } int main () { // Calls function from first name space.