The SyclProgram class is really very specific to Numba and does not really belong under dpctl. Although, having the ability create a kernel from source like CuPy can be useful. For now, let us move it out of sycl_core.pyx and directly inside dpctl into a sub-module called dpctl.program module.