Patent classifications
G06F8/41
Dynamic cloud anti-pattern detection for a modernization assessment service
Techniques are described for enabling an application modernization system to efficiently identify various types of software development “anti-patterns” (including cloud anti-patterns) associated with software applications. An anti-pattern is broadly any characteristic of a software application or system that represents an undesirable or suboptimal solution to a problem within a given software design context. Depending on the particular software design context, examples of possible anti-patterns and cloud anti-patterns can include the use of insecure network protocols, an application's reliance on local file system access, the use of a deprecated or outdated class, function, or library, etc. An application modernization system described herein includes a modernization assessment client application that identifies the presence of anti-patterns in users' software applications using a collection of anti-pattern definitions (e.g., defined based on an anti-pattern definition syntax) obtained from an application modernization service of a cloud provider network.
SYSTEM FOR REPRESENTING INSURANCE PRODUCTS AS GRAPHS
A system for representing insurance products as directed graphs and transforms the directed graphs into graph object artifacts for execution. The system includes a compiler, an execution engine and a web-based runtime environment. The compiler transforms source code defining an insurance product as a directed graph into a plurality of nodes, where each node represents one of a computation and an input, and outputs a graph object artifact. The execution engine has an execution model derived from the graph object artifact that is loaded into memory and an application program interface that provides an interface to the web-based runtime environment. The web-based runtime environment provides a layer of abstraction between the execution engine and external services or systems.
Efficient semantic analysis of program code
Provided are systems and methods of a compiler that efficiently processes semantic analysis. For example, the compiler may perform semantic analysis on as much of the source code as possible during compile time. For any instructions, such as dynamic expressions, that are not known at compile time, the compiler may encode semantic bytecode for performing the semantic checks on such dynamic expressions, and their dependent expressions, during execution/runtime of the program. In one example, the method may include compiling source code of a program into bytecode, identifying, during the compiling, a dynamic expression that includes one or more dependent static expressions within the source code, generating semantic bytecode for semantic analysis of the one or more dependent static expressions of the dynamic expression, and adding the semantic bytecode to the bytecode of the program.
Automatically deploying artifacts
A method and apparatus for automatically deploying artifacts are disclosed. In one embodiment, the method comprises generating a trusted configuration artifact with a forward immutable continuous integration (CI) implemented as a build pipeline; accessing, by an orchestration system, the trusted configuration artifact from the IAC repository; and automatically deploying the configuration to change a state of the cluster, according to an orchestration type associated with the trusted configuration artifact, including determining the orchestration type.
Methods, blockchain nodes, and storage media for deploying smart contract
A computer-implemented method, non-transitory, computer-readable medium, and computer-implemented system are provided for deploying a smart contract in a blockchain network. The computer-implemented method includes: receiving, by a blockchain node in a blockchain network, a transaction for creating a smart contract, wherein the transaction comprises machine codes of the smart contract, and the machine codes of the smart contract are obtained by a compilation service provider performing Ahead of Time (AoT) compilation on bytecodes of the smart contract; determining, by the blockchain node, that the machine codes of the smart contract are obtained by a trusted compilation service provider; and in response to determining that the machine codes of the smart contract are obtained by the trusted compilation service provider, completing, by the blockchain node, a deployment of the smart contract.
Usage-based software library decomposition
Performing usage-based software library decomposition is disclosed herein. In some examples, a processor device generates a first library graph representing a first software library including multiple functions. The first library graph comprises a plurality of nodes that each correspond to a function of the first software library. The processor device identifies a function within the first software library (“invoked function”) that is directly invoked by an application that depends on the first software library, then generates a call graph including nodes within the first library graph (“dependency nodes”) corresponding to either the invoked function or another function invoked by the invoked function during application execution. Using the call graph, the processor device generates a second software library including only functions of the first software library corresponding to dependency nodes of the call graph.
MONITORING STACK MEMORY USAGE TO OPTIMIZE PROGRAMS
A computer system determines stack usage. An intercept function is executed to store a stack marker in a stack, wherein the intercept function is invoked when a program enters or exits each function of a plurality of functions of the program. A plurality of stack markers are identified in the stack and a memory address is determined for each stack marker during execution of the program to obtain a plurality of memory addresses. The plurality of memory addresses are analyzed to identify a particular memory address associated with a greatest stack depth. A stack usage of the program is determined based on the greatest stack depth. Embodiments of the present invention further include a method and program product for determining stack usage in substantially the same manner described above.
Hot reloading a running application with an unsaved source code change
Hot reloading a running application with an unsaved source code change. A code change to a source code of a running software application that is associated with a project type is identified. The code change is stored within an in-memory editor buffer, and is uncommitted to any source code file. It is determined that the code change can be applied to the running software application using hot reload. Hot reload agent(s) associated with the project type are identified. Using the hot reload agent(s), the code change is communicated to an application runtime associated with the running software application. At least one process of the running software application invokes a new compiled code entity corresponding to the code change.
Systems and methods for performing concurrency analysis in simulation environments
Systems and methods analyze an executable simulation model to identify existing concurrency, determine opportunities for increasing concurrency, and develop proposed modifications for realizing the opportunities for increased concurrency. The systems and methods may label locations at the simulation model where concurrency exists, and provide information regarding the proposed modifications to increase the model's concurrency. The systems and methods may modify the simulation model if the additional concurrency is accepted. The systems and methods may operate within a higher-level programming language, and may develop the proposed modifications without lowering or translating the simulation model to a lower abstraction level. The systems and methods may also undo a modification, rolling the simulation model back to a prior design state. Accepting the proposed modifications may cause the simulation models to execute more efficiently, e.g., faster.
Implementation for a heterogeneous device
Implementing a design for a heterogeneous device can include mapping, using computer hardware, a plurality of applications of a design for a device to a plurality of domains of the device, wherein each domain includes a different compute unit, performing, using the computer hardware, validity checking on the plurality of applications, detecting, using the computer hardware, a conflict between two or more of the plurality of applications from the validity checking, and, in response to the detecting, generating a notification of the conflict using the computer hardware. Operations such as automatically generating a boot image, debugging, and/or performing system level performance analysis may also be performed.