CN117693735A - 在运行时实现对能可加载类型的源代码做出的改变 - Google Patents

在运行时实现对能可加载类型的源代码做出的改变 Download PDF

Info

Publication number
CN117693735A
CN117693735A CN202280048728.4A CN202280048728A CN117693735A CN 117693735 A CN117693735 A CN 117693735A CN 202280048728 A CN202280048728 A CN 202280048728A CN 117693735 A CN117693735 A CN 117693735A
Authority
CN
China
Prior art keywords
source code
type
runtime
reloadable
change
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280048728.4A
Other languages
English (en)
Inventor
T·马托塞克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN117693735A publication Critical patent/CN117693735A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)

Abstract

用于实现在运行时对程序的源代码做出的改变的系统和方法被提供。具体地,计算设备可以在运行时环境中执行源代码并且检测运行时环境中在运行时对源代码做出的改变。响应于检测改变,计算设备可以确定改变是否是对源代码中被标识为可重加载的类型做出的。响应于改变是对源代码中标识为被可重加载的类型做出的确定,计算设备可以创建该类型的新版本并且使用该类型的新版本在运行时执行对源代码的改变的实现。

Description

在运行时实现对能可加载类型的源代码做出的改变
背景技术
各种类型的软件开发工具允许软件开发者在调试会话期间程序处于中断模式时对应用的源代码做出改变。如果阻止源代码的正确操作的任何缺陷或问题在调试会话期间被发现,软件开发者可以对源代码做出改变来解决它们。在某些情况下,改变可以在没有附接的调试器的情况下被做出。然而,另一种场景是当调试器被附接时但是在改变被做出时程序可能不以中断模式被暂停。在这样的情况下,一旦对源代码的改变被接收,则这些改变可以被原位(in-place)应用于一类型的源代码。换言之,当改变被应用于该类型的源代码时,源代码将被重写。一旦改变已经被做出并且软件开发者恢复了应用,该类型的运行时表示及其已有实例就会被更新以反映改变。这允许软件开发者可以对源代码做出改变,而无需停止、重编译整个程序并且重新开始调试会话。然而,由于更新类型的运行时表示及其实例的固有复杂性,允许的编辑集被限制。
正是针对这些和其他一般考虑,本文所公开的方面被做出。另外,尽管相对具体的问题可以被讨论,但是应当理解,示例不应该限于解决背景技术中或本公开中其他地方所标识的具体问题。
发明内容
本公开涉及热重载,其通过允许开发者在不停止、重载和重新开启程序的情况下修改程序来减少开发者开发周期的内循环。更具体地,本公开教导了在类型(例如,类)已经改变的情况下热重载的能力。为了实现这个想法,UI框架和.NET运行时两者都可以被更新。
根据本公开的至少一个示例,一种用于实现在运行时对程序的源代码做出的改变的方法被公开。该方法可以包括在运行时环境中执行源代码,检测运行时环境中在运行时对源代码做出的改变,确定改变是否是对源代码中被标识为可重加载的类型做出,响应于改变是对源代码中被标识为可重加载的类型做出的确定,创建该类型的新版本,以及使用该类型的新版本在运行时执行对源代码的改变的实现。
根据本公开的至少一个示例,一种用于实现在运行时对程序的源代码做出的改变的计算设备被公开。该计算设备可以包括处理器和具其上存储有多个指令的存储器,该多个指令当由该处理器执行时使该计算设备:在运行时环境中执行源代码,检测在运行时环境中运行时对源代码做出的改变,确定改变是否是对源代码中标识为可重加载的类型做出,响应于改变是对源代码中标识为可重加载的类型做出的确定,创建该类型的新版本,以及使用该类型的新版本在运行时执行对源代码的改变的实现。
根据本公开的至少一个示例,一种存储用于实现在运行时对程序的源代码做出的改变的指令的非暂态计算机可读介质被公开。该指令在由计算设备的一个或多个处理器执行时使该计算设备在运行时环境中执行源代码,检测运行时环境中在运行时对源代码做出的改变,确定改变是否是对源代码中被标识为可重加载的类型做出,响应于改变是对源代码中被标识为可重加载的类型做出的确定,创建该类型的新版本,以及使用该类型的新版本在运行时执行对源代码的改变的实现。
上述一个或多个方面中的任一个与一个或多个方面中的任何其他方面组合。如本文所述的一个或多个方面中的任何一个。
该发明内容部分被提供以以简化的形式介绍一些概念的选择,这将在下面的具体实施方式中进一步描述。本发明内容部分并不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在被用于限制所要求保护的主题的范围。示例的附加方面、特征和/或优点将部分地在下面的描述中被阐述,并且部分地将从描述中变得明显,或者可以通过本公开的实践而获悉。
附图说明
非限制性和非穷举性示例参考以下附图被描述。
图1描绘了根据本公开的示例的针对软件开发系统的细节;
图2和图3描绘了根据本公开的示例的针对实现在运行时对可重加载类型的源代码做出的改变的方法;
图4描绘了本公开的方面可以利用其被实践的计算设备的物理组件(例如,硬件)的框图;
图5A示出了本公开的方面可以利用其被实践的计算设备的第一示例;
图5B示出了本公开的方面可以利用其被实践的计算设备的第二示例;以及
图6示出了根据本公开的示例的用于处理数据的系统的架构的至少一个方面。
具体实施方式
在下面的具体实施方式中,参考了形成其一部分的附图,并且在附图中以图示的方式示出了具体方面或示例。在不脱离本公开的情况下,这些方面可以被组合,其他方面可以被利用,并且结构改变可以被做出。方面可以被实践为方法、系统或设备。因此,方面可以采取硬件实现、完全软件实现、或者组合软件和硬件方面的实现的形式。因此,下面的具体实施方式不应被视为限制意义,并且本公开的范围由所附权利要求及其等同物限定。
根据本公开的示例,软件开发系统允许用户(例如,开发者、程序员、设计人员和/或编码员)使用应用框架来开发或修改程序,该应用框架包括实现应用软件的标准结构的软件框架。本公开的软件开发系统被配置为在程序正在运行的同时实现对程序的源代码做出的修改。具体来说,软件开发系统允许用户在运行时修改源代码中的特定类型,而无需停止、重新加载和重新开始整个程序。
为此,特定类型可以在源代码中或在数据库中被标记为可重加载。在一些方面,数据库的库可以与应用框架相关联。当对可重加载类型的源代码做出改变时,这些改变可能引起创建可重加载类型的新版本,而不是原位应用改变(例如,原位更新类型),并且可重加载类型的新版本可以替换该类型的先前版本。为此,例如,该应用框架可以将源代码中的可重加载类型的先前版本的运行时表示和已有实例替换为可重加载类型的新版本。通过创建反映对源代码做出的改变的类型的新版本,用户可以能够在运行时期间对源代码做出改变,而不由原位更新的限制的约束。
图1描绘了根据本公开的示例的用于实现用户110在运行时对源代码做出的改变的软件开发系统100。为此,软件开发系统100包括与用户110相关联的计算设备120以及经由网络150通信地耦合到计算设备120的一个或多个远程设备,诸如服务器140。网络150可以包括任何类型的计算网络,包括但不限于有线或无线局域网(LAN)、有线或无线广域网(WAN)和/或互联网。
计算设备120包括在具有处理器122、存储器124和通信接口126的计算设备120上执行的集成开发环境(IDE)130。IDE 130可以允许用户110在计算机系统中设计、编码、编译、测试、运行、编辑、调试或构建软件程序、程序集、web站点、web应用和web服务。软件程序可以包括以一种或多种源代码语言(例如,Visual Basic、Visual J#、C++、C#、J#、JavaScript、APL、COBOL、Pascal、Eiffel、Haskell、ML、Oberon、Perl、Python、Scheme、Smalltalk等)创建的源代码。IDE 130可以提供本机代码开发环境或者可以提供在虚拟机上运行的管理的代码环境。例如,IDE 130可以提供使用.NET框架的受管理的代码开发环境。在说明性实施例中,IDE 130可以被配置为开发用于与例如.NET框架和/或UI框架一起使用的应用。为了在运行时实现对可重加载类型的源代码所做的改变,UI框架和.NET运行时两者都可以被更新。
例如,.NET框架被更新为具有将特定类型指定为可重加载的属性和将特定类型指定为更新通知的接收方的属性。更新通知包括关于已经被更新的类型的信息。应当理解,该属性是可以被放置在任何类型上的标记。
UI框架定义了表示UI元素的特定类型。UI框架能够重加载的那些特定类型由上述属性标记。UI框架实现了一种旨在从运行时接收更新通知的类型。在这样的通知的获取后,UI框架将其数据结构中的所有更新的可重加载类型替换为包括更新的对应的新版本。应当理解,可重加载类型的使用模式允许类型被替换为它们的新版本。换言之,引用这些类型的用户代码将间接引用它们(例如,经由基本类型、接口或动态分派),而不是直接引用该类型的特定版本。
为此,IDE 130还包括源代码分析器132、可重加载类型标识器134和框架库更新器136。源代码分析器132被配置为分析IDE 130中加载的程序的源代码以检测由用户110在运行时所做的改变。在说明性方面,用户110可以在程序正在运行的同时使用IDE 130来对源代码做出改变。这些改变可以在运行时被实现,而无需停止、重加载/重编译和重新开始整个程序,这取决于指示已经对其做出改变的源代码的类型的元数据。如上所述以及下面进一步描述的,某些类型的源代码能够被重新加载,并且因此可以在程序正在运行的同时被任意更新。与原位被更新的那些类型相比,源代码的这样的可重加载类型允许用户110在运行时在更少的限制的情况下来编辑程序。
可重加载类型标识器134被配置为确定对源代码所做的改变是否是对一种或多种可重加载类型的源代码做出的。例如,用户110可以通过在开发过程期间将某些类型注释为可重加载来创建一个或多个可重加载类型。备选地地或另外地,框架可以包括能够被重加载的预定义类型的可重加载类型数据库。例如,应用框架的开发者可以创建一种或多种类型,将某些类型标识为可重加载的,并且将所标识的可重加载类型存储在可重加载类型数据库中。这样的可重加载型数据库可以从另一计算设备(例如,服务器140)被接收。服务器140可以是一台或多台云服务器。
框架库更新器136被配置为向另一个设备(例如,服务器140)发出包括元数据的通知,指示可重加载类型的源代码中的改变。对可重加载类型的源代码所做的改变生成可重加载类型的新版本,其被包括在被发送给框架的元数据中。在一些方面,通知被发送给服务器140,并且框架可以经由服务器140的框架库更新器142被更新。可重加载类型的新版本被存储在框架库中(例如,可重加载类型数据库128和/或框架库144)。作为响应,框架创建具有自己的运行时表示的新类型(例如,该类型的新版本)。当UI框架被通知可重加载类型的更新时,UI框架将其对该类型的较旧版本的所有引用替换为新版本。当UI被刷新时,UI框架标识实现特定UI元素的类型并且从其数据结构中获取该类型。这将是该类型的最新版本。后续,UI框架执行呈现元素的UI的类型中的代码。这允许改变在程序正在运行的同时立即被实现。
可以使用可重加载类型的框架的一个示例是Razor。Razor是一个被用于创建web应用和/或web页面的框架。Razor使程序员能够使用HTML构造工作流。在下面示出的示例中,Microsoft.AspNetCore.Mvc.RazorPages.Page是表示web页面的用户定义类型的基本类型。这种类型通常是从.razor文件生成的,该文件以Razor语言描述页面。这被自动转换为C#为如下所示的代码:
当用户110更新.razor文件(例如改变页面的标题)时,上述类型的源对应地自动被更新。在页面被发送给浏览器之前,Razor评论在服务器140上被处理。为了允许这些更新在web应用正在运行的同时立即生效,Razor框架将基本类型Microsoft.AspNetCore.Mvc.RazorPages.Page标记为可重加载,使得Page的所有子类型都变得可重加载。这消除了终止、重编译和再次执行应用的需要,并避免了对可以被原位执行的更新的任何限制。
可重加载类型的另一个示例是模型-视图-更新(MVU)模式。Comet UI框架是使用MVU模式被构建的。它提供了一个如下View(视图)类,应用UI视图从该类得出:
Comet框架将View类型标记为“可重加载”以允许用户110在应用正在运行的同时更新视图。
现在参考图2和图3,根据本公开的示例的用于在程序正在运行的同时实现对程序的源代码做出的改变的方法200被提供。针对方法200的步骤的一般顺序在图2和图3中被示出。一般而言,方法200在204处开始并在254处结束。方法200可以包括更多或更少的步骤,或者可以以与图2和图3所示的那些不同地布置步骤的顺序。在说明性方面,方法200由用户110的计算设备(例如,用户设备120)执行。
具体地,在一些方面,方法200可以由在用户设备120上执行的集成开发环境(IDE)(例如,130)来执行。例如,计算设备120可以是但不限于计算机、笔记本电脑、膝上型电脑、移动设备、智能手机、平板电脑、可穿戴设备或能够与服务器140通信的任何其他合适的计算设备。例如,服务器140可以是能够与计算设备120通信的任何合适的计算设备。方法200可以被执行为由计算机系统执行并且被编码或被存储在计算机可读介质上的计算机可执行指令集合。此外,方法200可以由与处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、片上系统(SOC)或其他硬件设备相关联的门或电路来执行。在下文中,方法200将参考结合图1描述的系统、组件、模块、软件、数据结构、用户接口等被解释。
方法200开始于202,其中流可以进行到206。在206处,计算设备120在集成开发环境(IDE)(例如,124)中获得或构造程序的源代码。在一些方面,源代码可以在软件框架(例如,.NET框架)内被构造。例如,源代码可以由用户110提供。备选地,源代码可以从服务器140接收或获得。一旦源代码被获得,源代码就被加载到IDE 124中。例如,IDE 124可以是在计算设备120上执行的Visual/>Eclipse、/>Office或任何其他IDE。
随后,在210处,源代码在由IDE 124提供的运行时环境中被执行。在一些方面,计算设备120可以分析源代码以标识被标识为在运行时期间可重加载的一种或多种类型。例如,用户可以创建一种或多种类型并将那些类型注释为在开发过程期间可重加载。备选地或另外地,软件框架可以包括能够在运行时被重加载的可重加载类型库或预定义类型的数据库。可重加载类型数据库可以从另一计算设备(例如,服务器140)接收。备选地或另外地,软件框架的开发者可以创建一种或多种类型,将某些类型标识为可重加载的,并将所标识的可重加载类型存储在可重加载类型数据库中。
在218处,在程序正在运行时环境内运行的同时,计算设备120检测由用户110对源代码做出的一个或多个改变。当一个或多个改变被检测到时,计算设备120确定该一个或多个改变是否是对可重加载类型的源代码做出的,如操作222中所描述的。如上所述,与软件框架相关联的可重加载类型数据库128可以包括能够在运行时被重加载的预定义类型。在这样的方面中,计算设备120部分地基于可重加载类型数据库128来确定一个或多个改变是否是对可重加载类型的源代码做出的。另外或备选地,源代码中的特定类型可以在运行时之前和/或运行时期间由用户110标识和注释为源代码的可重加载类型。另外或备选地,用户110可以创建新类型并将新类型注释为可重加载。随后,方法200进行到图3中的操作226,如由图2和图3中的字母数字字符A所示。
在226处,如果计算设备120确定改变不是在源代码的可重加载类型中,则方法200进行到操作230以原位应用对不可重加载类型的源代码所做的改变。换言之,不可重加载类型的运行时表示及其所有已有实例都被更新以反映改变。然而,如上所述,由于更新类型的运行时表示及其实例的的固有复杂性,受允许的原位编辑的集合是受限的。方法200然后向前跳到操作250以继续在运行时环境中利用更新的源代码执行程序。
返回参考操作226,如果计算设备120确定改变在源代码的可重加载类型中被做出,则方法200进行到操作234。在234处,计算设备120基于改变创建新类型(例如,可重加载类型的版本)。
随后,在238处,计算设备120向软件框架通知关于需要由软件框架重加载的类型的新版本的信息(例如,元数据)。响应于接收到通知,在242处,软件框架将重要状态(例如,成员变量)(如果有的话)从可重加载类型的先前实例迁移到可重加载类型的新版本。
在246处,计算设备120将源代码中的可重加载类型的先前版本的运行时表示和已有实例替换为可重加载类型的新版本。
随后,在250处,计算设备120在程序正在运行的同时实现改变之后继续在运行时环境中执行程序。这允许用户110在运行时对源代码做出改变,而无需停止、重加载和重新开始整个程序。
图4至图6和相关联的描述提供了本公开的方面可以在其中被实践的各种操作环境的讨论。然而,关于图4至6示出和讨论的设备和系统是出于示例和说明的目的,并且不限制可以被利用用于实践本文描述的本公开的方面的大量计算设备配置。
图4是示出本公开的方面可以利用其被实践的计算设备400的物理组件(例如,硬件)的框图。下面描述的计算设备组件可以适合于上面描述的计算设备。例如,计算设备400可以表示图1的计算设备120。在基本配置中,计算设备400可以包括至少一个处理单元402和系统存储器404。取决于计算设备的配置和类型,系统存储器404可以包括但不限于易失性存储(例如,随机存取存储器)、非易失性存储(例如,只读存储器)、闪存、或者这样的存储器的任何组合。
系统存储器404可以包括操作系统405和适合于执行本文所公开的各个方面的一个或多个程序模块406。例如,操作系统405可以适合于控制计算设备400的操作。此外,本公开的方面可以结合图形库、其他操作系统或任何其他应用程序来实践,并且不限于任何特定应用或系统。该基本配置在图4中由虚线408内的那些组件示出。计算设备400可以具有附加特征或功能。例如,计算设备400还可以包括附加数据存储设备(可移除和/或不可移除),诸如例如磁盘、光盘或磁带。这样的附加存储在图4中由可移除存储设备409和不可移除存储设备410示出。
如上所述,若干个程序模块和数据文件可以被存储在系统存储器404中。当在至少一个处理单元402上执行的同时,程序模块406可以执行包括但不限于一个或多个方面的过程,如本文所描述的。应用420包括源代码分析器423、可重加载类型标识器424、框架库更新器425,如关于图1更详细地描述的。可以根据本公开的方面被使用的其他程序模块可以包括电子邮件和联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘图或计算机辅助应用程序等,和/或由本文描述的系统支持的一个或多个组件。
此外,本公开的方面可以在包括分立电子元件、包含逻辑门的封装或集成电子芯片、利用微处理器的电路的电子电路中或者在包含电子元件或微处理器的单个芯片上被实践。例如,本公开的方面可以经由片上系统(SOC)被实践,其中图4中所示的组件中的每个或许多组件可以被集成到单个集成电路上。这样的SOC设备可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元和各种应用功能,所有这些都作为单个集成电路被集成(或“烧录”)到芯片基板上。当经由SOC操作时,本文描述的功能相对于客户端切换协议的能力可以经由与计算设备400的其他组件集成在单个集成电路(芯片)上的专用逻辑被操作。本公开的方面还可以使用能够执行逻辑运算(诸如例如AND、OR和NOT)的其他技术被实践,包括但不限于机械、光学、流体和量子技术。另外,本公开的方面可以在通用计算机内或者在任何其他电路或系统中被实践。
计算设备400还可以具有一个或多个输入设备412,诸如键盘、鼠标、笔、声音或语音输入设备、触摸或滑动输入设备等。(多个)输出设备414A(诸如显示器、扬声器、打印机等)也可以被包括。对应于虚拟显示器的输出414B也可以被包括。上述设备是示例并且其他设备可以被使用。计算设备400可以包括允许与其他计算设备450通信的一个或多个通信连接416。合适的通信连接416的示例包括但不限于射频(RF)发送器、接收器和/或收发器电路系统;通用串行总线(USB)、并行端口和/或串行端口。
如本文所使用的术语计算机可读介质可以包括计算机存储介质。计算机存储介质可以包括以用于信息的存储的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质,诸如计算机可读指令、数据结构或程序模块。系统存储器404、可移除存储设备409和不可移除存储设备410都是计算机存储介质示例(例如,存储器存储)。计算机存储介质可以包括RAM、ROM、电可擦除只读存储器(EEPROM)、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、盒式磁带、磁带、磁盘存储或其他磁存储设备,或可以被用于存储信息并且可以由计算设备400访问的任何其他制品。任何这样的计算机存储介质可以是计算设备400的一部分。计算机存储介质不包括载波或其他传播或调制的数据信号。
通信介质可以由计算机可读指令、数据结构、程序模块或调制数据信号中的其他数据(诸如载波或其他传送机制)来体现,并且包括任何信息传递介质。术语“调制数据信号”可以描述具有以对信号中的信息进行编码的方式设置或改变的一个或多个特性的信号。作为示例而非限制,通信介质可以包括有线介质(诸如有线网络或直接有线连接),以及无线介质(诸如声学、射频(RF)、红外和其他无线介质)。
图5A和图5B示出了本公开的方面利用其可以被实践的计算设备或移动计算设备500,例如移动电话、智能电话、可穿戴计算机(诸如智能手表)、平板计算机、膝上型计算机等。参考图5A,用于实现这些方面的移动计算设备500的一个方面被示出。在基本配置中,移动计算设备500是具有输入元件和输出元件两者的手持计算机。移动计算设备500通常包括显示器505和一个或多个输入按钮509/510,输入按钮509/510允许用户将信息输入到移动计算设备500中。移动计算设备500的显示器505还可以用作输入设备(例如,触摸屏显示器)。如果包括的话,可选的侧面输入元件515允许另外的用户输入。侧面输入元件515可以是旋转开关、按钮或任何其他类型的手动输入元件。在备选方面,移动计算设备500可以并入更多或更少的输入元件。例如,在一些方面,显示器505可以不是触摸屏。在又一个备选方面,移动计算设备500是便携式电话系统,诸如蜂窝电话。移动计算设备500还可以包括可选的键盘535。可选的键盘535可以是物理键盘或者在触摸屏显示器上生成的“软”键盘。在各个方面,输出元件包括用于显示图形用户接口(GUI)的显示器505、视觉指示器531(例如,发光二极管)和/或音频换能器525(例如,扬声器)。在一些方面,移动计算设备500并入用于向用户提供触觉反馈的振动换能器。在又一方面,移动计算设备500并入用于向外部源发送信号或从外部源接收信号的输入和/或输出端口530,诸如音频输入(例如,麦克风插孔)、音频输出(例如,耳机插孔)和视频输出(例如,HDMI端口)。
图5B是示出计算设备、服务器或移动计算设备的一个方面的架构的框图。也就是说,移动计算设备500可以并入系统(902)(例如,架构)来实现一些方面。系统502可以被实现为能够运行一个或多个应用(例如,浏览器、电子邮件、日历、联系人管理器、消息收发客户端、游戏和媒体客户端/播放器)的“智能电话”。在一些方面,系统502被集成为计算设备,诸如集成个人数字助理(PDA)和无线电话。
一个或多个应用程序566可以被加载到存储器562中并在操作系统564上运行或与操作系统564相关联地运行。应用程序的示例包括电话拨号程序、电子邮件程序、个人信息管理(PIM)程序、文字处理程序、电子表格程序、互联网浏览器程序、消息收发程序和/或由本文描述的系统支持的一个或多个组件。系统502还包括存储器562内的非易失性存储区域568。非易失性存储区域568可以被使用以存储在系统502断电的情况下不应丢失的持久信息。应用程序566可以使用信息并将其存储在非易失性存储区域568中,诸如电子邮件或由电子邮件应用使用的其他消息等。同步应用(未示出)也驻留在系统502上,并且被编程为与驻留在主计算机上的对应的同步应用交互,以使非易失性存储区域568中存储的信息与主机计算机中存储的对应的信息保持同步。如应当理解的是,其他应用可以被加载到存储器562中并且在本文描述的移动计算设备500上运行(例如,源代码分析器423、可重加载类型标识器424、框架库更新器425等)。
系统502具有电源570,其可以被实现为一个或多个电池。电源570还可以包括外部电源,诸如AC适配器或对电池进行补充或再充电的供电的底座。
系统502还可以包括执行发射和接收射频通信的功能的无线电接口层572。无线电接口层572促进系统502与“外部世界”之间经由通信运营方或服务提供方的无线连接性。去往和来自无线电接口层572的传输是在操作系统564的控制下进行的。换言之,由无线电接口层572接收的通信可以经由操作系统564被传播到应用程序566,反之亦然。
视觉指示器520可被使用以提供视觉通知,和/或音频接口574可以被用于经由音频换能器525产生可听通知。在所示配置中,视觉指示器520是发光二极管(LED)并且音频换能器525是扬声器。这些设备可以直接耦合到电源570,使得当被激活时,即使处理器560/961和其他组件可能会关闭以节省电池电量,它们也会在由通知机制规定的持续时间内保持打开。LED可以被编程为无限期地保持打开,直到用户采取行动来指示设备的开机状态为止。音频接口574被使用以向用户提供可听信号并从用户接收可听信号。例如,除了耦合到音频换能器525之外,音频接口574还可以耦合到麦克风以接收可听输入,诸如以促进电话交谈。根据本公开的方面,麦克风还可以用作音频传感器以促进通知的控制,如下文将描述的。系统502还可以包括视频接口576,视频接口576支持机载相机的操作以记录静止图像、视频流等。
实现系统502的移动计算设备500可以具有附加特征或功能。例如,移动计算设备500还可以包括附加数据存储设备(可移除和/或不可移除),诸如磁盘、光盘或磁带。这样的附加存储在图5B中由非易失性存储区域568示出。
由移动计算设备500生成或捕获并经由系统502存储的数据/信息可以本地存储在移动计算设备500上,如上所述,或者数据可以存储在可以由设备经由无线电接口层572或经由移动计算设备500和与移动计算设备500相关联的分开的计算设备(例如,分布式计算网络(例如互联网)中的服务器计算机)之间的有线连接来访问的任何数目的存储介质上。如应当理解的,这样的数据/信息可以经由移动计算设备500经由无线电接口层572或者经由分布式计算网络来访问。类似地,这样的数据/信息可以根据公知的数据/信息传送和存储部件(包括电子邮件和协作数据/信息共享系统)被容易地在计算设备之间传送以用于存储和使用。
图6示出了用于处理在计算系统处从远程源(诸如个人计算机604、平板计算设备606或移动计算设备608)接收的数据的系统的架构的一方面,如上所述。在服务器设备602处显示的内容可以存储在不同的通信信道或其他存储类型中。例如,计算设备604、606、608可以表示图1的计算设备120,并且服务器设备602可以表示图1的服务器140。
在一些方面,源代码分析器623、可靠类型标识器624和框架库更新器625中的一个或多个可以由服务器设备602采用。服务器设备602可以通过网络612向客户端计算设备提供数据以及从客户端计算设备提供数据,客户端计算设备诸如是个人计算机604、平板计算设备606和/或移动计算设备608(例如,智能电话)。通过示例,上述计算机系统可以被体现在个人计算机604、平板计算设备606和/或移动计算设备608(例如,智能电话)中。除了接收可用于在图形发起系统处进行预处理或在接收计算系统处进行后处理的图形数据之外,计算设备的这些方面中的任何方面还可以从存储库616获得内容。内容存储可以包括可重加载类型数据618。
图6示出了可以执行本文公开的一个或多个方面的示例性移动计算设备608。另外,本文描述的方面和功能可以在分布式系统(例如,基于云的计算系统)上操作,其中应用功能、存储器、数据存储和获取装置以及各种处理功能可以通过分布式计算网络(诸如互联网或内联网)彼此远程地操作。各种类型的用户接口和信息可以经由机载计算设备显示器或经由与一个或多个计算设备相关联的远程显示单元被显示。例如,各种类型的用户接口和信息可以在用户接口和各种类型的信息被投影在的墙面上被显示并与之交互。与利用其本发明的方面可以被实践的多个计算系统的交互包括击键输入、触摸屏输入、语音或其他音频输入、手势输入,其中相关联的计算设备被配备有捕获和解释用户手势以控制计算设备的功能等的检测(例如,相机)功能。
短语“至少一个”、“一个或多个”、“或”和“和/或”是开放式表达,在操作中既是合取的又是析取的。例如,表达“A、B和C中的至少一个”、“A、B或C中的至少一个”、“A、B和C中的一个或多个”、“A、B或C中的一个或多个”、“A、B和/或C”和“A、B或C”中的每个是指单独A、单独B、单独C、A和B一起、A和C一起、B和C一起,或A、B和C一起。
术语“一个(a)”或“一个(an)”实体指的是该实体中的一个或多个。因此,术语“一个(a)”(或“一个(an)”)、“一个或多个”和“至少一个”在本文中可以被互换使用。还应当注意的是,术语“包括(comprising)”、“包括(including)”和“具有”可以被互换使用。
如本文所使用的术语“自动”及其变体是指如下任何过程或操作:其通常是连续的或半连续的,在该过程或操作被执行时无需实质的人工输入即可完成。然而,即使过程或操作的执行使用实质或非实质的人工输入,如果输入在过程或操作的执行之前被接收,则过程或操作可以是自动的。如果人工输入影响过程或操作将如何被执行,则这样的输入被视为实质的。同意过程或操作的执行的人工输入不被视为“实质的”。
本文讨论的任何步骤、功能和操作可以连续且自动地被执行。
本公开的示例性系统和方法已经关于计算设备被描述。然而,为了避免不必要地模糊本公开,前面的描述省略了若干已知的结构和设备。该省略不应被解释为限制。具体细节被阐述以提供本公开的理解。然而,应当理解,本公开可以以超出本文阐述的具体细节的多种方式被实践。
此外,虽然本文所示的示例性方面示出了共置的系统的各个组件,但是系统的某些组件可以远程地位于分布式网络(诸如LAN和/或互联网)的遥远部分处,或者位于专用系统内。因此,应当理解,系统的组件可以被组合成一个或多个设备,诸如服务器、通信设备,或者共置在分布式网络(诸如模拟和/或数字电信网络、分组交换网络或电路交换网络)的特定节点上。从前面的描述将理解,并且出于计算效率的原因,系统的组件可以被布置在组件的分布式网络内的任何位置处,而不影响系统的操作。
此外,应当理解,连接元件的各种链路可以是有线或无线链路、或其任何组合,或者能够向和从所连接的元件提供和/或传送数据的任何其他已知或后来开发的(多个)元件。这些有线或无线链路也可以是安全链路并且可能能够传送加密信息。例如,用作链路的传输介质可以是用于电信号的任何合适的载体,包括同轴电缆、铜线和光纤,并且可以采用声波或光波的形式,诸如无线电波和红外数据通信期间生成的那些。
虽然流程图已经关于特定的事件序列被讨论和示出,但是应当理解,对该序列的改变、添加和省略可以发生,而不会实质上影响所公开的配置和方面的操作。
本公开的若干个变化和修改可以被使用。可以提供本公开的一些特征而不提供其他特征。
在又一配置中,本公开的系统和方法可以结合专用计算机、编程的微处理器或微控制器和(多个)外围集成电路元件、ASIC或其他集成电路、数字信号处理器、硬有线电子或逻辑电路(诸如分立元件电路)、可编程逻辑设备或门阵列(诸如PLD、PLA、FPGA、PAL)、专用计算机、任何类似部件等。一般而言,能够实现本文所示的方法的(多个)任何设备或部件都可以被使用以实现本公开的各个方面。可以被使用用于本公开的示例性硬件包括计算机、手持设备、电话(例如,蜂窝电话、支持互联网的电话、数字电话、模拟电话、混合电话等)以及本领域已知的其他硬件。这些设备中的一些包括处理器(例如,单个或多个微处理器)、存储器、非易失性存储装置、输入设备和输出设备。此外,包括但不限于分布式处理或组件/对象分布式处理、并行处理或虚拟机处理的备选软件实现也可以被构造来实现本文描述的方法。
在又一配置中,所公开的方法可以容易地结合使用对象或面向对象的软件开发环境的软件被实现,该软件开发环境提供可以在各种计算机或工作站平台上使用的便携式源代码。备选地,所公开的系统可以部分或全部以使用标准逻辑电路或VLSI设计的硬件被实现。是软件还是硬件被使用来实现根据本公开的系统取决于系统的速度和/或效率要求、特定功能以及所利用的特定软件或硬件系统或微处理器或微计算机系统。
在又一配置中,所公开的方法可以部分地以软件实现,该软件可以被存储在存储介质上、在控制器和存储器的协作下在编程的通用计算机、专用计算机、微处理器等上执行。在这些情况下,本公开的系统和方法可以被实现为嵌入在个人计算机上的程序,诸如小应用程序、或CGI脚本、作为驻留在服务器或计算机工作站上的资源、作为嵌入专用测量系统、系统组件中的例程等。该系统还可以通过将系统和/或方法物理地合并到软件和/或硬件系统中被实现。/>
如果描述的话,本公开不限于标准和协议。本文未提及的其他类似标准和协议是存在的并且被包括在本公开中。另外,本文提及的标准和协议以及本文未提及的其他类似标准和协议周期性地被具有基本相同功能的更快或更有效的等同物取代。具有相同功能的这样的替换标准和协议被认为是被包括在本公开中的等同物。
根据本公开的至少一个示例,一种用于实现在运行时对程序的源代码做出的改变的方法被提供。该方法可以包括在运行时环境中执行源代码,检测运行时环境中在运行时对源代码做出的改变,确定改变是否是对源代码中被标识为可重加载的类型做出,响应于改变是对源代码中被标识为可重加载的类型做出的确定,创建该类型的新版本,以及使用该类型的新版本在运行时执行对源代码的改变的实现。
根据上述方法的至少一个方面,该方法可以包括其中在运行时环境中执行源代码包括:获得源代码,在集成开发环境(IDE)中加载源代码,以及在由IDE部署的运行环境中执行源代码。
根据上述方法的至少一个方面,该方法还可以包括:响应于改变不是对源代码中被标识为可重加载的类型做出的确定,原位更新类型。
根据上述方法的至少一个方面,该方法可以包括其中使用类型的新版本在运行时执行对源代码的改变的实现还包括:将源代码中该类型的先前版本的运行时表示和一个或多个已有实例替换为该类型的新版本。
根据上述方法的至少一个方面,该方法可以包括其中使用类型的新版本在运行时执行对源代码的改变的实现还包括:向被用于构造源代码的框架通知该类型的新版本已经被创建,以及将状态从源代码中该类型的先前版本的一个或多个已有实例迁移到新版本。
根据上述方法的至少一个方面,该方法还可以包括:在运行时环境中继续执行具有该改变的更新的源代码。
根据上述方法的至少一个方面,该方法可以包括其中确定改变是否对源代码中被标识为可重加载的类型做出还包括:基于与被用于构造源代码的框架相关联的框架库来确定改变是否是对源代码中被标识为可重加载的类型做出,其中框架库包括被标记为可重加载的预定义类型的列表。
根据本公开的至少一个示例,一种用于实现在运行时对程序的源代码做出的改变的计算设备被提供。该计算设备可以包括处理器和其上存储有多个指令的存储器,该多个指令在由处理器执行时使计算设备:在运行时环境中执行源代码,检测运行时环境中在运行时对源代码做出的改变,确定改变是否是对源代码中被标识为可重加载的类型做出,响应于改变是对源代码中被标识为可重加载的类型做出的确定,创建该类型的新版本,以及使用该类型的新版本在运行时执行对源代码的改变的实现。
根据上述计算设备的至少一个方面,计算设备可以包括其中在运行时环境中执行源代码包括:获得源代码,在集成开发环境(IDE)中加载源代码,以及在由IDE部署的运行环境中执行源代码。
根据上述计算设备的至少一个方面,计算设备还可以被配置为响应于改变不是对源代码中被标识为可重加载的类型做出的确定,原位更新类型。
根据上述计算设备的至少一个方面,计算设备可以包括其中使用类型的新版本在运行时执行对源代码的改变的实现包括:将源代码中该类型的先前版本的运行时表示和一个或多个已有实例替换为该类型的新版本。
根据上述计算设备的至少一个方面,计算设备可以包括其中使用类型的新版本在运行时执行对源代码的改变的实现包括:向被用于构造源代码的框架通知该类型的新版本已经被创建,以及将状态从源代码中该类型的先前版本的一个或多个已有实例迁移到新版本。
根据上述计算设备的至少一个方面,计算设备还可以被配置为在运行时环境中继续执行具有该改变的更新的源代码。
根据上述计算设备的至少一个方面,计算设备可以包括其中确定改变是否是对源代码中被标识为可重加载的类型做出还包括:基于与被用于构造源代码的框架相关联的框架库来确定改变是否是对源代码中被标识为可重加载的类型做出,其中框架库包括被标记为可重加载的预定义类型的列表。
根据本公开的至少一个示例,一种存储用于实现在运行时对程序的源代码做出的改变的指令的非暂态计算机可读介质被提供。该指令在由计算设备的一个或多个处理器执行时使计算设备在运行时环境中执行源代码,检测在运行时环境中运行时对源代码做出的改变,确定改变是否是对源代码中被标识为可重加载的类型做出,响应于改变是对源代码中被标识为可重加载的类型做出的确定,创建该类型的新版本,以及使用该类型的新版本在运行时执行对源代码的改变的实现。
根据上述非暂态计算机可读介质的至少一个方面,该指令在由计算设备的一个或多个处理器执行时可以包括其中在运行时环境中执行源代码包括:获得源代码,在集成开发环境(IDE)中加载源代码,以及在由IDE部署的运行环境中执行源代码。
根据上述非暂态计算机可读介质的至少一个方面,该指令在由一个或多个处理器执行时还可以使计算设备:响应于改变不是对源代码中被标识为可重加载的类型做出的确定,原位更新类型。
根据上述非暂态计算机可读介质的至少一个方面,该指令在由计算设备的一个或多个处理器执行时可以包括其中使用类型的新版本在运行时执行对源代码的改变的实现包括:将源代码中该类型的先前版本的运行时表示和一个或多个现有实例替换为该类型的新版本。
根据上述非暂态计算机可读介质的至少一个方面,该指令在由计算设备的一个或多个处理器执行时可以包括其中使用类型的新版本在运行时执行对源代码的改变的实现包括:向被用于构造源代码的框架通知该类型的新版本已经被创建,以及将状态从源代码中该类型的先前版本的一个或多个已有实例迁移到新版本。
根据上述非暂态计算机可读介质的至少一方面,指令当由一个或多个处理器执行时还可以使计算设备在运行时环境中继续执行具有该改变的更新的源代码。
在各种配置和方面中,本公开包括基本上如本文所描绘和描述的组件、方法、过程、系统和/或装置,包括各种组合、子组合和其子集。本领域技术人员在理解本公开之后将理解如何制作和使用本文公开的系统和方法。在各种配置和方面中,本公开包括在不存在本文中未描绘和/或描述的项目的情况下或在其各种配置或方面中提供的设备和过程,包括在不存在如可能已在先前的设备或过程中使用的这些项目的情况下,例如,用于提高性能、实现简易性和/或降低实现的成本。

Claims (15)

1.一种计算设备,用于实现在运行时对程序的源代码做出的改变,所述计算设备包括:
处理器;以及
存储器,其上存储有多个指令,所述多个指令在由所述处理器执行时使所述计算设备:
在运行时环境中执行所述源代码;
检测所述运行时环境中在运行时对所述源代码做出的改变;
确定所述改变是否是对所述源代码中被标识为可重加载的类型做出;
响应于所述改变是对所述源代码中被标识为可重加载的所述类型做出的确定,创建所述类型的新版本;以及
使用所述类型的所述新版本在运行时执行对所述源代码的所述改变的实现。
2.根据权利要求1所述的计算设备,其中在运行时环境中执行所述源代码包括:
获得所述源代码;
在集成开发环境(IDE)中加载所述源代码;以及
在由所述IDE部署的所述运行时环境中执行所述源代码。
3.根据权利要求1所述的计算设备,其中所述计算设备还被配置为:响应于所述改变不是对所述源代码中被标识为可重加载的类型做出的确定,原位更新所述类型;和/或在所述运行时环境中继续执行具有所述改变的更新的所述源代码。
4.根据权利要求1所述的计算设备,其中:
使用所述类型的所述新版本在运行时执行对所述源代码的所述改变的实现包括:将所述源代码中所述类型的先前版本的运行时表示和一个或多个已有实例替换为所述类型的所述新版本;和/或
确定所述改变是否是对所述源代码中被标识为可重加载的类型做出还包括:基于与被用于构造所述源代码的框架相关联的框架库来确定所述改变是否是对所述源代码中标识为可重加载的类型做出,其中所述框架库包括被标记为可重加载的预定义类型的列表。
5.根据权利要求1所述的计算设备,其中使用所述类型的所述新版本在运行时执行对所述源代码的所述改变的实现包括:
向被用于构造所述源代码的框架通知所述类型的所述新版本已经被创建;以及
将状态从所述源代码中所述类型的先前版本的一个或多个已有实例迁移到所述新版本。
6.一种非暂态计算机可读介质,存储用于实现在运行时对程序的源代码做出的改变的指令,所述指令在由计算设备的一个或多个处理器执行时使所述计算设备:
在运行时环境中执行所述源代码;
检测所述运行时环境中在运行时对所述源代码做出的改变;
确定所述改变是否是对所述源代码中被标识为可重加载的类型做出;
响应于所述改变是对所述源代码中被标识为可重加载的所述类型做出的确定,创建所述类型的新版本;以及
使用所述类型的所述新版本在运行时执行对所述源代码的所述改变的实现。
7.根据权利要求6所述的非暂态计算机可读介质,其中在运行时环境中执行所述源代码包括:
获得所述源代码;
在集成开发环境(IDE)中加载所述源代码;以及
在由所述IDE部署的所述运行时环境中执行所述源代码。
8.根据权利要求6所述的非暂态计算机可读介质,其中使用所述类型的所述新版本在运行时执行对所述源代码的所述改变的实现包括:将所述源代码中所述类型的先前版本的运行时表示和一个或多个已有实例替换为所述类型的所述新版本。
9.根据权利要求6所述的非暂态计算机可读介质,其中使用所述类型的所述新版本在运行时执行对所述源代码的所述改变的实现包括:
向被用于构造所述源代码的框架通知所述类型的所述新版本已经被创建;以及
将状态从所述源代码中所述类型的先前版本的一个或多个已有实例迁移到所述新版本。
10.一种用于实现在运行时对程序的源代码做出的改变的方法,所述方法包括:
在运行时环境中执行所述源代码;
检测所述运行时环境中在运行时对所述源代码做出的改变;
确定所述改变是否是对所述源代码中被标识为可重加载的类型做出;
响应于确定所述改变是对所述源代码中被标识为可重加载的所述类型做出,创建所述类型的新版本;以及
使用所述类型的所述新版本在运行时执行对所述源代码的所述改变的实现。
11.根据权利要求10所述的方法,其中在运行时环境中执行所述源代码包括:
获得所述源代码;
在集成开发环境(IDE)中加载所述源代码;以及
在由所述IDE部署的所述运行时环境中执行所述源代码。
12.根据权利要求10所述的方法,还包括:响应于确定所述改变不是对所述源代码中被标识为可重加载的类型做出,原位更新所述类型;和/或再所述运行时环境中继续执行具有所述改变的更新的所述源代码。
13.根据权利要求10所述的方法,其中:
使用所述类型的所述新版本在运行时执行对所述源代码的所述改变的实现还包括:将所述源代码中所述类型的先前版本的运行时表示和一个或多个已有实例替换为所述类型的所述新版本。
14.根据权利要求10所述的方法,其中使用所述类型的所述新版本在运行时执行对所述源代码的所述改变的实现还包括:
向被用于构造所述源代码的框架通知所述类型的所述新版本已经被创建;以及
将状态从所述源代码中所述类型的先前版本的一个或多个已有实例迁移到所述新版本。
15.根据权利要求10所述的方法,其中确定所述改变是否是对所述源代码中被标识为可重加载的类型做出还包括:基于与被用于构造所述源代码的框架相关联的框架库来确定所述改变是否是对所述源代码中被标识为可重加载的类型做出,其中所述框架库包括被标记为可重加载的预定义类型的列表。
CN202280048728.4A 2021-07-12 2022-06-29 在运行时实现对能可加载类型的源代码做出的改变 Pending CN117693735A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/373,391 US11755313B2 (en) 2021-07-12 2021-07-12 Implementing changes made to source code of reloadable types at runtime
US17/373,391 2021-07-12
PCT/US2022/035398 WO2023287574A1 (en) 2021-07-12 2022-06-29 Implementing changes made to source code of reloadable types at runtime

Publications (1)

Publication Number Publication Date
CN117693735A true CN117693735A (zh) 2024-03-12

Family

ID=82701838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280048728.4A Pending CN117693735A (zh) 2021-07-12 2022-06-29 在运行时实现对能可加载类型的源代码做出的改变

Country Status (9)

Country Link
US (2) US11755313B2 (zh)
EP (1) EP4371005A1 (zh)
KR (1) KR20240027006A (zh)
CN (1) CN117693735A (zh)
AU (1) AU2022309460A1 (zh)
BR (1) BR112023026701A2 (zh)
CA (1) CA3222821A1 (zh)
IL (1) IL309746A (zh)
WO (1) WO2023287574A1 (zh)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612930B2 (en) * 2009-01-30 2013-12-17 Oracle America, Inc. Methods and apparatus for dynamic class reloading and versioning
WO2011072970A1 (en) * 2009-12-18 2011-06-23 Syddansk Universitet Method, computer program product, and system for non-blocking dynamic update of statically typed class-based object-oriented software
US9817656B2 (en) * 2012-08-24 2017-11-14 Ca, Inc. Hot rollback of updated agent
US8997047B2 (en) * 2012-12-13 2015-03-31 International Business Machines Corporation Dynamically updating code without requiring processes to restart
CN104063258B (zh) * 2013-03-21 2017-05-03 国际商业机器公司 用于调试过程中的代码动态切换的方法和系统
US9411617B2 (en) * 2013-10-03 2016-08-09 ZeroTurnaround AS System and method for matching synthetically generated inner classes and methods
US10146522B1 (en) * 2015-03-10 2018-12-04 Twitter, Inc. Live code updates
US10230786B2 (en) * 2016-02-26 2019-03-12 Red Hat, Inc. Hot deployment in a distributed cluster system
US11392364B2 (en) * 2020-09-28 2022-07-19 Red Hat, Inc. Adaptive hot reload for class changes
US11347523B2 (en) * 2020-11-05 2022-05-31 International Business Machines Corporation Updated shared library reloading without stopping the execution of an application
US11409508B1 (en) * 2021-06-25 2022-08-09 Microsoft Technology Licensing, Llc Reload ordering for executable code modules

Also Published As

Publication number Publication date
BR112023026701A2 (pt) 2024-03-12
US11755313B2 (en) 2023-09-12
EP4371005A1 (en) 2024-05-22
US20230385053A1 (en) 2023-11-30
CA3222821A1 (en) 2023-01-19
US20230019235A1 (en) 2023-01-19
AU2022309460A1 (en) 2023-12-14
WO2023287574A1 (en) 2023-01-19
IL309746A (en) 2024-02-01
KR20240027006A (ko) 2024-02-29

Similar Documents

Publication Publication Date Title
US10445216B2 (en) Debugging program code at instruction level through emulation
US9760346B2 (en) Deeply parallel source code compilation
US10827036B2 (en) Version control machine
CN110168496B (zh) 用于应用呈现的方法和系统
US20170185573A1 (en) Memory conserving versioning of an electronic document
US20140359593A1 (en) Maintaining known dependencies for updates
US20140365918A1 (en) Incorporating external dynamic content into a whiteboard
KR102193404B1 (ko) 상호작용 개발 환경으로부터의 소프트웨어 아티팩트의 점진적 컴파일링 기법
US10229030B2 (en) Adaptive rendering based on runtime capability check
US20210232640A1 (en) Contact creation and utilization
CN113557499A (zh) 动态监控基于云的应用服务
CN112506854A (zh) 页面模板文件的存储和页面生成方法、装置、设备及介质
US20180121293A1 (en) Code base synchronization between source control systems
CN111858339B (zh) 内存分析方法、设备和系统以及计算设备、计算机可读存储介质
US20180150286A1 (en) Cross-machine build scheduling system
US10394768B2 (en) Selective data migration on schema breaking changes
CN109952557B (zh) 分层内容选择
US11755313B2 (en) Implementing changes made to source code of reloadable types at runtime
US11250074B2 (en) Auto-generation of key-value clusters to classify implicit app queries and increase coverage for existing classified queries
US20230393861A1 (en) Using interchangeable non-compute resources for cloud-based applications
US20230359458A1 (en) Machine learning model management and software development integration

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination