PITTSBURGH, Nov. 3, 2016 /PRNewswire/ -- A revolutionary and emerging class of energy-harvesting computer systems require neither a battery nor a power outlet to operate, instead operating by harvesting energy from their environment. While radio waves, solar energy, heat, and vibrations have the ability to power devices, harvested energy sources are weak, leading to an "intermittent execution," with periodic power failures and unreliable behavior.
Brandon Lucia, an assistant professor of electrical and computer engineering at Carnegie Mellon University, and his Ph.D. student Alexei Colin created the first programming language designed to build reliable software for intermittent, energy-harvesting computers. Colin will present the work at the 2016 SPLASH conference in Amsterdam, Netherlands, on November 3rd. "Energy is not always available in the environment for a device to harvest," explains Lucia. "Intermittent operation makes it difficult to build applications because existing software programming languages—and programmers themselves—assume that energy is a continuously available resource." The innovative new programming language, called Chain, asks an application developer to define a set of computational tasks that compute and exchange data through a novel way of manipulating the computer's memory, called a channel. Chain guarantees that tasks execute correctly despite arbitrary power failures. "When power is not continuously available, power failures disrupt the software's execution, often leading to unrecoverable errors," says Lucia. "Chain solves this problem by requiring computational tasks in the program to use a novel channel-based memory abstraction that ensures tasks complete without error."